【发布时间】:2019-09-29 11:03:07
【问题描述】:
我正在尝试在 Keras 中实现损失函数,它可以执行以下操作:
假设 y0, y1, ..., yn 是模型 batch output 对于一个批输入 x0, x1, ..., xn,这里 batch_size 是 n+1,输出 yi 为每个 xi 是一个标量值,我希望损失函数计算该批次的 整体损失,如下所示:
K.log(K.sigmoid(y1-y0))+K.log(K.sigmoid(y2-y1))+...+K.log(K.sigmoid(yn-yn-1))
我正在考虑使用 Lambda 层首先将批量输出 [y0,y1,...,yn] 转换为 [y1-y0, y2-y1, ...,yn-yn-1],然后使用转换后的输出上的自定义损失函数。
但是,我不确定 Keras 是否能够理解 Lambda 层中没有要更新的权重,并且我不清楚 Keras 将如何通过 Lambda 层将梯度传播回,因为Keras 通常要求每个层/损失函数对单个样本输入进行操作,但我的层将获取一批样本的全部输出。以前有没有人解决过类似的问题?谢谢!
【问题讨论】:
标签: tensorflow keras