Тензорная проекция в функции потерь? - PullRequest
0 голосов
/ 06 сентября 2018

Я хотел бы использовать эту функцию в функции потери 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 голосов
/ 06 сентября 2018

Это общая проблема при использовании tf.clip()

РЕШЕНИЕ: используйте биективную функцию от R до [0, W], например: vector = W * (vector / (2*tf.reduce_max(tf.abs(vector)))+0.5), для которой можно рассчитать градиент ...

...