Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 类型错误:';张量形';对象不可调用_Tensorflow - Fatal编程技术网

Tensorflow 类型错误:';张量形';对象不可调用

Tensorflow 类型错误:';张量形';对象不可调用,tensorflow,Tensorflow,我是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”,第1

我是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行,in 打印(sess_1.run(e.shape())) TypeError:“TensorShape”对象不可调用

我没有在这里找到它,所以任何人都可以澄清这个愚蠢的疑问,因为我是新的学习者。对不起,任何打字错误

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

如中所述,您只能使用张量、操作或张量/操作列表调用会话的
run
方法。最后一行代码调用
运行
,结果是
e.shape()
,它的类型为
TensorShape
。会话无法执行
TensorShape
参数,因此出现错误


使用张量调用
print
时,系统将打印张量的内容。如果要打印张量类型,请使用类似于
print(type(tensor))

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

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

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

由于批大小未知,因此不能在计算中使用静态第一项

z = tf.reduce_sum(x) / tf.cast(x.shape.as_list()[0], tf.float32)  # ERROR
(我们可以用
x.shape.as_list()[1]
来划分,因为该维度在运行时是已知的,但这里没有说明任何内容)

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

z = tf.reduce_sum(x) / tf.cast(tf.shape(x)[0], tf.float32)  # all good!
您不能在动态形状上调用
as_list
,也不能在未经过会话求值的情况下检查其值

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