美文网首页
79. TensorFlow教程(三)基础概念

79. TensorFlow教程(三)基础概念

作者: 十里江城 | 来源:发表于2019-12-04 21:13 被阅读0次

本文介绍TensorFlow基础概念,主要内容如下:

  • TensorFlow模块与架构介绍
  • TensorFlow数据流图介绍
  • 张量(Tensor)介绍
  • 变量(Variable)介绍
  • 操作(Operation)介绍
  • 会话(Session)介绍
  • 优化器(Optimizer)介绍

TensorFlow模块与架构介绍

TensorFlow与APIs:


TensorFlow架构:


TensorFlow数据流图介绍


TensorFlow是一种声明式的编程范式,计算单元为函数,通过结构化、抽象化实现"要什么",声明式的编程范式表达力更强,例如:


TensorFlow数据流图:


TensorFlow数据流图的构成:

  • 张量:可以很好地表示高维数组的一种抽象,使用多维数组描述高维抽象
  • 稀疏张量:存储重要的有意义值
  • 计算节点: 操作
  • 存储节点: 变量
  • 数据节点: 描述图外输入的数据
    TensorFlow数据流图借鉴拓扑排序思想, 从入度为零的点开始的可执行序列。

TensorFlow数据流图优势:


其中"快"体现在并行计算与分布式计算的速度上,纵坐标表示每秒可以处理的图片数量:


在经典的四种网络上,人工合成与读出的真正数据(涉及I/O)的速度比较:


张量(Tensor)介绍

数学中的张量:


  • 0阶张量:标量
  • 1阶:向量
  • 2阶:矩阵
    其中阶指数据的最大维度:


TensorFlow中的张量:


  • 用来表示多维数据
  • 是执行操作时的输入或输出数据
  • 通过执行操作来创建或计算张量
  • 张量的形状不一定在编译时确定,可以在运行时通过形状推断计算得出,如None的定义

几种特别的张量:



其中高维数据占位符,只有壳没有数值;
变量,维护状态保存值。

0、1阶张量:


2、4阶张量:


其中tf.rank()用于求张量的阶数:



与Variable不同,tensor在物尽其用之后会被类似垃圾回收的机制释放掉内存。

变量(Variable)介绍


如W,b即变量,常驻内存中。

变量与张量的区别:


变量的操作:



创建变量时,<option-name>是可选的的变量名,以下两种加法等价:


TensorFlow变量使用流程:


其文件结构如下:



其中data存储值,index存储索引,meta存储数据流图的结构。

变量操作与saver的使用如下:

  • 创建变量:


  • 初始化变量:


  • saver使用示例:



    其中my-model表示前缀, globel_step表示想恢复的时间点的模型参数

  • 创建saver与恢复变量实例:


    其中tf.train.import_meta_graph 用于恢复大规模神经网络数据流图的结

操作(Operation)介绍


操作的输入和输出是张量或操作本身。

TensorFlow典型计算和控制操作如下:



由于TensorFlow中运行前不知运行时状态,故不建议使用"逻辑控制和调试"操作。

TensorFlow占位符操作:


常量的乘加运算:

使用占位符的乘加运算:



其中,"tf.add(x, y)"操作中函数需要的值只需在运行时刻输入即可,称为"惰性求值"

会话(Session)介绍

TensorFlow会话:



不指定Session的属性则是默认值

Session.run()乘加操作的实例:



右侧的常量操作不需要初始化即可得到相应的值

获取张量的操作除sess.run()以外,还有以下的tensor.eval()operation.run()方法:


以上输出为4.0。

TensorFlow会话的执行:



可见其中tensor.eval()与operation.run()方法都是底层调用session.run()的方法。

TensorFlow会话的执行原理:

  • 操作节点组成子图
  • 相同设备上的节点(计算、存储、数据节点)组成局部图
  • 依赖关系下在设备上有序执行各个节点


TensorFlow会话的本地执行:
创建节点时指定执行该节点的设备:


TensorFlow本地计算:
其计算过程可在不同设备上执行:


优化器(Optimizer)介绍

前置知识:损失函数


常用的损失函数:

  • 平方损失函数
  • 交叉熵损失函数
  • 指数损失函数


经验风险:
即训练集的平均损失:


结构风险最小化:
引入度量模型复杂度的正则化项或惩罚项的过程,称为结构风险最小化。
构成:由经验风险项与正则项
常用正则化项:L0,L1,L2范数;用以降低模型的复杂度,防止过拟合


最优的模型参数:


正题:优化算法


  • 使用目标函数的一阶导数, 如梯度下降法
  • 使用目标函数的二阶导数, 如牛顿法、Hessian矩阵(计算量大很多)等
  • 使用前几轮迭代的信息,如Adam

随机梯度下降法:


TensorFlow的训练机制:


TensorFlow的优化器:
对梯度的计算-处理-应用



其中SyncReplicasOptimizer用于分布式训练

流程如下:



或者


TensorFlow的内置有优化器:


相关文章

网友评论

      本文标题:79. TensorFlow教程(三)基础概念

      本文链接:https://www.haomeiwen.com/subject/txcrgctx.html