【发布时间】:2017-08-11 06:35:04
【问题描述】:
我正在 Keras 中编写一个自定义损失函数,但遇到了以下问题:
为什么 Keras 损失函数必须为每个批次项返回一个标量,而不是只返回一个标量?
我关心的是整个批次的累积损失,而不是每件商品的损失,不是吗?
【问题讨论】:
-
因为它更干净。批处理只是优化算法使用的抽象。他们构建了损失函数,使其对用户来说最直观。
-
@NassimBen 我实际上会声称完全相反。根据其定义,目标函数具有标量输出值,因此如果 Keras 这样做会更清晰。当然,批次只是一个抽象,但成本函数的重点是最小化所有训练示例的成本(无论“全部”是指 SGD 中的迷你批次,还是用于确定性梯度下降的整个训练集)同时。
-
我想我明白了:
fit()有一个参数sample_weight,您可以使用它为批次中的不同样本分配不同的权重。为了使其工作,您需要损失函数来返回每个批次项目的损失。 -
确实...它的方式更加灵活。我喜欢这样的