我想使用CNN输出的直方图来计算损失。我想知道tf.histogram_fixed_width()
是否支持渐变回流到它以前的层。只有它可以工作,我可以在计算直方图后添加一个损耗图层。
答案 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.RegisterGradient
或 tf.custom_gradient
之类的东西来定义您自己的操作梯度。