【问题标题】:Do keras loss have to output one scalar per batch or one scalar for the whole batch ?keras loss 必须每批输出一个标量还是整批输出一个标量?
【发布时间】:2019-02-05 02:48:49
【问题描述】:

我在related question 中读到,keras 自定义损失函数必须为每个批次项目返回一个标量。

我写了一个损失函数,它为整个批次输出一个标量,并且网络似乎收敛了。但是,我无法找到有关此的任何文档或代码中究竟发生了什么。有没有在某处进行广播?如果我添加样本权重会发生什么?有人知道魔法发生的地方吗?

谢谢!

【问题讨论】:

  • 将有助于分析以查看您的模型代码:-)

标签: python tensorflow neural-network keras loss-function


【解决方案1】:

通常,您可以经常使用标量代替向量,这将被解释为填充了该值的向量(例如 1 被解释为 1,1,1,1 )。 因此,如果您对批次的损失函数的结果是 x,则它被解释为好像您说批次中每个项目的损失都是 x。

【讨论】:

  • 这是我的猜测,但我正在寻找可能发生这种情况的确切代码行以进行确认
  • Keras(或 tensorflow)实现中的确切行,在哪里实现广播?
  • 看看:github.com/keras-team/keras/blob/…,这里就是计算总损失的地方。
猜你喜欢
  • 2017-08-11
  • 2017-09-23
  • 2021-06-24
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 2015-03-08
  • 2013-05-04
相关资源
最近更新 更多