日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

深度学习中的 Batch_Size,以及learning rate参数理解(跑pytorch代码时遇到的问题)

發布時間:2024/1/8 pytorch 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习中的 Batch_Size,以及learning rate参数理解(跑pytorch代码时遇到的问题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在訓練和測試的時候遇到的問題,

_error_if_any_worker_fails()

RuntimeError: DataLoader worker (pid 25637) is killed by signal: Killed.

?

以及,

RuntimeError: $ Torch: not enough memory: you tried to allocate

經過研究,修改batch_size參數就不報錯了。將batch_size改小一點,甚至是1都可以。

(PS:也許是我電腦真的不行,改成1了還是跑不動,準備申請一臺好一點的電腦)

?

batch size 參數

批尺寸Batch_Size為每次訓練樣本個數;

迭代次數=樣本總數/批尺寸;

https://www.zhihu.com/question/32673260

在合理范圍內,增大 Batch_Size 有何好處?

  • 內存利用率提高了,大矩陣乘法的并行化效率提高
  • 跑完一次epoch(全數據集)所需要的迭代次數減小,對于相同數據量的處理速度進一步加快
  • 在一定范圍內,一般來說batch size越大,其確定的下降方向越準,引起的訓練震蕩越小

盲目增大batch size 有什么壞處

  • 內存利用率提高了,但是內存容量可能撐不住了
  • 跑完一次epoch(全數據集)所需要的迭代次數減少,但是想要達到相同的精度,其所花費的時間大大增加了,從而對參數的修正也就顯得更加緩慢
  • batch size 大到一定的程度,其確定的下降方向已經基本不再變化

fine tuning

http://bealin.github.io/2016/10/23/Caffe%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88%97%E2%80%94%E2%80%943Fine-tuning%E5%BE%AE%E8%B0%83%E7%BD%91%E7%BB%9C/

fine tuning 流程

  • 準備數據集(包括訓練數據和測試數據)
  • 計算數據集的均值文件,因為某個特定領域的圖像均值文件會跟ImageNet上的數據均值不太一樣
  • 修改網絡最后一層的輸出類別數,以及最后一層網絡的名稱,加大最后一層的參數學習速率
  • 調整solver的配置參數
  • 加載預訓練模型的參數,啟動訓練

fine tuning 參數調整

一般fine tuning的方式,都是把learning rate(solver.prototxt)調低(為原來的十分之一),之后把訓練模型的最后一層或者兩層的學習速率調大一點————這就相當于,把模型的前面那些層的學習調低,使得參數更新的慢一點以達到微調的目的。但有可能會導致整個收斂速度變慢,因此還需要增加最大迭代次數。

需要調節的參數(solver.prototxt)主要包括:
base_lr:初始學習率,這個是非常重要的一個參數;momentum:一般設置為0.9,如果base_lr特別低的話也可以設置為0.99或0.999等 weight_decay:默認0.005,可以適當調整,類似于正則化項;
lr_policy:學習率變化策略,常見的有fixed(固定), inv,step等,詳細的說明見http://stackoverflow.com/questions/30033096/what-is-lr-policy-in-caffe
最后如果loss出現不收斂的情況,可以嘗試一下以下幾種方法:

  • 調小solver里的初始學習率
  • 數據量小的話,可以只對最后幾層的權重進行調整,前面權重保持不變,即把前面的學習率置為0,一定程度上限制了激活的大小,這樣就限制了某一過大的誤差的影響,這樣可以避免迭代方向出現過大的變化。
  • 在GPU可承受的范圍內調大batch_size的大小(賈揚清的解釋:理論上batch小是不會影響收斂的。小batch主要的問題是在FC層的計算可能會不是很efficient,如果實在無計可施,可以試試 ;網上其他博主的解釋:batch比較小 ,導致樣本覆蓋面過低,產生了非常多的局部極小點,在步長和方向的共同作用下,導致數據產生了震蕩,導致了不收斂 )

總結

以上是生活随笔為你收集整理的深度学习中的 Batch_Size,以及learning rate参数理解(跑pytorch代码时遇到的问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。