损失函数中的Tensorflow投影?

时间:2018-09-06 10:48:58

标签: tensorflow tensorboard loss-function disparity-mapping

我想在Tensorflow损失函数中使用此函数:

def rectified_projection(self, disp_x, image):
    H, W, B = self.HEIGHT, self.WIDTH, self.batch_size
    disp_x = tf.cast(disp_x, tf.int32)
    disp_x = self.bias_x + disp_x
    disp = tf.concat([self.disp_y, disp_x], 3)
    disp = tf.clip_by_value(disp, 0, W)
    sdisp = tf.scatter_nd(disp, image, (B, H, W, 3), name="SCATTER")
    return sdisp

此代码将image的像素在行中移动从图层输出的disp_x的值。

问题是当我想通过这种转换来训练我的网络时。 Tensorflow输出不知道如何通过网络传播梯度。如何固定?

编辑:

完整的错误消息:

 ValueError: 
 No gradients provided for any variable, 
 check your graph for ops that do not support gradients, 
 between variables "last_layer" "loss_function"

1 个答案:

答案 0 :(得分:1)

使用tf.clip()

是一个常见问题

解决方案:使用从R到[0,W]的双射函数,如vector = W * (vector / (2*tf.reduce_max(tf.abs(vector)))+0.5),可以计算出梯度...