有些原因导致我在尝试指定Keras模型的f1得分时会收到错误消息:
model.compile(optimizer='adam', loss='mse', metrics=['accuracy', 'f1_score'])
我遇到了这个错误:
ValueError: Unknown metric function:f1_score
在我使用'model.compile'的同一文件中提供了'f1_score'函数,代码如下:
在提供了'f1_score'函数后,我可以这样使用:
def f1_score(y_true, y_pred):
# Count positive samples.
c1 = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
c2 = K.sum(K.round(K.clip(y_pred, 0, 1)))
c3 = K.sum(K.round(K.clip(y_true, 0, 1)))
# If there are no true samples, fix the F1 score at 0.
if c3 == 0:
return 0
# How many selected items are relevant?
precision = c1 / c2
# How many relevant items are selected?
recall = c1 / c3
# Calculate f1_score
f1_score = 2 * (precision * recall) / (precision + recall)
return f1_score
model.compile(optimizer='adam', loss='mse', metrics=['accuracy', f1_score])
模型编译正确,可以保存到文件中:
model.save(model_path) # works ok
然而,将它加载到另一个程序中:
from keras import models
model = models.load_model(model_path)
执行时出现错误:
ValueError: Unknown metric function:f1_score
这次在同一文件中指定“f1_score”并没有帮助,Keras看不到它。出了什么问题?如何在Keras模型中使用F1得分?
K
是什么? - PythonNut