Basic Use of TensorFlow

Table of Contents

第三章 Tensorflow使用入门

       完成TensorFlow的安装后,终于可以进行TensorFlow的初步体验。文中所示代码都是在JupyterNotebook中输入且验证无误。

3.1 创建图

       在TensorFlow中的计算图如下所示:
在这里插入图片描述

图3-1.计算图
       创建计算图即定义了一系列用来计算的节点,据图3-1创建计算图的代码如下:
import tensorflow as tf  
x = tf.Variable(3, name="x")  
y = tf.Variable(4, name="y")  
f = x*x*y+y+2

       计算图不仅可以用来隔离张量和计算,它还提供了管理张量和计算的机制。

3.2 执行图

       尽管在上一节中创建了计算图,但它并没有执行任何计算,甚至连变量都没有初始化。需要打开一个TensorFlow会话来初始化变量并执行计算图。一个TensorFlow会话会将计算分发到CPU和GPU等设备上并执行。打开会话并执行计算图的方式如下:

  1. 最为直接简单的方式是创建一个会话,初始化所有变量,求值,关闭会话(释放资源),代码如下:
sess = tf.Session()
sess.run(x.initializer)
sess.run(y.initializer)
result = sess.run(f)
print(result)   #输出为42
sess.close()

上述方式每次都要重复sess.run,而这种方式的缺点在于:代码复杂,重复执行图导致重复求值(具体见节点生命周期)。

  1. 通过调用with块创建默认会话,代码如下:
with tf.Session() as sess:  
      x.initializer.run()
      y.initializer.run()
      result = f.eval()
print(result)  #输出为42

上述方式用x.initializer.runf.eval分别替换sess.run(f)sess.run(x),这种写法不仅增加了代码可读性还可让会话在块中代码执行结束后自动关闭。
代码x.initializer.run依然被重复了一次,可以再创建一个节点,在会话执行前初始化所有变量,代码如下:

init = tf.global_variables_initializer()  #添加节点
with tf.Session() as sess:  
    init.run()  
    result = f.eval()
print(result)  #输出为42
  1. 通过InteractiveSession()创建默认会话,代码如下:
sess = tf.InteractiveSession()
init.run()  #由于第2步中创建了初始化节点,所以这里可以直接用init.run()
result = f.eval()
print(result)  
sess.close()

       由上述各种方法可知,一个TensorFlow程序通常分为两部分:第一部分用来构建一个计算图(构建阶段),第二部分则用来执行这个图(执行阶段)。构建阶段利用计算图来展示机器学习模型及训练所需的计算。而执行阶段则重复执行训练动作,逐步提升模型参数。

3.3 管理图

       在TensorFlow中创建的所有节点都会自动添加到默认图上,检验如下:

x1 = tf.Variable(1)
x1.graph is tf.get_default_graph()  # 结果显示为TRUE

       有时需要将节点添加到不同的计算图当中,可以用with块将目标计算图设置为默认图并添加,代码如下:

graph = tf.Graph()
with graph.as_default():
    x2 = tf.Variable(3)
x2.graph is graph  # 结果显示为TRUE
x2.graph is tf.get_default_graph()  # 结果显示为FALSE

3.4 参考

[1] Geron.机器学习实战
[2] blackx.tensorflow中计算图的概念

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值