CSDN - 對 Dropout 的詮釋

  • 組合派 (Ensemble)
        overfitting → 參數量過多 → 找到一個比較瘦的網路可能可以降低 overfitting 的程度 → 手動或使用 Grid-                
        Search? 太慢 → 使用 Dropout 使學習時隨機打斷一些連結 → 可以解決費時的問題,把重要的連結權重增
        加;不重要的減輕 → 重新組合起來後 (Inference phase) 自然會是一個以權重定義後的瘦網路。

  • 動機論 (有豬隊友)
        overfitting →  有人 (參數/連結) 濫竽充數 → 隨機將某些人 (神經元) 分成數組 → 各組學會懂得自立自強 
        → 重新組合後 (Inference phase) 會比原本更強大。


參考連結:



知乎 - BatchNorm 的原理與實戰


  • 背景:
         為什麼神經網路這麼不穩定 → 神經網路各層間的映射頻繁的變換 (Internal Covariate Shift)
  • Internal Covariate Shift 的問題
    • 網路在初期需要透過不斷大幅調整來適應輸入的分布變化
    • 深層網路的梯度消失/爆炸問題使分布更加不穩
  • 解法
         在各層網路中的各特徵軸 (channel) 單獨進行標準化,使其變為分布平均為 0, 變異數為 1 的分布,再加上
         平移與縮放,就可以表示原本的分布。

參考連結:


CSDN - Earlystopping 的使用與技巧


為何要使用 EarlyStopping:繼續訓練會導致測試集準確率下降。
  • 過度擬合
  • 學習率過大導致不收斂
  • 使用 Regulizers 時,Loss 減少未必是準確率上升,可能是 weights 變少而已。

EarlyStopping 可以監控的項目
  • acc, val_acc, loss, val_loss, ...etc 等 loss 與 metrics

有時候要監控的項目不是越小越好 (“min”),這時候要可以手動將 mode 設成 “max”

參考連結:


莫煩 Python - 儲存與載回模型


  • 儲存模型:前面的課程內容已經提過
    • 載回模型:
      • 儲存整個模型的話
                  -> keras.models.load_model(path_to_your_model)
  • 只儲存權重的話
                  -> model = build_model(...)
                  -> model.load_weights(path_to_your_weight_file)

              
參考連結:



Github 原碼:LearningRateScheduler 與 ReduceLR


A. LearningRateScheduler
  1. 在每個 epoch 開始前,得到目前 lr
  2. 根據 schedule function 重新計算 lr,比如 epoch = n 時, new_lr = lr * 0.1
  3. 將 optimizer 的 lr 設定為 new_lr
  4. 根據 shhedule 函式,假設要自訂的話,它應該吃兩個參數:epoch & lr

B. ReduceLR
  1. 在每個 epoch 結束時,得到目前監控目標的數值
  2. 如果目標比目前儲存的還要差的話,wait+1;若否則 wait 設為 0,目前監控數值更新新的數值
  3. 如果 wait >= patient,new_lr = lr * factor,將 optimizer 的 lr 設定為 new_lr,並且 wait 設回 0



參考連結:

CSDN - Keras 自定義 Loss 函數


有時候我們想根據任務調整損失函數,Keras 可以在 compile model 時使用自定義函數。

最常用的方式
  • 自定義函數必須至少要有兩個參數:y_true, y_pred。其他參數則可視狀況自行加入。

較不常用的方式
  • 定義一個 loss_layer
  • 在 call function 中用 self.add_loss 加其加入


  1. 圖像分類 | 深度學習PK傳統機器學習
  2. OpenCV - 直方圖

進階參考資料: 
  1. OpenCV 教學文檔
  2. Udacity free course: Introduction To Computer Vision


  1. Sobel 運算子 wiki 
  2. 基於傳統圖像處理的目標檢測與識別(HOG+SVM附代碼)
  3. 知乎 - 什麼是 SVM
  4. 程式碼範例的來源,裡面用的是 mnist 來跑 

arrow
arrow
    全站熱搜

    tttt 發表在 痞客邦 留言(0) 人氣()