1. 程式人生 > >莫煩pytorch學習筆記(十)——加速神經網路訓練

莫煩pytorch學習筆記(十)——加速神經網路訓練

建造第一個神經網路——加速神經網路訓練

加速神經網路訓練包括下面幾種模式:

  • Momentum
  • AdaGrad
  • RMSProp
  • Adam
  • Stochastic Gradient Descent (SGD)

越複雜的神經網路 , 越多的資料 , 我們需要在訓練神經網路的過程上花費的時間也就越多. 原因很簡單, 就是因為計算量太大了. 可是往往有時候為了解決複雜的問題, 複雜的結構和大資料又是不能避免的, 所以我們需要尋找一些方法, 讓神經網路聰明起來, 快起來.

1.Stochastic Gradient Descent (SGD)

所以, 最基礎的方法就是 SGD 啦, 想像紅色方塊是我們要訓練的 data, 如果用普通的訓練方法, 就需要重複不斷的把整套資料放入神經網路 NN訓練, 這樣消耗的計算資源會很大.

我們換一種思路, 如果把這些資料拆分成小批小批的, 然後再分批不斷放入 NN 中計算, 這就是我們常說的 SGD 的正確開啟方式了. 每次使用批資料, 雖然不能反映整體資料的情況, 不過卻很大程度上加速了 NN 的訓練過程, 而且也不會丟失太多準確率.如果運用上了 SGD, 你還是嫌訓練速度慢, 那怎麼辦?

事實證明, SGD 並不是最快速的訓練方法, 紅色的線是 SGD, 但它到達學習目標的時間是在這些方法中最長的一種. 我們還有很多其他的途徑來加速訓練.

2.Momentum 更新方法

大多數其他途徑是在更新神經網路引數那一步上動動手腳. 傳統的引數 W 的更新是把原始的 W 累加上一個負的學習率(learning rate) 乘以校正值 (dx). 這種方法可能會讓學習過程曲折無比, 看起來像 喝醉的人回家時, 搖搖晃晃走了很多彎路.

W+=-Learning rate*dx    變成了m=b1*m-Learning rate*dx, W+=m

2.AdaGrad 更新方法

這種方法是在學習率上面動手腳, 使得每一個引數更新都會有自己與眾不同的學習率, 他的作用和 momentum 類似, 不過不是給喝醉酒的人安排另一個下坡, 而是給他一雙不好走路的鞋子, 使得他一搖晃著走路就腳疼, 鞋子成為了走彎路的阻力, 逼著他往前直著走. 他的數學形式是這樣的. 接下來又有什麼方法呢? 如果把下坡和不好走路的鞋子合併起來, 是不是更好呢? 沒錯, 這樣我們就有了 RMSProp 更新方法.

鍔犻€熺緇忕綉緇滆緇?(Speed Up Training)

3.RMSProp 更新方法

有了 momentum 的慣性原則 , 加上 adagrad 的對錯誤方向的阻力, 我們就能合併成這樣. 讓 RMSProp同時具備他們兩種方法的優勢. 不過細心的同學們肯定看出來了, 似乎在 RMSProp 中少了些什麼. 原來是我們還沒把 Momentum合併完全, RMSProp 還缺少了 momentum 中的 這一部分.

W+=-Learning rate*dx 變成了m=b1*m-Learning rate*dx  + v+=dx*dx

v=b1*v+(1-b1)*dx*dx

W+=-Learning rate *dx/√ ̄v

4.Adam 更新方法

鍔犻€熺緇忕綉緇滆緇?(Speed Up Training)

計算m 時有 momentum 下坡的屬性, 計算 v 時有 adagrad 阻力的屬性, 然後再更新引數時 把 m 和 V 都考慮進去. 實驗證明, 大多數時候, 使用 adam 都能又快又好的達到目標, 迅速收斂. 所以說, 在加速神經網路訓練的時候, 一個下坡, 一雙破鞋子, 功不可沒.

相關推薦

pytorch學習筆記——加速神經網路訓練

建造第一個神經網路——加速神經網路訓練 加速神經網路訓練包括下面幾種模式: Momentum AdaGrad RMSProp Adam Stochastic Gradient Descent (SGD) 越複雜的神經網路 , 越多的資料 , 我們需要在訓練神經網路

pytorch學習筆記——Optimizer優化器

建造第一個神經網路——Optimizer優化器 要點 這節內容主要是用 Torch 實踐,中起到的幾種優化器。 下圖就是這節內容對比各種優化器的效果: 偽資料 為了對比各種優化器的效果, 我們需要有一些資料, 今天我們還是自己編一些偽資料, 這批資料是這樣的

pytorch學習筆記——激勵函式Activation

1.什麼是Activation 普通神經網路出來的資料都是一個線性的資料,將輸出來的結果用激勵函式處理。 2.Torch中的激勵函式 import torch import torch.nn.functional as F # 激勵函式都在這,nn是神經網路模組

Tensorflow 學習筆記: 深層神經網路

Tensorflow 學習筆記(二): 深層神經網路 前言 本文是閱讀《TensorFlow:實戰Google深度學習框架》第四章提煉出來的筆記。 同時我在github找到這本書作者提供的配套原始碼,發現和書相比多了一些例子(code),推薦結合書一起使用! 深度學習與深層神

2017CS231n李飛飛深度視覺識別筆記——迴圈神經網路

第十講 迴圈神經網路 課時1 RNN,LSTM,GRU     上一章中討論了CNN的架構有關內容,這一節中將討論有關RNN的內容。     在之前的學習中,提到了一種稱為vanilla的前饋網路

Deep Learning 學習筆記神經網路Python實現

多層神經網路的Python實現。 程式碼先貼上,程式設計的東西不解釋。 程式碼中出現的SupervisedLearningModel、NNLayer和SoftmaxRegression,請參考上一篇筆記:Deep Learning 學習筆記(一)——softmax

TensorFlow學習筆記4——深層神經網路

1 深度學習與深層神經網路 維基百科對深度學習的精確定義為“一類通過多層非線性變換對高複雜性資料建模演算法的合集”。可見深度學習的兩個重要特性:多層和非線性。 1 非線性模型的侷限性 一個線性模型中通過輸入得到輸出的函式被稱為一個線性變換,線性模型的最

PyTorch 學習筆記:transforms的二二個方法

本文擷取自《PyTorch 模型訓練實用教程》,獲取全文pdf請點選:https://github.com/tensor-yu/PyTorch_Tutorial 文章目錄 一、 裁剪——Crop 1.隨機裁剪:transforms.Random

pytorch學習筆記:python 端擴充套件 pytorch

pytorch 雖然提供了很多的 op 使得我們很容易的使用。但是當已有的 op 無法滿足我們的要求的時候,那就需要自己動手來擴充套件。 pytorch 提供了兩種方式來擴充套件 pytorch 的基礎

pytorch學習筆記:fine-tune 預訓練的模型

torchvision 中包含了很多預訓練好的模型,這樣就使得 fine-tune 非常容易。本文主要介紹如何 fine-tune torchvision 中預訓練好的模型。 安裝 pip install torchvision 如何 fine

pytorch學習筆記: DataLoader原始碼閱讀

pytorch 資料載入部分的 介面可以說是現存 深度學習框架中設計的最好的, 給了我們足夠的靈活性。本博文就對 pytorch 的多執行緒載入 模組(DataLoader) 進行原始碼上的註釋。 輸入流水線 pytorch 的輸入流水線的操作順序是這

pytorch學習筆記:詳解 Module 類

Module 是 pytorch 提供的一個基類,每次我們要 搭建 自己的神經網路的時候都要繼承這個類,繼承這個類會使得我們 搭建網路的過程變得異常簡單。 本文主要關注 Module 類的內部是怎麼樣

pytorch學習筆記pytorch 寫程式碼時應該注意

當網路中有 dropout,bn 的時候。訓練的要記得 net.train(), 測試 要記得 net.eval() 在測試的時候 建立輸入 Variable 的時候 要記得 volatile=Tru

如鵬網學習筆記DOM

check 名稱 元素節點 n) mousedown 通過 name 邏輯 css DOM筆記一、DOM簡介   Document Object Model 文檔對象模型   DOM的節點樹模型:整個文檔按照從大到小的節點劃分,每一個內容都算作一個節點   DOM API

Python學習筆記

類型 property 獲取 bsp 構造 屬性 增加 函數類 pro 一、類和構造函數的定義   class 類名(object):    def __init__(self,name,score):      self.name = name      self.sco

Ionic3學習筆記實現夜間模式功能

gpa 效果 app code fff eat ext images provider 本文為原創文章,轉載請標明出處 目錄 創建主題樣式 導入 variables.scss 創建 provider 創建 page 在 App 入口處應用主題 效果圖 1. 創建主題樣式

Elasticsearch學習筆記批量查詢mget、批量增刪改bulk

出錯 color body 換行 nor test 增刪 doc document 一、批量查詢 mget GET /_mget { "docs":[ { "_index":"ecommerce

day5-Python學習筆記常用模塊

stat 結果 fig .get 文件顯示 刪除空文件 conf std 分割 import os# print(os.getcwd())#取當前工作目錄# print(os.chdir("..")) # 更改當前目錄# print(os.getcwd())#取當前工作目

《Qt5 開發與實例第三版學習筆記

fix row tac person als new .cpp exec constrain 1 // 3.5 『綜合實例』 修改用戶資料 2 //main.cpp 3 #include "content.h" 4 #include <QApplic

ASP.NET Core 2 學習筆記視圖

部分 合成 cati 分享 col script text var AC ASP.NET Core MVC中的Views是負責網頁顯示,將數據一並渲染至UI包含HTML、CSS等。並能痛過Razor語法在*.cshtml中寫渲染畫面的程序邏輯。本篇將介紹ASP.NET Co