Python 被tensorflow输出搞糊涂了

Python 被tensorflow输出搞糊涂了,python,tensorflow,Python,Tensorflow,这是我的代码和相关输出。搞不懂为什么同一张量有两种不同的形状输出?一个是shape=(3,1),另一个是shape=(2,) 产出 Tensor("Const_0:0", shape=(3, 1), dtype=float32) Tensor("Shape_0:0", shape=(2,), dtype=int32) 的第一个输出 print tensor 告诉你张量的信息(维数)。这是一个三行一列的张量 但是, tf.shape(tensor) 返回表示输入形状的一维整数张量。因此,您看

这是我的代码和相关输出。搞不懂为什么同一张量有两种不同的形状输出?一个是
shape=(3,1)
,另一个是
shape=(2,)

产出

Tensor("Const_0:0", shape=(3, 1), dtype=float32)
Tensor("Shape_0:0", shape=(2,), dtype=int32)
的第一个输出

print tensor
告诉你张量的信息(维数)。这是一个三行一列的张量

但是,

tf.shape(tensor)
返回表示输入形状的一维整数张量。因此,您看到的输出是关于返回张量的信息(形状),您可以使用以下方法看到:

tensor.get_shape()

> TensorShape([Dimension(3), Dimension(1)])
实际上,它有两个值。

因为
tf.shape(张量)
将返回一个shape对象。当你把它打印出来时,实际上是关于形状对象的信息,即形状=(2),它不是张量的形状,而是形状对象的形状


有关更多详细信息,请查看

谢谢,但为什么它是
形状=(2,)
?这是因为“张量形状”=(3,1),所以“张量形状”=(2,)的形状是(3,1)谢谢的形状,但是
(2,)
对形状意味着什么?它的意思是2*什么维度?因为它是一个元组,如果你需要在元组中声明一个值,你需要在它的末尾添加逗号。阅读了解详细信息。你的意思是
tf.shape(tensor)
的返回是一个元组而不是另一个张量吗?谢谢,另一个混淆是
tensor=tf.constant([[1.],[1.],[1.],[1.]])
,它定义了一个具有3*1维的张量,或具有1*1维的3张量,如输出所示,dtype=float32)得到一个维度为3x1的张量。谢谢,在我的原始输出中,
shape=(2,)
表示什么类型的形状,它表示2*什么维度?只是好奇。正如我在文章中所说,它是一个一维张量(或向量)。所以它是两个元素的向量:
[3,1]
|它不是1x2张量!这将是一个二维张量(或矩阵),看起来像这样
[[1,2]]
(注意两组括号)。
tensor.get_shape()

> TensorShape([Dimension(3), Dimension(1)])