将置换量应用于张量的1D张量



我想制作以下节点:

a=tf.variable([2,0,1,4,3])      (a permutation)
b=tf.variable([11,12,13,14,15])

如何拥有

c="b[a]"=tf.variable([13,11,12,15,14])

我找到了另一种解决问题的方法,我认为这是一个很好的问题:( tf.gather

a = [2,0,1,4,3]
b = tf.constant([11,12,13,14,15])
c=tf.gather(b,a)
print(sess.run(c))

它给出了[12 13 11 14 15],所以这就是我想要的

对不起,但是张量没有permute功能。而且您无法迭代张量或变量中的元素。这是我最接近的:

a = [2,0,1,4,3]
b = tf.constant([11,12,13,14,15])
b_vecs = tf.unstack(b)
b_new = [b_vecs[index] for index in a]
c = tf.stack(b_new)

如果您的应用程序可以接受(伪)随机排列,则可以使用颠簸执行置换:

import python as np
arr=np.array([11,12,13,14,15])
np.random.shuffle(arr)
c=tf.Variable(arr)

最新更新