我想使用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/