我正在使用带有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
这个编译好了;但是,我的终端没有打印任何内容。
有关为什么没有打印任何内容的任何建议,或者更好的解决方案可能是什么?
答案 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: ')
有关其他示例,请参阅和documentation for print_tensor。