DL之DNN优化技术:DNN优化器的参数优化—更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、图表可视化比较
生活随笔
收集整理的這篇文章主要介紹了
DL之DNN优化技术:DNN优化器的参数优化—更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、图表可视化比较
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
DL之DNN優化技術:DNN優化器的參數優化—更新參數的四種最優化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、圖表可視化比較
?
?
目錄
四種最優化方法簡介
優化器案例理解
輸出結果
設計思路
核心代碼
?
?
?
四種最優化方法簡介
DL之DNN優化技術:神經網絡算法簡介之GD/SGD算法(BP算法)的簡介、理解、代碼實現、SGD缺點及改進(Momentum/NAG/Ada系列/RMSProp)之詳細攻略
?
優化器案例理解
輸出結果
?
設計思路
?
核心代碼
#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 += 1lr_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)?
相關文章
DL之DNN:自定義五層DNN(5*100+ReLU+SGD/Momentum/AdaGrad/Adam四種最優化)對MNIST數據集訓練進而比較不同方法的性能
?
?
?
總結
以上是生活随笔為你收集整理的DL之DNN优化技术:DNN优化器的参数优化—更新参数的四种最优化方法(SGD/Momentum/AdaGrad/Adam)的案例理解、图表可视化比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DL之DNN:自定义MultiLayer
- 下一篇: DL之DNN优化技术:DNN中参数初始化