gpt4 book ai didi

tensorflow - 类型错误 : 'TensorShape' object is not callable

转载 作者:行者123 更新时间:2023-12-02 20:18:02 38 4
gpt4 key购买 nike

我是 Tensorflow 编程新手,我正在挖掘一些函数并在代码片段中收到此错误:

**with** **tf.Session()** as sess_1:
c = tf.constant(5)
d = tf.constant(6)
e = c + d
print(sess_1.run(e))
print(sess_1.run(e.shape()))

发现错误:回溯(最近一次调用最后一次): 文件“C:/Users/Ashu/PycharmProjects/untitled/Bored.py”,第 15 行,位于 打印(sess_1.run(e.shape()))类型错误:“TensorShape”对象不可调用

我在这里没有找到它,所以有人可以澄清这个愚蠢的疑问,因为我是新学习者。对于任何打字错误,我们深表歉意!

我还有一个疑问,当我简单地使用 eval() 函数时,它不会在 pycharm 中打印任何内容,我必须将它与 print() 方法一起使用。所以我的疑问是,当使用 print() 方法时,它不会打印张量的 dtype ,它只是打印 pycharm 中的张量或 python 对象值。(为什么我没有得到如下格式的输出: array([ 1.,1.,],dtype=float32))这是Pycharm在新版本中打印张量的方式还是我做错了什么?很高兴知道这背后的事情,如果我在任何地方错了,请帮助并原谅。

最佳答案

对于初学者来说, tensorflow 的一个令人困惑的方面是有两种类型的形状:动态形状,由 tf.shape(x) 给出,以及静态形状,由x.shape给出(假设x是一个张量)。虽然它们代表相同的概念,但它们的用法却截然不同。

静态形状是运行时已知的张量的形状。它本身就是一种数据类型,但可以使用 as_list() 将其转换为列表。

x = tf.placeholder(shape=(None, 3, 4))
static_shape = x.shape
shape_list = x.shape.as_list()
print(shape_list) # [None, 3, 4]

y = tf.reduce_sum(x, axis=1)
print(y.shape.as_list()) # [None, 4]

在操作过程中, tensorflow 会尽可能地跟踪静态形状。在上面的示例中,y 的形状是根据 x 的部分已知形状计算的。请注意,我们甚至还没有创建 session ,但静态形状仍然已知。

由于批量大小未知,因此无法在计算中使用静态第一个条目。

z = tf.reduce_sum(x) / tf.cast(x.shape.as_list()[0], tf.float32)  # ERROR

(我们可以除以x.shape.as_list()[1],因为该维度在运行时是已知的 - 但这不会在这里展示任何内容)

如果我们需要使用静态未知的值(即在图构建时),我们可以使用 x动态形状。动态形状是一个张量 - 与 tensorflow 中的其他张量一样 - 使用 session 进行评估。

z = tf.reduce_sum(x) / tf.cast(tf.shape(x)[0], tf.float32)  # all good!

您无法在动态形状上调用 as_list,也无法在不经过 session 评估的情况下检查其值。

关于tensorflow - 类型错误 : 'TensorShape' object is not callable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51977189/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com