Tensorflow基础知识总结(2)

1. TensorFlow常用关键词详解

1.1 边

Tensorflow的边有两种连接关系:数据依赖控制依赖。其中,实现边表示数据依赖,即张量。在机器学习算法中,张量在数据流图中从前往后流动一遍就完成了一次向前传播(forward propagation),而残差从后向前流动一遍就完成了一次反向传播(backward propagation)。虚线边表示控制依赖,可以用于控制操作的运行,这被用来确保happen-before关系,这类边上没有数据流过,但源节点必须在目的节点开始执行前完成执行。常用代码如下:

tf.Graph.control dependencies(control_inputs)

1.2 节点

图中的节点又称为算子,它代表一个操作,如加减乘除这样的数学运算操作,ConcatSplit这样的数组运算操作,MatMulMatrixInverse这样的矩阵运算操作,SoftMaxSigmoidReLU这样的神经网络构建操作,SaveRestore这样的检查点操作,EnqueueDequeue这样的队列和同步操作,MergeSwitch这样的控制张量操作。

1.3 图

Tensorflow中涉及的运算都要放在图中。典型的图创建如下所示:

import tensorflow as tf

#创建一个常量运算操作,产生一个1*2矩阵
matrix1 = tf.constant([[3.,3.]])

#创建另一个常量运算操作,产生一个2*1矩阵
matrix2 = tf.constant([[2.],[2.]])

#创建一个矩阵乘法运算,把matrix1和matrix2作为输入
#并以product代表矩阵乘法的结果
product = tf.matmul(matrix1,matrix2)

1.4 会话

创建图之后,要想让图启动,首先需要创建一个会话(Session)对象,开启会话后,就可以用数据去填充节点进行计算。会话主要提供操作运行Tensor求值的环境。在Python中通过tf.Session来创建会话执行各项操作。如下所示:

#创建会话
with tf.Session() as sess:
    result = sess.run([product])
    print(result)

在上述创建会话过程中,调用Session对象的run()方法来执行图时,传入Tensor的过程称为填充(feed)返回结果的过程称为取回(fetch)

1.5 批标准化

批标准化(batch normalization,BN)时为了克服神经网络层数加深导致难以训练而诞生的。随着神经网络深度的加深,训练会越来越慢,收敛速度也会很慢,常常会导致梯度弥散问题(vanishing gradient problem)。

(1)批标准化处理方法

批标准化一般用在非线性映射(激活函数)之前,对x=Wu+b规范化处理,使得结果(输出信号各个维度)的均值为0方差为1。让每一层的输入有一个稳定的分布会有利于网络的训练。

(2)批标准化优点

批标准化通过规范化让激活函数分布在线性区间,结果就是加大了梯度,让模型可以更加大胆地进行梯度下降,能加大搜索的步长,加快收敛的速度,更容易跳出局部最小值,此外,这样做也破坏了原来的数据分布,一定程度上缓解了过拟合。因此,在遇到神经网络收敛速度很慢梯度爆炸(gradient explode)等无法训练的情况下,可以尝试用批标准化来解决。

你可能感兴趣的:(tensorflow,TensorFlow,基础知识,API)