Python Tensorflow中的拉链和整形

Python Tensorflow中的拉链和整形,python,tensorflow,Python,Tensorflow,问题: 假设我有两个张量,a和b。它们都有相同的形状:[?,104096] 如何压缩这两个元素,使生成的张量的形状为[?,20,4096],但也,使得a的第I个元素正好位于b的第I个元素之前 列表示例: a = [1, 3, 5] b = [2, 4, 6] 现在我想要一个看起来像[1,2,3,4,5,6]和的张量,而不是[1,3,5,2,4,6],如果我tf.stack这两者,然后使用tf.reformate,对吗 或者一个更一般的问题是,你怎么知道张量的顺序是什么 首先看起来像是,堆叠然后

问题:

假设我有两个张量,
a
b
。它们都有相同的形状:
[?,104096]

如何压缩这两个元素,使生成的张量的形状为[?,20,4096],但也,使得
a
的第I个元素正好位于
b
的第I个元素之前

列表示例:

a = [1, 3, 5]
b = [2, 4, 6]
现在我想要一个看起来像
[1,2,3,4,5,6]
的张量,而不是
[1,3,5,2,4,6]
,如果我
tf.stack
这两者,然后使用
tf.reformate
,对吗


或者一个更一般的问题是,你怎么知道张量的顺序是什么

首先看起来像是,堆叠然后重塑完成工作:

import tensorflow as tf
a = tf.constant([1, 3, 5])
b = tf.constant([2, 4, 6])
c = tf.stack([a, b], axis = 1)
d = tf.reshape(c, (-1,)) 
with tf.Session() as sess:    
     print(sess.run(c))  # [[1 2],[3 4],[5 6]]
     print(sess.run(d))  # [1 2 3 4 5 6]
要回答您的第二个问题,TensorFlow
Reformate
操作使用与
numpy
默认顺序相同的顺序,即a.k.a
C
顺序,引用自:

使用此索引顺序读取数组中的元素,并使用此索引顺序将元素放入经过整形的数组中。”C’表示使用类似C的索引顺序读/写元素,最后一个轴索引变化最快,返回到第一个轴索引变化最慢

import numpy as np
a = np.array([1, 3, 5])
b = np.array([2, 4, 6])
c = np.stack([a, b], axis=1)
c.reshape((-1,), order='C')  # array([1, 2, 3, 4, 5, 6])