Caffe學習(未完)
阿新 • • 發佈:2019-02-06
1. 前言
Caffe是大神賈揚清在加州伯克利大學博士期間開發的深度學習框架,在學界和工業界得到廣泛應用。
Caffe是CNN模型的非常好的框架,方便、易用;torch7是機器學習一個非常好的框架,但是,學習曲線比caffe要陡峭一些。torch7更靈活,能搞定更多的機器學習演算法模型。
2. Caffe上手
- 怎麼在Caffe中配置每一個層的結構: 講的相當詳細,裡面對卷積後的高寬計算我有異議,可以參考4.中的“卷積後長寬計算”。
3. Google Protocol Buffer
我的基於使用者的角度來理解這是一個標準,當大家都遵守這個標準,那麼就可以做通訊協議,可以使語言無關,平臺無關。那麼,它的乾貨部分是Protocol Buffer是一種輕便 高效 的結構化資料儲存格式。
3.1test_iter和test_interval
首先說明一個概念:在caffe中的一次迭代iterration指的是一個batch,而不是一張圖片。
- test_iter: 在測試的時候,需要迭代的次數,即test_iter* batchsize(測試集的)=測試集的大小,測試集batchsize可以在prototx檔案裡設定
- test_interval:interval是區間的意思,所有該引數表示:訓練的時候,每迭代500次就進行一次測試。
caffe在訓練的過程是邊訓練邊測試的。訓練過程中每test_interval次迭代(也就是test_interval*batchsize個訓練樣本參與了計算),計算一次測試誤差。計算一次測試誤差就需要包含所有的測試圖片,這樣可以認為在一個epoch裡,訓練集中的所有樣本都遍歷以一遍,但測試集的所有樣本至少要遍歷一次,至於具體要多少次,也許不是整數次,這就要看程式碼,大致瞭解下這個過程就可以了。
4. 在 Caffe 中如何計算卷積?
- 卷積看成是多個區域性的全連線。
- 卷積後長寬計算(方形):
outputh=imageh+pad−kernelhstride+1
- 上述公式錯誤,感謝朝朝與暮暮指出錯誤
- 正確公式為:
outputw=⌊imagew+2pad−kernelsizestride⌋+1 outputh=⌊imageh+2pad−kernelsizestride⌋+1 - 其中stride大於等於1
- 一般來說下式應整除,如此才能將image的所有資料進行卷積,避免資料丟失
imageworh+2pad−kernelsizestride
- 知乎-賈揚清: 裡回答不是很詳細,但是圖片很生動,關鍵是作者親臨,必須要放上來。
- 如何理解卷積,另外如何理解影象處理中的卷積?: 最佳答案進行了多角度說明,如果對模版、濾波器、卷積核名詞有過了解,看了後可以加深它們共性的認識。
5. 問題彙總(待補充)
5.1. 訓練不收斂,loss居高不下
- 降低學習率。
- 樣本是否充足。
2016.12.13更新
2016.1.4更新
2016.1.13更新,未完待續