Tensorflow:按特定顺序在张量(shape = [batchsize,2])中从张量(shape = [batchsize])重塑和交换元素

时间:2018-07-02 12:55:25

标签: python tensorflow reshape swap

我有一个张量(shape = [batchsize])。我想按特定顺序将张量整形为shape = [-1,2]。我想要指定顺序:

  1. 位于[0,0]的元素
  2. 位于[1,1]的元素
  3. [0,1]处的元素
  4. 元素位于[1,0]
  5. [2,0]处的元素
  6. [3,1]处的元素
  7. [2,1]处的元素
  8. [3,0]处的元素,依此类推,未知批量大小。

这是张量范围=(0到输入= 8)的示例代码。

ls . | grep 'ab\?c' 

现在我的输出是:

import tensorflow as tf
import numpy as np

batchsize = tf.placeholder(shape=[], dtype=tf.int32)
x = tf.range(0, batchsize, 1) 
x = tf.reshape(x, shape=[2, -1])
y = tf.transpose(x)
z = tf.reshape(y, shape=[-1, 2])

input = 8
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    msg = sess.run([z], feed_dict={batchsize: input})
    print(msg)

但我希望输出为:

[array([[0, 4],
       [1, 5],
       [2, 6],
       [3, 7]], dtype=int32)]

通常:重要的是,仅查看从4x1块到2x2块的转换,输入张量的前2个元素在一个对角线上,其余2个元素在对角线上在柜台对角线上。

请记住,我不知道批次大小有多大,出于示例原因,我只设置了 input = 8 。在我的真实代码中,张量“ x”不是范围数组,而是复杂的随机数,因此您无法以任何方式进行排序。价值。我只是出于演示目的编写了此代码。

这个问题与此question有关,但顺序不同或与此question相关,在使用转置进行普通整形后,仅交换了第二行的元素。

0 个答案:

没有答案