Fáb*_*rez 24

对的,这是可能的.

按照文档中的说明定义自定义指标:

import keras.backend as K

def mean_pred(y_true, y_pred):
    return K.mean(y_pred)

model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy', mean_pred])
Run Code Online (Sandbox Code Playgroud)

要检查所有可用指标:

print(model.metrics_names)
> ['loss', 'acc', 'mean_pred']
Run Code Online (Sandbox Code Playgroud)

传递给度量名称ModelCheckpoint通过monitor.如果您想要在验证中计算的度量标准,请使用val_前缀.

ModelCheckpoint(weights.{epoch:02d}-{val_mean_pred:.2f}.hdf5,
                monitor='val_mean_pred',
                save_best_only=True,
                save_weights_only=True,
                mode='max',
                period=1)
Run Code Online (Sandbox Code Playgroud)

不要mode='auto'用于自定义指标.在这里了解原因.


我为什么回答自己的问题?检查一下.

  • 我明白为什么。当您构建自定义模型时,ModelCheckpoint 不知道值越高或越低越好,因此 mode='auto' 不好。就我而言,我定义了 F1 指标,因此我需要告诉 ModelCheckpoint val_f1 值越高越好,因此 mode='max'。 (2认同)