我有一个n维张量。我想根据第一个轴和给定的顺序更改元素的顺序。例如(1、0、2、4、3、5)应该给我这个矩阵的结果:
[1, 0, 0, 0, 0] [0, 1, 0, 0, 0]
[0, 1, 0, 0, 0] [1, 0, 0, 0, 0]
[0, 0, 1, 0, 0] ==> [0, 0, 1, 0, 0]
[0, 0, 0, 1, 0] [0, 0, 0, 0, 1]
[0, 0, 0, 0, 1] [0, 0, 0, 1, 0]
[0, 0, 0, 0, 1] [0, 0, 0, 0, 1]
顺序对我来说很重要,因为我有一些张量,并且我希望所有张量都以相同的顺序重新排序。我该如何实现?
答案 0 :(得分:2)
您应该使用tf.gather
:
with tf.Session() as sess:
data = [[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1],
[0, 0, 0, 0, 1]]
idx = [1, 0, 2, 4, 3, 5]
result = tf.gather(data, idx)
print(sess.run(result))
输出:
[[0 1 0 0 0]
[1 0 0 0 0]
[0 0 1 0 0]
[0 0 0 0 1]
[0 0 0 1 0]
[0 0 0 0 1]]