Tensorflow2.0笔记

Posted 维多利亚少年i

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow2.0笔记相关的知识,希望对你有一定的参考价值。

Tensorflow2.0笔记

本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师

6 优化器

​ 优化算法可以分成一阶优化和二阶优化算法,其中一阶优化就是指的梯度算法及其变种,而二阶优 化一般是用二阶导数(Hessian 矩阵)来计算,如牛顿法,由于需要计算Hessian阵和其逆矩阵,计算量较大,因此没有流行开来。这里主要总结一阶优化的各种梯度下降方法。

​ 深度学习优化算法经历了SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的发展历程。

image-20210622093819471

6.1 SGD

TensorFlow API: tf.keras.optimizers.SGD

6.1.1 vanilla SGD

image-20210622103327886

代码实现:

# sgd
w1.assign_sub(learning_rate * grads[0])
b1.assign_sub(learning_rate * grads[1])

6.1.2 SGD with Momentum

image-20210622103652084

代码实现:

# sgd-momentun 
beta = 0.9
m_w = beta * m_w + (1 - beta) * grads[0] 
m_b = beta * m_b + (1 - beta) * grads[1] 
w1.assign_sub(learning_rate * m_w) 
b1.assign_sub(learning_rate * m_b)

6.1.3 with Nesteroy Acceleration

image-20210622103841389

6.2 AdaGrad

TensorFlow API: tf.keras.optimizers.Adagrad

image-20210622104033868

代码实现:

# adagrad
v_w += tf.square(grads[0]) 
v_b += tf.square(grads[1])
w1.assign_sub(learning_rate * grads[0] / tf.sqrt(v_w)) 
b1.assign_sub(learning_rate * grads[1] / tf.sqrt(v_b))

6.3 RMSProp

TensorFlow API: tf.keras.optimizers.RMSprop

image-20210622104509988

代码实现:

# RMSProp beta = 0.9
v_w = beta * v_w + (1 - beta) * tf.square(grads[0]) 
v_b = beta * v_b + (1 - beta) * tf.square(grads[1]) 
w1.assign_sub(learning_rate * grads[0] / tf.sqrt(v_w)) 
b1.assign_sub(learning_rate * grads[1] / tf.sqrt(v_b))

以上是关于Tensorflow2.0笔记的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow2.0笔记

手写数字识别——基于全连接层和MNIST数据集

Google老师亲授 TensorFlow2.0入门到进阶笔记- (dataset)

Google老师亲授 TensorFlow2.0入门到进阶笔记- (dataset)

tensorflow2.0用1.0的代码

tensorflow2.0——代码实现一元逻辑回归