更改第一轴张量流中元素的顺序

Sia*_*ash 4 python tensorflow

我有一个 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]
Run Code Online (Sandbox Code Playgroud)

该顺序对我来说很重要,因为我有一些张量,并且我希望所有张量都以相同的顺序重新排序。我怎样才能实现这个目标?

jde*_*esa 6

你应该使用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))
Run Code Online (Sandbox Code Playgroud)

输出:

[[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]]
Run Code Online (Sandbox Code Playgroud)