美文网首页
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