Tensorflow2.0笔记
Posted 维多利亚少年i
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tensorflow2.0笔记相关的知识,希望对你有一定的参考价值。
Tensorflow2.0笔记
本博客为Tensorflow2.0学习笔记,感谢北京大学微电子学院曹建老师
目录
6 优化器
优化算法可以分成一阶优化和二阶优化算法,其中一阶优化就是指的梯度算法及其变种,而二阶优 化一般是用二阶导数(Hessian 矩阵)来计算,如牛顿法,由于需要计算Hessian阵和其逆矩阵,计算量较大,因此没有流行开来。这里主要总结一阶优化的各种梯度下降方法。
深度学习优化算法经历了SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -> Nadam 这样的发展历程。
6.1 SGD
TensorFlow API: tf.keras.optimizers.SGD
6.1.1 vanilla SGD
代码实现:
# sgd
w1.assign_sub(learning_rate * grads[0])
b1.assign_sub(learning_rate * grads[1])
6.1.2 SGD with Momentum
代码实现:
# 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
6.2 AdaGrad
TensorFlow API: tf.keras.optimizers.Adagrad
代码实现:
# 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
代码实现:
# 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笔记的主要内容,如果未能解决你的问题,请参考以下文章
Google老师亲授 TensorFlow2.0入门到进阶笔记- (dataset)