我有一个形状为 (?, 1082)
的张量tensor
,我想在 for 循环中将此张量切成 n
个子部分,但我想保持原始形状,包括未知维度?
。
例:
lst = []
for n in range(15):
sub_tensor = tensor[n] # this will reduce the first dimension
print(sub_tensor.get_shape())
我正在寻找的打印输出:
(?, 1082)
(?, 1082)
等。
如何在TensorFlow中实现这一点?
考虑到您的问题可能有很多限制,我至少可以想到 3 种解决方案。您可以使用tf.split
.我将使用 tf.placeholder,但它也适用于张量和变量。
p = tf.placeholder(shape=[None,10], dtype=tf.int32)
s1, s2 = tf.split(value=p, num_or_size_splits=2, axis=1)
但是,如果所需的拆分数量很大,则此方法可能变得不可行。请注意,它也可以拆分None
轴。
for n in range(15):
sub_tensor = tensor[n, :]
s = tf.slice(p, [0,2], [-1, 2])
Slice 可用于多维张量,但使用起来非常棘手。您可以使用tf.Tensor.getitem
方法,几乎就像您在问题中描述的那样。它的作用类似于 NumPy
.所以这应该可以完成这项工作:
for n in range(10):
print(p[n, :])
但是,这些方法的使用在很大程度上取决于您的特定应用程序。希望这有帮助。