tensorflow读书笔记

Tensorflow数据流图

2019-01-07  本文已影响0人  zer0like

0x01 数据流图


数据流图:用节点和有向边描述数学运算的有向无环图
节点:代表各类操作(operation),具体包括数学运算、数据填充、结果输出和变量读写等
有向边:描述节点间的输入、输出关系,而张量(Tensor)则在边上流动

基于梯度下降的机器学习问题,在TensorFlow的数据流图中通常可分为两个阶段:

  1. 前向图求值:用户编写,主要包括定义模型的目标和损失函数,输入输出的形状和类型
  2. 后向图计算梯度:TensorFlow的优化器生成,主要用来计算模型的梯度以及梯度的更新

0x02 节点


前向图中,节点称为操作(operation)主要包括三类:

  1. 数学函数或表达式:如加减乘除等
  2. 储存模型参数的变量(Variable):比如卷积中的卷积核和偏置
  3. 占位符(Placeholder):用来描述输入输出的形状,便于用户利用其抽象结构来定义模型,执行时需要填充对应的数据

后向图中,节点也会分为三类:

  1. 梯度值:经过前向图计算出的模型参数的梯度
  2. 更新模型参数的操作:定义如何将梯度值更新到对应的模型参数
  3. 更新后的模型参数:优化器中的参数与前向图中的参数一一对应,但是参数进行了更新,用户下一轮训练

0x03 有向边


有向边定义操作之间的关系,主要包括两类:

  1. 传输数据,绝大的有向边都是此类,用来流动张量
  2. 定义控制依赖,泰国设定节点的前置依赖决定相关节点的执行顺序,又被称为控制边

所有的节点都通过数据边和控制边相连,入度为0的节点,即没有前置依赖的节点可直接执行,其他节点必须等所有依赖节点执行完才可执行

0x04 执行原理


从宏观的角度可分为四个步骤:

注意:TensorFlow的编程模式(声明式编程)决定了其执行的顺序并不完全依赖于与代码中定义的顺序,而与节点之间的逻辑关系以及运行时库的实现机制相关。

上一篇下一篇

猜你喜欢

热点阅读