tf.scatter_add прекрасно работает для 1d (форма 1) тензоры:Как увеличить матричный элемент в тензорном потоке с помощью tf.scatter_add?
> S = tf.Variable(tf.constant([1,2,3,4]))
> sess.run(tf.initialize_all_variables())
> sess.run(tf.scatter_add(S, [0], [10]))
array([11, 2, 3, 4], dtype=int32)
> sess.run(tf.scatter_add(S, [0, 1], [10, 100]))
array([ 21, 102, 3, 4], dtype=int32)
Но как я могу увеличивать, скажем, [0,0] элемент
M = tf.Variable(tf.constant([[1,2], [3,4]]))
сделать это [[2, 2], [3, 4]] с использованием tf.scatter_add?
official documentation is kind'a загадочный. И я попробовал разные значения arg, скажем
> sess.run(tf.scatter_add(M, [[0, 0]], [1]))
*** ValueError: Shapes (1,) and (1, 2, 2) are not compatible
и не удалось.
Btw, в моем случае, M довольно большой и динамически изменяется. Таким образом, добавление нулевой единицы, равной 1 элементарной матрице, в M не соответствует действительности.