我想在 tensorflow 中定义一个基于直方图的损失函数,但这需要直方图函数支持梯度,但事实并非如此。例如,使用 tf.histogram_fixed_width 我得到一个错误“没有为任何变量提供梯度,检查你的图表是否有不支持梯度的操作”。 因此,我正在寻找一种解决方法或替代函数来计算支持梯度的 tensorflow 中的直方图。
最佳答案
损失函数的形式必须是 f(x, [y, ...])->R。它必须产生一个单一的实数并且必须是可微的(对于每个 R 都必须存在朝向更好解决方案的方向感)。直方图接受你的输入,但产生一个数据结构作为输出,它们是不可微分的。您可以尝试用自己的话来定义“更好”或“好”的直方图应该是什么样子。如果您有一个形状,可以用理想直方图来描述它,并使用 KL-散度作为理想直方图和实际直方图之间的损失函数。
关于tensorflow - 基于直方图定义 TF 中的损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56508036/