如何在张量中移动值

问题描述 投票:0回答:1

我有形状[batch_size,A]的张量T,其值和张量S的形状[batch_size]带有移位参数。

我想将T [b]中的值移位到右边的S [b]位置,应该删除T [b]的最后一个S [b]元素,并将新元素设置为0。

所以基本上想要做的事情如下:

for i in range(batch_size):
  T[i] = zeros[:S[i]] + T[i, :A-S[i]]

例:

For:
T = [[1, 2, 3], [4, 5, 6]]
S = [1, 2]

Return:
T' = [[0, 1, 2], [0, 0, 4]]

有一些简单的方法吗?

tensorflow
1个回答
0
投票

您可以使用tf.concat和tf.stack来实现此目的:

T_shift = tf.zeros((batch_size, A), tf.float32)
tmp = []

for i in xrange(batch_size):
    tmp.append(tf.concat([T_shift[i, :S[i, 0]],T[i, :17 - S[i,0]]], axis = 0))
T_shift = tf.stack(tmp)
© www.soinside.com 2019 - 2024. All rights reserved.