1. 程式人生 > >Caffe學習(未完)

Caffe學習(未完)

1. 前言

Caffe是大神賈揚清在加州伯克利大學博士期間開發的深度學習框架,在學界和工業界得到廣泛應用。
Caffe是CNN模型的非常好的框架,方便、易用;torch7是機器學習一個非常好的框架,但是,學習曲線比caffe要陡峭一些。torch7更靈活,能搞定更多的機器學習演算法模型。

2. Caffe上手

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+padkernelhstride+1
    • 上述公式錯誤,感謝朝朝與暮暮指出錯誤
    • 正確公式為:
      • outputw=imagew+2padkernelsizestride+1
      • outputh=imageh+2padkernelsizestride+1
      • 其中stride大於等於1
      • 一般來說下式應整除,如此才能將image的所有資料進行卷積,避免資料丟失imageworh+2padkernelsizestride
  • 知乎-賈揚清: 裡回答不是很詳細,但是圖片很生動,關鍵是作者親臨,必須要放上來。
  • 如何理解卷積,另外如何理解影象處理中的卷積?: 最佳答案進行了多角度說明,如果對模版、濾波器、卷積核名詞有過了解,看了後可以加深它們共性的認識。

5. 問題彙總(待補充)

5.1. 訓練不收斂,loss居高不下

  • 降低學習率。
  • 樣本是否充足。

2016.12.13更新
2016.1.4更新
2016.1.13更新,未完待續