Keras 获取单个训练样本的损失

Keras 获取单个训练样本的损失,keras,Keras,我将Keras与TensorFlow后端一起使用,我希望记录每个训练样本在反向传播期间计算的单个损失。这可以通过在使用损耗函数计算损耗时,将每个损耗打印到终端来实现 但据我所见,使用kerasapi无法做到这一点。因此,我的解决方案是覆盖其中一个Keras损失函数,例如: def mean_squared_error(y_true, y_pred): loss = K.mean(K.square(y_pred - y_true), axis=-1) print('Loss = '

我将Keras与TensorFlow后端一起使用,我希望记录每个训练样本在反向传播期间计算的单个损失。这可以通过在使用损耗函数计算损耗时,将每个损耗打印到终端来实现

但据我所见,使用kerasapi无法做到这一点。因此,我的解决方案是覆盖其中一个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
这个编译ok;但是,我的终端没有打印任何内容


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

您可以使用
keras.backend.print\u tensor
,这只是一种身份转换,其副作用是打印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: ')
有关另一个示例,请参见和