TensorFlow shape(?,)是什么意思?

时间:2018-08-22 06:22:48

标签: python tensorflow

我得到一个TensofFlow张量的形状:

(?,)

This answer说,?表示该维在图中不是固定的,并且在两次运行调用之间可能会有所不同。

?与结尾的逗号结合意味着什么?

文档章节和经文将不胜感激。我发现语法非常难以使用Google。

2 个答案:

答案 0 :(得分:2)

逗号表示维表示为 1-elem元组,而不是int。

每个张量在创建时默认为n维:

import tensorflow as tf
t = tf.constant([1, 1, 1])
s = tf.constant([[1, 1, 1],[2,2,2]])

print("0) ", tf.shape(t))
print("1) ", tf.shape(s))

0)  Tensor("Shape_28:0", shape=(1,), dtype=int32)
1)  Tensor("Shape_29:0", shape=(2,), dtype=int32)

但是,您可以对其进行整形以获得更“完整”的形状(即n X m / n X m X r。 ..昏暗):

print("2) ", tf.reshape(t, [3,1]))
print("3) ", tf.reshape(s, [2,3]))

2)  Tensor("Reshape_12:0", shape=(3, 1), dtype=int32)
3)  Tensor("Reshape_13:0", shape=(2, 3), dtype=int32)

答案 1 :(得分:1)

使用tf.shape(tensor)[0]获得具有可变尺寸的标量张量。如果您随后需要重塑,这将很有用。 tensor.get_shape().as_list()[0]为(?,...)的形状生成None。这通常是训练模型时批次大小的位置。

参考:TF Issues