keras自定义评价函数后load_model出错

评价函数和 损失函数 相似,只不过评价函数的结果不会用于训练过程中。

#自定义评价函数
def my_metrics(y_true, y_pred):
    predict = tf.reshape(y_pred, [-1, word_len, word_class])
    max_idx_p = tf.argmax(predict, 2)
    max_idx_l = tf.argmax(tf.reshape(y_true, [-1, word_len,word_class]), 2)
    correct_pred = tf.equal(max_idx_p, max_idx_l)
    _result = tf.map_fn(fn=lambda e: tf.reduce_all(e),elems=correct_pred,dtype=tf.bool)
    return tf.reduce_mean(tf.cast(_result, tf.float32))
	
#编译模型
model.compile(loss = 'categorical_crossentropy', optimizer=opt, metrics=['accuracy',my_metrics])

。。。。。


model.save("output/urp_captcha_model.h5")

load_model()报错

解决方法:

  1. 在load_model时添加custom_objects={‘my_metrics’: my_metrics}
model = load_model("output/urp_captcha_model.h5",custom_objects={'my_metrics': my_metrics})
  1. 保存权重(未测试)
model.save_weights('output/urp_captcha_model_weights.h5')


model.load_weights('output/urp_captcha_model_weights.h5')

参考链接:
评估标准 Metrics - Keras 中文文档
https://keras.io/zh/metrics/

Unknown metric error when loading a model trained with stateful metrics · Issue #10104 · keras-team/keras · GitHub
https://github.com/keras-team/keras/issues/10104

你可能感兴趣的:(keras自定义评价函数后load_model出错)