TensorFlow - 3D 张量,从 2D 张量收集每 N 个张量并步幅为 1
TensorFlow - 3D tensor that gathers every Nth tensor from 2D tensor and strides 1
假设我在 [M, 1]
中有一个 2D-Tensor
T
例如
T = tf.expand_dims([A1,
B1,
C1,
A2,
B2,
C2], 1)
我想像这样重塑它:
T_reshp = [[[A1], [A2]]
[[B1], [B2]]
[[C1], [C2]]]
我提前知道了M
和N
(每组张量的个数)。此外,让 t_reshp.shape[0] = M/N = P
在我尝试使用 tf.reshape
T_reshp = tf.reshape(T, [P, N, 1])
然而,我最终得到:
T_reshp = [[[A1], [B1]]
[[C1], [A2]]
[[B2], [C2]]]
我可以使用一些切片或整形操作来做到这一点吗?
您可以先将其重塑为尺寸 [N,P,1]
,然后 transpose
第一和第二轴:
tf.transpose(tf.reshape(T, [N, P, 1]), [1,0,2])
# ^^^^ switch the two dimensions here and then transpose
示例:
T = tf.expand_dims([1,2,3,4,5,6], 1)
sess = tf.Session()
T1 = tf.transpose(tf.reshape(T, [2,3,1]), [1,0,2])
sess.run(T1)
#array([[[1],
# [4]],
# [[2],
# [5]],
# [[3],
# [6]]], dtype=int32)
假设我在 [M, 1]
中有一个 2D-Tensor
T
例如
T = tf.expand_dims([A1,
B1,
C1,
A2,
B2,
C2], 1)
我想像这样重塑它:
T_reshp = [[[A1], [A2]]
[[B1], [B2]]
[[C1], [C2]]]
我提前知道了M
和N
(每组张量的个数)。此外,让 t_reshp.shape[0] = M/N = P
在我尝试使用 tf.reshape
T_reshp = tf.reshape(T, [P, N, 1])
然而,我最终得到:
T_reshp = [[[A1], [B1]]
[[C1], [A2]]
[[B2], [C2]]]
我可以使用一些切片或整形操作来做到这一点吗?
您可以先将其重塑为尺寸 [N,P,1]
,然后 transpose
第一和第二轴:
tf.transpose(tf.reshape(T, [N, P, 1]), [1,0,2])
# ^^^^ switch the two dimensions here and then transpose
示例:
T = tf.expand_dims([1,2,3,4,5,6], 1)
sess = tf.Session()
T1 = tf.transpose(tf.reshape(T, [2,3,1]), [1,0,2])
sess.run(T1)
#array([[[1],
# [4]],
# [[2],
# [5]],
# [[3],
# [6]]], dtype=int32)