在 Keras 中创建自定义指标,用于序列到序列学习



我想用 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(。

相关内容

  • 没有找到相关文章

最新更新