Python 如何使用tf.scatter\u add增加tensorflow中的矩阵元素?
tf.scatter_add适用于1d(形状)张量: 但我如何增加,比如说[0,0]元素Python 如何使用tf.scatter\u add增加tensorflow中的矩阵元素?,python,tensorflow,Python,Tensorflow,tf.scatter_add适用于1d(形状)张量: 但我如何增加,比如说[0,0]元素 M = tf.Variable(tf.constant([[1,2], [3,4]])) 使之成为[[2,2],[3,4]] 使用tf.scatter\u添加 这是一种“神秘的”。我尝试了不同的arg值 > sess.run(tf.scatter_add(M, [[0, 0]], [1])) *** ValueError: Shapes (1,) and (1, 2, 2) are not comp
M = tf.Variable(tf.constant([[1,2], [3,4]]))
使之成为[[2,2],[3,4]]
使用tf.scatter\u添加
这是一种“神秘的”。我尝试了不同的arg值
> sess.run(tf.scatter_add(M, [[0, 0]], [1]))
*** ValueError: Shapes (1,) and (1, 2, 2) are not compatible
而且还没有成功
顺便说一句,在我的例子中,M相当大,并且是动态调整大小的。
因此,向M添加0但1等于1的元素矩阵不是这种情况。
tf.scatter\u add
更新张量的切片,而不能更新单个系数。例如,它可以一次更新整个矩阵行
另外,的形状将
参数更新为tf。scatter\u add
取决于其索引
参数的形状。当ref
参数是具有形状(M,N)
的矩阵时,则
- 如果
是标量索引
,则i
应该是形状为更新
的向量(N)
- 如果
是具有形状索引
的向量(k)
,则[i1,i2,…ik]
应具有形状更新
(k,N)
[1,0]
添加到M
的第一行,如下所示,即可获得您想要的效果:
sess.run(tf.scatter_add(M, 0, [1, 0]))
array([[2, 2],
[3, 4]], dtype=int32)
sess.run(tf.scatter_add(M, 0, [1, 0]))
array([[2, 2],
[3, 4]], dtype=int32)