我对TensorFlow的等级和形状概念感到困惑。我已经从这里阅读了详细信息,并运行了一些代码来澄清我的概念。但是,我仍然很困惑,需要帮助理解。
我认为
此外,由于我认为x是一个2D张量,因为对于张量来说,维度和秩是相同的(根据我的理解)。但是当我运行以下代码时:
x = tf.placeholder(tf.float32, shape=[2, 12])
print(x.get_shape()) # ==> (2, 12)
print(x[0, :].get_shape()) # ==> (12,)
print(x[1, :].get_shape()) # ==> (12,)
print(x[2, :].get_shape()) # ==> (12,)
print(x[120, :].get_shape()) # ==> (12,)
我认为
x
就像一个2D矩阵,其中2
是行数
,12
是列数
。那么为什么我使用x[120,:]
得到的形状是(12,)
?根据给定的形状,如何得到x[120,:]
?此外,由于我认为x是一个2D张量,因为对于张量来说,维度和秩是相同的(根据我的理解)。但是当我运行以下代码时:
print(x[0].get_shape())
I am getting this error:
Shape (2, 12) must have rank 1
这意味着我对排名和维度的理解有误。我错过了什么关于排名和维度的知识?排名和维度是两个不同的概念吗?为什么上面例子中张量x
的排名是1?我如何设置一个张量的排名?能否用详细的例子来解释一下?
x[0]
应该能够在最新版本的tensorflow中正常工作,尝试更新tensorflow。 - Olivier Moindrot