深度學習中batch_size

Batch size調整和epoch/iteration的關系

訓練數據集總共有1000個樣本。若batch_size=10,那么訓練完全體樣本集需要100次迭代,1次epoch。
訓練樣本10000條,batchsize設置為20,將所有的訓練樣本在同一個模型中訓練5遍,則epoch=5,batchsize=20, iteration=10000/20=500(即迭代次數表示有多個個batch會過模型)

分布式訓練時的batch_size設置:需要將batch_size/num_process。divide the batch size by the number of replicas in order to maintain the overall batch size of 需要的值.[PyTorch:模型訓練-分布式訓練]

Batch size設置經驗

1 一定條件下,batchsize越大訓練效果越好。但是batchsize越大,內存gpu消耗越大。梯度累加則實現了batchsize的變相擴大,如果accumulation_steps為8,則batchsize ‘變相’ 擴大了8倍,是解決顯存受限的一個不錯的trick。

[使用梯度累加的batch訓練函數]

2 經驗法則是,如果mini-batch size加倍,那么學習率就加倍。
在這里插入圖片描述

[神經網絡中 warmup 策略為什么有效;有什么理論解釋么? - 知乎]

在前面“如果mini-batch size加倍,那么學習率就加倍"中,我們的假設在什么時候可能不成立呢?兩種情況:

1)在訓練的開始階段,模型權重迅速改變
2)mini-batch size較小,樣本方差較大

第一種情況很好理解,可以認為,剛開始模型對數據的“分布”理解為零,或者是說“均勻分布”(當然這取決于你的初始化);在第一輪訓練的時候,每個數據點對模型來說都是新的,模型會很快地進行數據分布修正,如果這時候學習率就很大,極有可能導致開始的時候就對該數據“過擬合”,后面要通過多輪訓練才能拉回來,浪費時間。當訓練了一段時間(比如兩輪、三輪)后,模型已經對每個數據點看過幾遍了,或者說對當前的batch而言有了一些正確的先驗,較大的學習率就不那么容易會使模型學偏,所以可以適當調大學習率。這個過程就可以看做是warmup。那么為什么之后還要decay呢?當模型訓到一定階段后(比如十個epoch),模型的分布就已經比較固定了,或者說能學到的新東西就比較少了。如果還沿用較大的學習率,就會破壞這種穩定性,用我們通常的話說,就是已經接近loss的local optimal了,為了靠近這個point,我們就要慢慢來。

第二種情況其實和第一種情況是緊密聯系的。在訓練的過程中,如果有mini-batch內的數據分布方差特別大,這就會導致模型學習劇烈波動,使其學得的權重很不穩定,這在訓練初期最為明顯,最后期較為緩解(所以我們要對數據進行scale也是這個道理)。

說明,在上面兩種情況下,我們并不能單純地成倍增長lr η? =kη。要么改變學習率增長方法,要么設法解決上面兩個問題。

[神經網絡中 warmup 策略為什么有效;有什么理論解釋么?]

所以就有了下面的warmup策略和學習率衰減方法:

學習率 warm-up 策略

訓練神經網絡時,在初始使用較大學習率而后期切換為較小學習率是一種廣為使用的做法。而 warmup 策略則與上述 scheme 有些矛盾,warmup 需要在訓練最初使用較小的學習率來啟動,并很快切換到大學習率而后進行常見的 decay,那么最開始的這一步 warmup 為什么有效呢?

warmup_lr 的初始值是跟訓練預料的大小成反比的,也就是說訓練預料越大,那么warmup_lr 初值越小,隨后增長到我們預設的超參 initial_learning_rate相同的量級,再接下來又通過 decay_rates 逐步下降。

這樣做的原因前面已經說明了,還有什么好處?

1)這樣可以使得學習率適應不同的訓練集合size實驗的時候經常需要先使用小的數據集訓練驗證模型,然后換大的數據集做生成環境模型訓練。

2)即使不幸學習率設置得很大,那么也能通過warmup機制看到合適的學習率區間(即訓練誤差先降后升的關鍵位置附近),以便后續驗證。

原文:https://blog.csdn.net/pipisorry/article/details/109192443

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/64462.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/64462.shtml
英文地址,請注明出處:http://en.pswp.cn/web/64462.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Redis 數據類型全解析:基礎與進階應用場景

前言:Redis 是一個高性能的內存數據庫,支持多種數據類型,能夠高效處理各種場景的數據存儲和操作。 以下是Redis數據類型的數據結構及其應用場景的詳細說明: 基礎數據類型 1. 字符串 (String) 底層數據結構 Simple Dynamic Stri…

評分模型在路網通勤習慣分析中的應用——提出問題(1)

1、問題的由來、目標和意義 最近一段時間和公司其它業務部門討論時,發現一個有趣的交通路網問題,車輛從S點行駛到V點共用時40分鐘,這段時間內路網中的卡口攝像頭識別到了車輛通過的信息。如下圖所示: 設計師需要通過這些有限的路…

leetcode 面試經典 150 題:刪除有序數組中的重復項

鏈接刪除有序數組中的重復項題序號26題型數組解題方法雙指針難度簡單熟練度????? 題目 給你一個 非嚴格遞增排列 的數組 nums ,請你 原地 刪除重復出現的元素,使每個元素 只出現一次 ,返回刪除后數組的新長度。元素的 相對順序 應該保…

提升生產力工具

VSCODE插件 干貨:用好這13款VSCode插件,工作效率提升10倍 - 程序員檸檬 - 博客園 Sourcetrail Sourcetrail 是一個開源且免費的源碼閱讀工具,以其強大的代碼導航、可視化及跨平臺支持特性,成為開發者理解復雜代碼庫的得力助手。…

什么是 Git Hooks?

在團隊開發中,當成員提交代碼的描述信息不符合約定提交規范的時候,需要阻止當前的提交,而要實現這個目的,我們就需要先來了解一個概念,叫做 Git hooks,即Git 在執行某個事件之前或之后進行一些其他額外的操…

Go語言方法和接收器類型詳解

Go語言方法和接收器類型詳解 1. 方法接收器類型 1.1 值接收器 值接收器方法不會改變接收器的狀態,因為Go語言會在調用時復制接收器的值。因此,任何對接收器成員變量的修改都只會影響副本,而不會影響原始結構體實例。 type Person struct …

MS SQL Server 實戰 排查多列之間的值是否重復

目錄 需求 范例運行環境 數據樣本設計 功能實現 上傳EXCEL文件到數據庫 SQL語句 小結 需求 在日常的應用中,排查列重復記錄是經常遇到的一個問題,但某些需求下,需要我們排查一組列之間是否有重復值的情況。比如我們有一組題庫數據&am…

抖去推碰一碰系統技術源碼/open SDK轉發技術開發

抖去推碰一碰系統技術源碼/open SDK轉發技術開發 碰一碰智能系統#碰碰卡系統#碰一碰系統#碰一碰系統技術源頭開發 碰碰卡智能營銷系統開發是一種集成了人工智能和NFC技術的工具,碰碰卡智能營銷系統通過整合數據分析、客戶關系管理、自動化營銷活動、多渠道整合和個…

redis優化

在高并發、高性能、高可用系統中,Redis 的優化至關重要。以下是一些在面試中可以詳細說明的 Redis 優化策略,以及具體的實踐經驗和技術亮點: 1. 數據模型與結構設計優化 使用合適的數據結構 :根據業務需求選擇合適的 Redis 數據結…

WEB攻防-通用漏洞-文件上傳-js驗證-MIME驗證-user.ini-語言特征

目錄 定義 1.前端驗證 2.MIME驗證 3.htaccess文件和.user. ini 4.對內容進行了過濾,做了內容檢測 5.[ ]符號過濾 6.內容檢測php [] {} ; 7.()也被過濾了 8.反引號也被過濾 9.文件頭檢測 定義 文件上傳漏洞是指攻擊者上傳了一個可執行文件(如木馬…

探索與決策的完美結合:Actor-Critic 方法及其衍生算法

引言 在強化學習領域,如何讓智能體學會做出最優決策是一個關鍵問題。Actor-Critic 方法提供了一種高效的解決方案,它結合了策略梯度(Actor)和值函數(Critic)的優點,使智能體能夠在復雜的環境中…

未來網絡技術的新征程:5G、物聯網與邊緣計算(10/10)

一、5G 網絡:引領未來通信新潮流 (一)5G 網絡的特點 高速率:5G 依托良好技術架構,提供更高的網絡速度,峰值要求不低于 20Gb/s,下載速度最高達 10Gbps。相比 4G 網絡,5G 的基站速度…

數據交易和聯邦學習的背景下的安全屬性

數據交易和聯邦學習的背景下的安全屬性 在數據交易和聯邦學習的背景下,安全屬性對于保護數據隱私、確保系統可靠性和維護交易公平性至關重要。以下將分析文章中涉及的安全屬性以及分析這些屬性的目的。 涉及的安全屬性 雙向認證:文章雖未明確提及傳統意義上的雙向認證機制,…

QWT 之 QwtPlotDirectPainter直接繪制

QwtPlotDirectPainter 是 Qwt 庫中用于直接在 QwtPlot 的畫布上繪制圖形的一個類。它提供了一種高效的方法來實時更新圖表,特別適合需要頻繁更新的數據可視化應用,例如實時數據流的顯示。 使用 QwtPlotDirectPainter 的主要優勢在于它可以繞過 QwtPlot 的…

改變HTML元素的方式有哪些?如何在HTML中添加/替換或刪除元素?

使用 JavaScript 的 DOM 操作 如果想要修改元素的樣式,就要先獲取元素之后再進行下一步操作 獲取元素:可以使用等方法獲取到需要操作的 HTML 元素。 document.getElementById() document.getElementsByClassName() document.getElementsByTagName() d…

SuperMap iClient3D for Cesium等高線標注

kele 前言 在三維地形分析中,等高線分析是一種非常重要的分析方法,它能直觀的表達出地形的高低起伏特征,在三維系統中受到廣泛應用。在SuperMap iClient3D for Cesium中,等高線分析是前端GPU分析,能夠分析并渲染出等高…

從 x86 到 ARM64:CPU 架構的進化與未來

在計算機發展的歷史長河中,x86、x64 和 ARM64 這三大主流 CPU 架構各自書寫了輝煌的篇章。它們不僅代表了技術的進步,更承載著無數創新者的夢想與努力。 x86:從 16 位到 32 位的輝煌之路 誕生與崛起 1978 年,英特爾(…

紅魔電競PadPro平板解BL+ROOT權限-KernelSU+LSPosed框架支持

紅魔Padpro設備目前官方未開放解鎖BL,也閹割了很多解鎖BL指令,造成大家都不能自主玩機。此規則從紅魔8開始,就一直延續下來,后續的機型大概率也是一樣的情況。好在依舊有開發者進行適配研究,目前紅魔PadPro平板&#x…

TCP Analysis Flags 之 TCP Out-Of-Order

前言 默認情況下,Wireshark 的 TCP 解析器會跟蹤每個 TCP 會話的狀態,并在檢測到問題或潛在問題時提供額外的信息。在第一次打開捕獲文件時,會對每個 TCP 數據包進行一次分析,數據包按照它們在數據包列表中出現的順序進行處理。可…

<數據集>風力發電機損傷識別數據集<目標檢測>

數據集下載鏈接 <數據集>風力發電機損傷識別數據集<目標檢測>https://download.csdn.net/download/qq_53332949/90187097數據集格式:VOCYOLO格式 圖片數量:2527張 標注數量(xml文件個數):252…