DL之DNN优化技术:DNN优化器的参数优化—更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、图表可视化比较

简介: DL之DNN优化技术:DNN优化器的参数优化—更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、图表可视化比较

优化器案例理解

输出结果

image.png

image.png

image.png

设计思路

image.png


核心代码

#T1、SGD算法

class SGD:

'……'

   def update(self, params, grads):

       for key in params.keys():

           params[key] -= self.lr * grads[key]

#T2、Momentum算法

import numpy as np

class Momentum:

'……'

   def update(self, params, grads):

       if self.v is None:

           self.v = {}

           for key, val in params.items():                                

               self.v[key] = np.zeros_like(val)

       for key in params.keys():

           self.v[key] = self.momentum*self.v[key] - self.lr*grads[key]

           params[key] += self.v[key]

#T3、AdaGrad算法

'……'

     

   def update(self, params, grads):

       if self.h is None:

           self.h = {}

           for key, val in params.items():

               self.h[key] = np.zeros_like(val)

       for key in params.keys():

           self.h[key] += grads[key] * grads[key]

           params[key] -= self.lr * grads[key] / (np.sqrt(self.h[key]) + 1e-7)  

#T4、Adam算法

'……'

     

   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_t  = self.lr * np.sqrt(1.0 - self.beta2**self.iter) / (1.0 - self.beta1**self.iter)        

     

       for key in params.keys():

           self.m[key] += (1 - self.beta1) * (grads[key] - self.m[key])

           self.v[key] += (1 - self.beta2) * (grads[key]**2 - self.v[key])

         

           params[key] -= lr_t * self.m[key] / (np.sqrt(self.v[key]) + 1e-7)


相关文章
|
机器学习/深度学习 人工智能 自然语言处理
AI顶会ICLR 2022 | WPipe 蚂蚁集团大规模 DNN 训练的流水线并行技术
AI顶会ICLR 2022 | WPipe 蚂蚁集团大规模 DNN 训练的流水线并行技术
1069 0
AI顶会ICLR 2022 | WPipe 蚂蚁集团大规模 DNN 训练的流水线并行技术
|
机器学习/深度学习 算法 数据建模
SDG,ADAM,LookAhead,Lion等优化器的对比介绍
本文将介绍了最先进的深度学习优化方法,帮助神经网络训练得更快,表现得更好。有很多个不同形式的优化器,这里我们只找最基础、最常用、最有效和最新的来介绍。
634 0
|
机器学习/深度学习 存储 算法
【机器学习】numpy实现Adam优化器
【机器学习】numpy实现Adam优化器
746 0
【机器学习】numpy实现Adam优化器
|
机器学习/深度学习 人工智能 自然语言处理
7 Papers & Radios | 英伟达把GPT-4塞进我的世界;比Adam快2倍的大模型预训练优化器
7 Papers & Radios | 英伟达把GPT-4塞进我的世界;比Adam快2倍的大模型预训练优化器
263 0
|
人工智能 算法 调度
马腾宇团队新出大模型预训练优化器,比Adam快2倍,成本减半
马腾宇团队新出大模型预训练优化器,比Adam快2倍,成本减半
285 0
|
算法 TensorFlow 算法框架/工具
TensorFlow 常用优化器:GradientDescent、Momentum、Adam
TensorFlow 常用优化器:GradientDescent、Momentum、Adam
TensorFlow 常用优化器:GradientDescent、Momentum、Adam
|
机器学习/深度学习
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
DL之DNN:自定义MultiLayerNet【6*100+ReLU,SGD】对MNIST数据集训练进而比较【多个超参数组合最优化】性能
|
机器学习/深度学习
DL之DNN:利用MultiLayerNetExtend模型【6*100+ReLU+SGD,dropout】对Mnist数据集训练来抑制过拟合
DL之DNN:利用MultiLayerNetExtend模型【6*100+ReLU+SGD,dropout】对Mnist数据集训练来抑制过拟合
DL之DNN:利用MultiLayerNetExtend模型【6*100+ReLU+SGD,dropout】对Mnist数据集训练来抑制过拟合
|
机器学习/深度学习
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD,weight_decay】对Mnist数据集训练来抑制过拟合
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD,weight_decay】对Mnist数据集训练来抑制过拟合
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD,weight_decay】对Mnist数据集训练来抑制过拟合
|
机器学习/深度学习
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD】对Mnist数据集训练来理解过拟合现象
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD】对Mnist数据集训练来理解过拟合现象
DL之DNN:利用MultiLayerNet模型【6*100+ReLU+SGD】对Mnist数据集训练来理解过拟合现象

热门文章

最新文章