TensorFlow学习过程记录 (二) -- 基本使用(2) -- 交互式使用

2. 交互式使用

前面的例子中我们使用了Session来启动图,并且调用Session.run方法来执行op。
为了便于使用诸如 IPython 之类的 Python 交互环境, 可以使用 InteractiveSession 代替 Session 类, 使用 Tensor.eval() 和 Operation.run() 方法代替 Session.run(). 这样可以避免使用一个变量来持有会话.

# coding=utf-8

# 进入一个交互式 TensorFlow 会话.
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

sess = tf.InteractiveSession()

x = tf.Variable([1.0, 2.0])
a = tf.constant([3.0, 3.0])

# 使用初始化器 initializer op 的 run() 方法初始化 'x'
x.initializer.run()

# 增加一个加法 add op, 从 'x' 加上 'a'. 运行加法 op, 输出结果
# sub = tf.sub(x, a)
add = tf.add(x, a)
print(add.eval())
# ==> [4. 5.]

文档中给的是减法sub = tf.sub(x, a),但是运行减法会报错:
这里写图片描述
查看原代码后发现sub()改为了subtract()
这里写图片描述
得到结果:
这里写图片描述

………
这是一个小插曲哈,这一节的主题是“交互式使用”,而不是代码问题。。

InteractiveSession类就是一个用户交互式上下文的TensorFlow的 Session。就像一个shell.与常规session不同的地方在于,InteractiveSession在构造器中将自己安装为默认session。 @{tf.Tensor.eval}和 @{tf.Operation.run}方法会使用该session来运行ops。
在在交互式shells和 [IPython notebooks]中就会很方便,因为它避免了必须通过一个显式的“session”对象来运行ops。
举例说明:

  sess = tf.InteractiveSession()
  a = tf.constant(5.0)
  b = tf.constant(6.0)
  c = a * b
  # 我们可以使用'c.eval()' 而不用 'sess'
  print(c.eval())
  sess.close()

注意,当在“with”语句中创建时,常规会话本身作为默认session使用。
非交互式程序中常用的方法是遵循以下模式:

  a = tf.constant(5.0)
  b = tf.constant(6.0)
  c = a * b
  with tf.Session():
    # 这里也能使用 'c.eval()'
    print(c.eval())

猜你喜欢

转载自blog.csdn.net/weixin_35737303/article/details/80214643
今日推荐