为什么我的keras自定义指标不起作用?

时间:2017-05-04 10:41:06

标签: keras metrics loss

为什么这段代码适用于损失函数但是在使用" ValueError进行一次迭代后指标失败:操作数无法与形状(32,)(24,)(32,)和#34一起广播;

如果我使用" categorical_crossentropy"在引号然后它的工作原理。我的自定义指标看起来与keras.losses中的指标相同。

import keras.backend as K
def categorical_crossentropy(y_true, y_pred):
    return K.categorical_crossentropy(y_pred, y_true)

fc.compile(optimizer=Adam(.01), loss=categorical_crossentropy, metrics=[categorical_crossentropy])
fc.fit(xtrain, ytrain, validation_data=(xvalid, yvalid), verbose=0,
       callbacks=[TQDMNotebookCallback(leave_inner=True, leave_outer=True)],
       nb_epoch=2)

1 个答案:

答案 0 :(得分:0)

如果我从keras.metrics导入categorical_crossentropy,它会起作用;而不是导入K.仍然不知道为什么上述不起作用,但至少这是一个解决方案。

此外,看起来损失函数在metrics参数中是不必要的,因为它会自动计算并显示用于训练和验证。