我得到一个TensofFlow张量的形状:
(?,)
This answer说,?
表示该维在图中不是固定的,并且在两次运行调用之间可能会有所不同。
?
与结尾的逗号结合意味着什么?
文档章节和经文将不胜感激。我发现语法非常难以使用Google。
答案 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