caffe模型訓練batch size設定

2021-08-18 17:54:34 字數 1118 閱讀 9240

batch_size(批尺寸)是機器學習中乙個重要引數,涉及諸多矛盾,下面逐一展開。

batch 的選擇,首先決定的是下降的方向。如果資料集比較小,完全可以採用全資料集 ( full batch learning )的形式,這樣做至少有 2 個好處:其一,由全資料集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。其二,由於不同權重的梯度值差別巨大,因此選取乙個全域性的學習率很困難。 full batch learning 可以使用 rprop 只基於梯度符號並且針對性單獨更新各權值。

對於更大的資料集,以上 2 個好處又變成了 2 個壞處:其一,隨著資料集的海量增長和記憶體限制,一次性載入所有的資料進來變得越來越不可行。其二,以 rprop 的方式迭代,會由於各個 batch 之間的取樣差異性,各次梯度修正值相互抵消,無法修正。這才有了後來 rmsprop 的妥協方案。

當然可以,這就是批梯度下降法(mini-batches learning)。因為如果資料集足夠充分,那麼用一半(甚至少得多)的資料訓練算出來的梯度與用全部資料訓練出來的梯度是幾乎一樣的。

這裡跑乙個 lenet 在 mnist 資料集上的效果。mnist 是乙個手寫體標準庫,我使用的是 theano 框架。這是乙個 python 的深度學習庫。安裝方便(幾行命令而已),除錯簡單(自帶 profile),gpu / cpu 通吃,官方教程相當完備,支援模組十分豐富(除了 cnns,更是支援 rbm / dbn / lstm / rbm-rnn / sda / mlps)。在其上層有 keras 封裝,支援 gru / jzs1, jzs2, jzs3 等較新結構,支援 adagrad / adadelta / rmsprop / adam 等優化演算法。如圖所示:

執行結果如上圖所示,其中絕對時間做了標么化處理。執行結果與上文分析相印證:

歡迎一起討論。

本文**感謝原作者的付出和分享。

caffe模型訓練小技巧

一 學習率調整 乙個對於排程學習率的建議 如果在驗證集上效能不再增加就讓學習率除以2或者5,然後繼續,學習率會一直變得很小,到最後就可以停止訓練了 二 finetun微調 finetune的過程相當於繼續訓練,跟直接訓練的區別是初始化的時候 a.直接訓練是按照網路定義指定的方式初始化 如高斯隨機初始...

在caffe上訓練網路模型總結

這段時間使用遷移學習的方法,使用vgg16模型訓練自己的資料集,現將在訓練過程中遇到的問題記錄下來 1 不改變vgg16模型的網路結構,來訓練自己的資料集。這部分都是照著網上一步一步來,沒有什麼大的問題,就是要特別要注意base lr 學習率的設定 這個設定的不對在訓練過程中會出現不收斂的情況。2 ...

caffe訓練流程

l 準備訓練資料流程如下 用指令碼生成好label.txt標籤檔案,格式如下 檔名 空格 標籤 把所有放在乙個目錄下後cd到執行如下命令 convert imageset flags rootfolder listfile db name 其中db name後面還可以跟一些可選的引數設定,具體有哪些...