tf.histogram_fixed_width()是否支持反向传播?

时间:2017-09-24 20:42:09

标签: python tensorflow

我想使用CNN输出的直方图来计算损失。我想知道tf.histogram_fixed_width()是否支持渐变回流到它以前的层。只有它可以工作,我可以在计算直方图后添加一个损耗图层。

2 个答案:

答案 0 :(得分:0)

tf.histogram_fixed_width()不支持自动渐变功能,因为直方图不是连续微分函数。您可以查看以下示例,该示例返回渐变无。

import keras.backend as K
import tensorflow as tf

value_range = [0.0, 5.0]
a = np.array([-1.0, 0.0, 1.5, 2.0, 5.0, 15])

x = K.variable(a)
hist = tf.histogram_fixed_width(x, value_range, nbins=5, dtype=tf.float32)
gradient = K.gradients(hist, x)

# output is [None]

答案 1 :(得分:0)

我遇到了类似的问题。有两种方法可以尝试: 1. 在输出层之后,添加一个额外的层来生成直方图; 2. 使用 tf.RegisterGradienttf.custom_gradient 之类的东西来定义您自己的操作梯度。