问题:
我们说我有两个张量,a
和b
。两者都具有相同的形状:[?, 10, 4096]
。
如何以这样的方式拉伸两者:结果张量的形状为[?,20,4096],但,以便 ith 元素a
位于b
的 ith 元素之前。
列表示例:
a = [1, 3, 5]
b = [2, 4, 6]
现在我想要一个看起来像[1, 2, 3, 4, 5, 6]
和而不是 [1, 3, 5, 2, 4, 6]
的张量,如果我tf.stack
两个然后会发生这种情况会发生什么使用tf.reshape
,对吗?
或者也许是一个更普遍的问题,你怎么知道tf.reshape
重塑张量的顺序是什么?
答案 0 :(得分:1)
首先看起来,堆叠然后重塑完成工作:
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 reshape
操作使用与numpy
默认订单相同的订单,a.k.a C
订单,引自here:
使用此索引顺序读取a的元素,并使用此索引顺序将元素放入重新整形的数组中。 '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])