获得个人训练样本的损失

时间:2018-02-06 03:44:29

标签: keras

我正在使用带有TensorFlow后端的Keras,我想记录每个训练样本在反向传播期间计算的各个损失。这可以通过使用损失函数计算每个损失到终端来完成。

但是从我所看到的,使用Keras API无法做到这一点。因此,我的解决方案是覆盖其中一个Keras损失函数,例如:

def mean_squared_error(y_true, y_pred):
    loss = K.mean(K.square(y_pred - y_true), axis=-1)
    print('Loss = ' + str(loss))
    return loss

这个编译好了;但是,我的终端没有打印任何内容。

有关为什么没有打印任何内容的任何建议,或者更好的解决方案可能是什么?

1 个答案:

答案 0 :(得分:3)

您可以使用keras.backend.print_tensor,这只是一个身份转换,具有打印张量值的副作用,以及可选的消息。对于您的示例,您可以尝试:

import keras.backend as K

def mean_squared_error(y_true, y_pred):
    loss = K.mean(K.square(y_pred - y_true), axis=-1)
    return K.print_tensor(loss, message='Loss: ')

有关其他示例,请参阅JSFiddle Firebug Lite Minimized Window Modedocumentation for print_tensor