keras模型评估
keras能用的模型评估不多,有的可能是这些评估在keras框架下不准确,如果要用,可以使用tensorflow或者sklearn中的评估模型。
tensorflow:
from tensorflow.python.estimator import training
result = training.train_and_evaluate(dnn_estimator, train_spec, eval_spec)
print(result[:10])
# ({'accuracy': 0.8025, 'accuracy_baseline': 0.5, 'auc': 0.89911944, 'auc_precision_recall': 0.8918648, 'average_loss': 0.40619093, 'label/mean': 0.5, 'loss': 51.85416, 'precision': 0.7941653, 'prediction/mean': 0.5040493, 'recall': 0.81666666, 'global_step': 92450}, [])
sklearn:
from sklearn import metrics
test_pred_prob_y = model.predict(test_x, batch_size=batch_size)
print(metrics.roc_auc_score(np.argmax(test_y, axis=1), np.argmax(test_pred_prob_y, axis=1)))
保存keras模型并重新导入,发现自己定义的损失函数/评估指标不能用?
1 加一个custom_objects
model = load_model('***.h5',custom_objects={'my_loss': my_loss, 'my_metrics':my_metrics})
def auc(y_true, y_pred):
auc = tf.metrics.auc(y_true, y_pred)[1]
backend.get_session().run(tf.local_variables_initializer())
return auc
model.save(model_file)
model = models.load_model(model_file, custom_objects={'auc': auc})
2 或者也可以把自定义的loss拷贝到keras.losses.py 源代码文件下
[Scikit-learn:模型评估Model evaluation]
from: -柚子皮-
ref: