Momentum参照小球在碗中滚动的物理规则进行移动
AdaGrad为每个参数适当调整更新步伐
Adam是2015年提出的新方法,它是Momentum和AdaGrad的结合体,,融合了两种方法的优势
代码:
# Adam.py
import numpy as np
import matplotlib.pyplot as plt
class Adam:
def __init__(self, lr=0.01, beta1=0.9, beta2=0.999):
self.lr = lr
self.beta1 = beta1
self.beta2 = beta2
self.iter = 0
self.m = None
self.v = None
def update(self, params, grads):
if self.m is None:
self.m, self.v = {
}, {
}
for key, val in params.items():
self.m[key] = np.zeros_like(val)
self.v[key] = np.zeros_like(val)
self.iter += 1
lr