我想制作以下节点:
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)