TensorFlow入门(三、TensorFlow模型的运行机制)

TensorFlow通过"图"和会话的方式分离了计算的定义和执行,即它的运行机制是"定义"与"运行"相分离的。从操作层面可以把它抽象成两种:模型构建和模型运行。

TensorFlow模型中的几个概念:

①张量(tensor):数据,即某一类型的多维数组

②变量(Variable):常用于定义模型中的参数,是通过不断训练得到的值

③占位符(placeholder):输入变量的载体,也可以理解成定义函数时的参数

④"图"中的节点操作(operation,OP):即一个OP获得0个或多个tensor,执行计算,输出额外的0个或多个tensor

关于"图"的概念:

①一个"图"代表一个计算任务

②在模型运行的环节中,"图"将在会话(session)里被启动

③session将"图"的OP分发到如CPU或GPU之类的设备上,同时提供执行OP的方法。这些方法执行后,将产生的tensor返回。在Python语言中,返回的tensor是numpy ndarray对象,在C和C++语言中,返回的tensor是TensorFlow::Tensor实例

session与"图"的工作关系如下图所示:

"图"的运行情况有3种应用场景:

①训练场景:

即实现模型从无到有的过程,通过对样本的学习训练,调整学习参数,形成最终的模型。其过程是将给定的样本和标签作为输入节点,通过大量的循环迭代,将图中的正向运算(从输入的样本通过OP运算得到输出的方向)得到的输出值,再进行反向运算(从输出到输入的方向),以更新模型中的学习参数,最终使模型产生的正向结果最大化地接近样本标签。这样就得到了一个可以拟合样本规律的模型

②测试场景:

即利用"图"的正向运算得到的结果与真实值进行比较的过程

③使用场景:

即利用"图"的正向运算得到结果,并直接使用。该场景下,模型与函数相比,输入的样本就是实参,占位符就是形参,运算过程相当于函数体,得到的结果相当于返回值

session的建立使用

        session的建立共分为4种方法:

        ①创建对象实例

import tensorflow as tf

#定义一个常量
hello = tf.constant('Hello,Tensorflow!')
#建立一个session
sess = tf.Session()
#通过session里的run函数来运行结果
print(sess.run(hello))
#关闭session
sess.close()

        ②使用with语法

import tensorflow as tf

#定义两个常量
a = tf.constant(3)
b = tf.constant(4)

#建立session
with tf.Session() as sess:
    print("相加: %i"%sess.run(a + b))
    print("相乘: %i"%sess.run(a * b))


#with session的用法是最常见的,沿用了Python中with的语法,即当程序结束后会自动关闭session,而不需要再去写close

        ③使用交互式session方式

import tensorflow as tf

#定义两个常量
a = tf.constant(3)
b = tf.constant(4)
#建立一个有交互式功能的session
#运行结果
print(a.eval())
print(b.eval())
#关闭session
sess.close()

#一般在Jupyter环境下使用较多,具体用法与with session类似。不需要用session的run函数这种形式运行。而是定义好会话对象后,每次执行时,调用tensor.eval()即可

        ④使用Supervisor方式,该方式更高级一些,可以自动来管理session中的具体任务,例如,载入/载出检查点文件、写入TensorBoard等,另外该方法还支持分布式训练的部署。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值