将值分配给张量流中的张量

时间:2017-04-12 18:09:20

标签: tensorflow

是否可以在tensorflow中执行这个numpy操作?

r[:,t,:] = x

在tensorflow中,我看到了一个名为scatter_nd的东西,但它似乎只适用于初始维度。例如,

r[t,:,:] = x

我相信可以写成:

scatter_nd(r, [[t]], x)

1 个答案:

答案 0 :(得分:0)

我不认为使用scatter_nd解决它很容易,因为很难形成更新。但是如果你像这样使用堆栈和unstack,这可能相对容易:

In [67]: embd = np.tile(np.expand_dims(np.arange(40).reshape([-1, 10]), axis=2), (1, 1, 4))
In [68]: embd_np = copy.copy(embd)
In [69]: embd_np[:, 2, :] = np.ones([4, 4])
In [70]: embd_tf = tf.stack([j if i != 2 else tf.ones([4, 4], dtype=tf.int64) for i, j in enumerate(tf.unstack(tf.constant(embd), axis=1))], 1).eval()
In [71]: embd_np == embd_tf