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

2019-12-04  本文已影响0人  十里江城

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

TensorFlow模块与架构介绍

TensorFlow与APIs:


TensorFlow架构:


TensorFlow数据流图介绍


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


TensorFlow数据流图:


TensorFlow数据流图的构成:

TensorFlow数据流图优势:


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


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


张量(Tensor)介绍

数学中的张量:


TensorFlow中的张量:


几种特别的张量:



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

0、1阶张量:


2、4阶张量:


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



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

变量(Variable)介绍


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

变量与张量的区别:


变量的操作:



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


TensorFlow变量使用流程:


其文件结构如下:



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

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

操作(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范数;用以降低模型的复杂度,防止过拟合


最优的模型参数:


正题:优化算法


随机梯度下降法:


TensorFlow的训练机制:


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



其中SyncReplicasOptimizer用于分布式训练

流程如下:



或者


TensorFlow的内置有优化器:


上一篇下一篇

猜你喜欢

热点阅读