import numpy as np
def diy_adam(grad, weight, alpha=1e-3,
beta1=0.9, beta2=0.999, eps=1e-8,
t=0, mt=0, vt=0):
"""
自定义adam优化器
:param grad: 梯度
:param weight: 权重矩阵
:param alpha: 学习率
:param beta1: 超参数
:param beta2: 超参数
:param eps: 超参数,公式中用于结束while。此处仅用于避免除0的情况。
:param t: 初始化
:param mt: 初始化
:param vt: 初始化
:return: 更新的权重
"""
t = t+1
gt = grad
mt = beta1 * mt + (1 - beta1) * gt
vt = beta2 * vt + (1 - beta2) * gt**2 # 平方梯度
mth = mt / (1 - beta1 ** t)
vth = vt / (1 - beta2 ** t)
weight = weight - alpha * mth / (np.sqrt(vth) + eps)
return weight
Adam优化器实现
于 2022-06-27 16:06:24 首次发布