我想使用Keras ModelCheckpoint回调来监视几个参数(我有一个多任务网络)。只需一个回调就可以吗?还是我需要在许多回调中做到这一点?

ckechpoint创建:



checkpointer = ModelCheckpoint(filepath='checkpoints/weights-{epoch:02d}.hdf5', monitor='val_O1_categorical_accuracy' , verbose=1, save_best_only=True, mode='max')


我要监视的第二个参数:val_O2_categorical_accuracy

在列表中执行此操作将不起作用。即



checkpointer = ModelCheckpoint(filepath='checkpoints/weights-{epoch:02d}.hdf5', monitor=['val_O1_categorical_accuracy','val_O2_categorical_accuracy'] , verbose=1, save_best_only=True, mode='max')



  TypeError:无法散列的类型:“列表”

最佳答案

恐怕您将不得不在单独的实例中执行此操作。想想这里发生了什么-

checkpointer = ModelCheckpoint(filepath='checkpoints/weights-{epoch:02d}.hdf5', monitor='val_O1_categorical_accuracy' , verbose=1, save_best_only=True, mode='max')


当您通过监视val_O1_categorical_accuracy保存模型时,将以伪代码执行以下操作-

for each epoch:
    check the val_O1_categorical_accuracy after updating weights
    if this metric is better in this epoch than the previous ones:
        save the model
    else
        pass


因此,实际上指定多个monitor是超出范围的。在这种情况下,它必须是一种选择,因为基于monitor度量标准,只有其他冲突模型中的一个模型才是最佳模型。

关于python - Keras ModelCheckpoint监视多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48971221/

10-12 21:52