Используя tf.gradients, как получить градиенты относительно определенных мест?
Как взять градиенты необработанного балла класса относительно конкретных местоположений входного изображения (по всем каналам RGB)
with eval_graph.as_default():
images = tf.placeholder("float", [batch_size, 224, 224, 3])
labels = tf.placeholder(tf.float32, [batch_size, 1000])
locations = tf.placeholder(tf.int32, [batch_size, 3, 2])
vgg = vgg16.Vgg16( trainable=False )
vgg.build(images)
# target class.
y_c = tf.reduce_sum(tf.multiply(vgg.fc8, labels), axis=1)
print('y_c:', y_c)
input_layer_grad = tf.gradients(y_c, images)[0] # How to modify this for specific input locations using locations tensor?
Например, если я передам ниже массив в местах размещения -
[ [ 1, 3 ],
[ 2, 4 ],
[ 31, 40] ]
Мне нужна частная производная y_c по следующим
images[k][1][3][0]
images[k][1][3][1]
images[k][1][3][2]
images[k][2][4][0]
images[k][2][4][1]
images[k][2][4][2]
images[k][31][40][0]
images[k][31][40][1]
images[k][31][40][2]
где k для каждого изображения в пакете