Используя 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 для каждого изображения в пакете

0 ответов

Другие вопросы по тегам