2017-04-12 155 views
2

张量流中可以做到这种numpy操作吗?将张量分配给张量流

r[:,t,:] = x 

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

r[t,:,:] = x 

我相信可以写为:

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

你真的想从头开始创建(初始化只有它的片)张量还是要更新现有的切片张量? – user1735003

+0

是否可以更新张量? – pkumar0

+0

您可以创建一个夹在两张旧张量之间的一片更新。 – user1735003

回答

0

我不认为它可以很容易使用scatter_nd因为它是非常难以形成更新来解决它。但是,如果你使用的堆栈和拆散这样这样可以比较容易:

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