詳解tf.Session()和tf.InteractiveSession()的區別
阿新 • • 發佈:2019-02-09
他們之間的區別就是後者載入自身作為預設的Session。tensor.eval()和operation.run()可以直接使用
下面這三個是等價的:
sess = tf.InteractiveSession()
sess = tf.Session()
with sess.as_default():
with tf.Session() as sess:
如下就會錯:
import tensorflow as tf
a = tf.constant(4)
b = tf.constant(7)
c = a + b
sess = tf.Session()
print(c.eval())
raise ValueError("Cannot evaluate tensor using `eval()`: No default "
ValueError: Cannot evaluate tensor using `eval()`: No default session is registered. Use `with sess.as_default()` or pass an explicit session to `eval(session=sess)`
如果這樣就沒問題
a = tf.constant(4)
b = tf.constant(7)
c = a + b
# sess = tf.Session()
with tf.Session() as sess:
print(c.eval())
a = tf.constant(4)
b = tf.constant(7)
c = a + b
sess = tf.InteractiveSession()
print(c.eval())
下面是這兩個函式的定義註釋(其實官方講的的很詳細了)
class Session(BaseSession): """A class for running TensorFlow operations. A `Session` object encapsulates the environment in which `Operation` objects are executed, and `Tensor` objects are evaluated. For example: ```python # Build a graph. a = tf.constant(5.0) b = tf.constant(6.0) c = a * b # Launch the graph in a session. sess = tf.Session() # Evaluate the tensor `c`. print(sess.run(c)) ``` A session may own resources, such as @{tf.Variable}, @{tf.QueueBase}, and @{tf.ReaderBase}. It is important to release these resources when they are no longer required. To do this, either invoke the @{tf.Session.close} method on the session, or use the session as a context manager. The following two examples are equivalent: ```python # Using the `close()` method. sess = tf.Session() sess.run(...) sess.close() # Using the context manager. with tf.Session() as sess: sess.run(...) ``` The [`ConfigProto`](https://www.tensorflow.org/code/tensorflow/core/protobuf/config.proto) protocol buffer exposes various configuration options for a session. For example, to create a session that uses soft constraints for device placement, and log the resulting placement decisions, create a session as follows: ```python # Launch the graph in a session that allows soft device placement and # logs the placement decisions. sess = tf.Session(config=tf.ConfigProto(allow_soft_placement=True, log_device_placement=True)) ``` """