我这样定义一个张量:
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 许可协议
我这样定义一个张量:
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 许可协议
澄清:
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 许可协议
4 回答4.4k 阅读✓ 已解决
1 回答3.1k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
tf.shape(input, name=None) 返回表示输入形状的一维整数张量。
您正在寻找:
x.get_shape()
返回TensorShape
的x
变量。更新:由于这个答案,我写了一篇文章来阐明 Tensorflow 中的动态/静态形状: https ://pgaleone.eu/tensorflow/2018/07/28/understanding-tensorflow-tensors-shape-static-dynamic/