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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Python 澄清tf.Session()作用域TensorFlow_Python_Tensorflow - Fatal编程技术网

Python 澄清tf.Session()作用域TensorFlow

Python 澄清tf.Session()作用域TensorFlow,python,tensorflow,Python,Tensorflow,我有一个python程序,在其中我定义了一个网络,像往常一样,我在一个函数中对它进行训练 with tf.Session() as sess: ... for epoch in xrange(num_epochs): ... for n in xrange(num_batches): _, c = sess.run([optimizer, loss], feed_dict={.... 在损失函数中,我需要做很多工作才能得到损失,特别是,我必须取张量中的最大值,并用它来做一些事情。

我有一个python程序,在其中我定义了一个网络,像往常一样,我在一个函数中对它进行训练

with tf.Session() as sess:
...
for epoch in xrange(num_epochs):
...
for n in xrange(num_batches):
       _, c = sess.run([optimizer, loss], feed_dict={....
在损失函数中,我需要做很多工作才能得到损失,特别是,我必须取张量中的最大值,并用它来做一些事情。这里有一个例子

values = tf.constant([0, 1, 2, 0, 2], dtype=tf.float32)
max_values = tf.reduce_max(values) # Tensor...
...
max\u values
行中,如果我使用debug,它会说它是张量,而不是值,因此如果我以这种方式更改代码,并将会话传递到在前一段代码中创建的函数

values = tf.constant([0, 1, 2, 0, 2], dtype=tf.float32)
max_values = sess.run(tf.reduce_max(values)) # 2.0
...
它起作用了。但是这个损失函数已经在会话的范围内了,所以我的问题是为什么结果是张量而不是数字?是否有一种方法可以在不将会话传递给丢失函数的情况下获取值?

根据:

TensorFlow使用tf.Session类表示 客户机程序——通常是Python程序,尽管类似 接口可以用其他语言提供,也可以使用C++运行时。 这意味着当您执行
values=tf.constant([0,1,2,0,2],dtype=tf.float32)
时,您只需将一个节点插入到tensorflow图中!由于Python是一个低级C++运行时的高级API,所以实际上需要一个会话来在这个低级运行时评估Python代码。 这就是为什么每次需要计算或计算Tensorflow变量/方法/常量/等时,都需要在会话中使用
tf.Session().run(yournode)

我希望它有助于使用Tensor.eval()函数将张量转换为其值。 在下面的示例中,可以获得最大值张量的值

def loss():
  values = tf.constant([0, 1, 2, 0, 2], dtype=tf.float32)
  max_values = tf.reduce_max(values)
  print (max_values.eval())

with tf.Session() as sess:
  loss()
如果在会话范围外调用loss(),则会出现错误


您还可以使用即时执行模式

好吧,那就没有办法了