目录
整理不易,有条件的点个关注、点个赞呗!感恩各位大哥!
tensorflow简单介绍
tensor采用图运算的方式搭建并训练深度学习网络,该部分使用的库包版本为tensorflow==1.14.0
代码拆分(每个代码块可以放到一个jupyter的cell里)
tensorflow1.0中封装的各类常用优化器
简单梯度优化器
- 标准梯度下降法
计算所有样本汇总误差,然后更新权值 - 随机梯度下降法
随机抽取一个样本来计算误差,然后更新权值 - 批量梯度下降法
从总样本中选取一个批次(比如一共有10000个样本,随机选取其中的100个样本作为一个batch),然后计算这个batch的总误差,根据总误差来更新权值。 - SGD(慢、无法逃离鞍点,但准确率说不准哪个会更好)
W = W − η ∇ W J ( W ; x i ; y i ) (1) \bm{W=W-\eta\nabla_{W}J(W;x^{i};y^{i})}\tag{1} W=W−η∇WJ(W;xi;yi)(1) - Momentum
γ \bm\gamma γ: 动力,通常设置为0.9
v t = γ \bm{v_{t}=\gamma} vt=γ v t − 1 + η ∇ W J ( W ) \bm{v_{t-1}+\eta\nabla_{W}J(W)} vt−1+η∇WJ(W)
W = W − v t \bm{W=W-v_{t}} W=W−vt - NAG(Nesterov accelerated gradient)
v t = γ v t − 1 + ∇ W J ( W − γ v t − 1 ) (2) \bm{v_{t}=\gamma v_{t-1}+\nabla_{W}J(W-\gamma v_{t-1})}\tag{2} vt=γvt−1+∇WJ(W−γvt−1)(2)
W = W − v t (3) \bm{W=W-v_{t}}\tag{3} W=W−vt(3)
NAG在TF跟Monmentum合并在同一函数tf.train.MomentumOptimizer
中,可以通过参数配置启用。在Momentum中小球会盲目地跟从下坡的梯度,容易发生错误,所以我们需要一个更聪明的小球,这个小球提前知道它要去哪里,它还要知道走到坡底的时候速度慢下来而不是又冲上另一个坡。 γ v t − 1 \gamma v{t-1} γvt−1会用来修改W的值,计算 W − γ v t − 1 W-\gamma v_{t-1} W−γvt−1可以表示小球下一个位置大概在哪里。从而我们可以提前计算下一个位置的梯度,然后使用到当前位置。 - Adagrad
i i i: 代表第 i i i个分类
t t t: 代表出现次数
ε \varepsilon ε: 极小的数避免分母为零,取值一般为1e-8
η \eta η: 取值一般为0.01
g t , i = ∇ W J ( W i ) (4) \bm{g_{t,i}=\nabla_{W}J(W_{i})}\tag{4} gt,i=∇WJ(Wi)