我们如何在TensorFlow中替换n-D Tensor中的单个元素?

时间:2016-02-08 23:22:53

标签: tensorflow

如果我们有1-D Tensor,我们可以使用tf.scatter_update或通过解包,替换,打包来替换单个元素和0-D Tensor。

示例:

# Pretend x came from somewhere useful.
x = tf.Variable(0)
A = tf.Variable([1, 2, 3])
# Replace the 2 with whatever's in x
A = tf.scatter_update(A, 1, x)

A现在会生成[1, 0, 3]

是否可以使用n-D阵列进行此操作?

示例:

# Pretend x came from somewhere useful.
x = tf.Variable(0, dtype=tf.float32)
A = tf.Variable(np.random.rand(3, 3, 3, 3))
# What's the equivalent of A[1, 1, 1, 1] = x ?

我认为我可以通过tf.unpacktf.scatter_updatetf.pack的混合获得所需的结果,但它很冗长,而且我们会替换(可能很大的)3-D Tensor而不是仅仅替换微小的0-D Tensor。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

如果你想有效地做到这一点,我相信你需要写一个新的Op或概括scatter_update。