我想用 Keras(python(编写一个自定义指标,以便在训练时评估我的序列到序列模型的性能。序列是独热编码的,标记是单词而不是字符。我希望它只报告完全正确的序列数量(百分比也可以(。因此,如果它预测"猫坐在垫子上"而不是"猫坐在垫子上",那将是不正确的,不会被计算在内。
Keras(在我看来(编写自定义指标的文档有限(此处 https://keras.io/metrics/(。基本上,我想要的是这样的
import keras.backend as K
def num_correct(y_true, y_pred):
return K.sum(float(y_pred == y_true))
现在,Keras不喜欢这样。它说浮点没有属性形状。我知道y_true和y_pred是张量,但我不完全确定它想要返回什么。感谢帮助。
第一个y_pred == y_true
检查这两个值是否相等,如果值相等,则返回 true,否则返回 false。 但我认为您不希望从操作中返回单个布尔值==
。如果是这种情况,请将代码更改为
import keras.backend as K
def num_correct(y_true, y_pred):
equal = K.equal(y_pred,y_true)
return K.sum(K.cast(equal,K.floatx()))
其次,即使==
操作的返回值是张量,您也不能在张量上调用浮点函数。Keras 后端有很好的方法来做到这一点(K.cast
(。