【发布时间】:2020-04-26 07:29:38
【问题描述】:
我有一个回归任务,正在使用欧几里得距离测量拟合度。我不想显示均方误差作为损失,而是显示平方和。也就是说,我想仅对平方误差项求和,不除以示例数。
在批处理级别上,我可以通过像这样定义自定义损失来实现这一点(也许我可以直接使用tf.keras.losses.MeanSquareError):
class CustomLoss(tf.keras.losses.Loss):
def call(self, Y_true, Y_pred):
return tf.reduce_sum(tf.math.abs(Y_true-Y_pred) ** 2, axis=-1)
target_loss=CustomLoss(reduction=tf.keras.losses.Reduction.SUM)
它将计算每个示例的平方误差,然后指示 TensorFlow 对示例求和以计算批量损失,而不是默认的 SUM_OVER_BATCH_SIZE(不应按字面意思阅读,而是作为分数,即 @987654324 @)。
我的问题是,在 epoch 级别上,Keras 获取这些总和,然后计算跨步(批次)的平均值以报告 epoch 的损失。 如何让 Keras 计算批次的总和而不是平均值?
【问题讨论】:
标签: python tensorflow keras deep-learning