TensorFlow:切片Tensor并保持原始形状

时间:2019-04-07 06:44:22

标签: tensorflow slice

我有一个形状为<!DOCTYPE html> <head> <script src="./abc.js"></script> <script src="./def.js"></script> </head> <body> <script> var graphArray = []; assignValues(); graphArray = getInputGraph(); console.log(graphArray ); </script> </body> </html> 的张量tensor,我想将此张量切成for循环的(?, 1082)子部分,但我想保留原始形状,包括未知形状维度n

示例:

?

我正在寻找的打印输出:

lst = []
for n in range(15):
    sub_tensor = tensor[n] # this will reduce the first dimension
    print(sub_tensor.get_shape())

如何在TensorFlow中实现?

1 个答案:

答案 0 :(得分:1)

考虑到您的问题可能有很多限制,我可以想到至少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])

切片可以用于多维张量,但是使用起来非常棘手。而且您可以使用tf.Tensor.getitem方法,几乎​​就像您在问题中所描述的那样。它的行为类似于NumPy。因此,这应该可以完成工作:

for n in range(10):
    print(p[n, :])

但是,这些方法的使用在很大程度上取决于您的特定应用程序。希望这会有所帮助。