tf.shape() 在张量流中得到错误的形状

新手上路,请多包涵

我这样定义一个张量:

x = tf.get_variable("x", [100])

但是当我尝试打印张量的形状时:

print( tf.shape(x) )

我得到 Tensor(“Shape:0”, shape=(1,), dtype=int32) ,为什么输出结果不应该是 shape=(100)

原文由 Nils Cao 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 797
2 个回答

tf.shape(input, name=None) 返回表示输入形状的一维整数张量。

您正在寻找: x.get_shape() 返回 TensorShapex 变量。

更新:由于这个答案,我写了一篇文章来阐明 Tensorflow 中的动态/静态形状: https ://pgaleone.eu/tensorflow/2018/07/28/understanding-tensorflow-tensors-shape-static-dynamic/

原文由 nessuno 发布,翻译遵循 CC BY-SA 4.0 许可协议

澄清:

tf.shape(x) 创建一个 op 并返回一个对象,该对象代表构造的 op 的输出,这就是您当前正在打印的内容。要获得形状,请在会话中运行操作:

 matA = tf.constant([[7, 8], [9, 10]])
shapeOp = tf.shape(matA)
print(shapeOp) #Tensor("Shape:0", shape=(2,), dtype=int32)
with tf.Session() as sess:
   print(sess.run(shapeOp)) #[2 2]

credit: 看完上面的答案后,我 在 Tensorflow 中看到了 tf.rank 函数 的答案,我发现它更有帮助,我试着在这里改写它。

原文由 Lazar Valkov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题