初探深度學習使用 Keras part 2



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 來跑 

留言

Google Search

推薦內容橫式

本月熱門文章

鋼鐵韓粉站出來 讓韓國瑜每天唱歌喝酒好不好

黑金? 不得不提前總統馬英九大姊馬以南 吳敦義 林益世

香港事件回顧 2020/08/10 前眾志成員周庭及壹傳媒創辦人黎智英被捕 今日累計10人被捕

捐款支持義大利靈醫會 一起來幫助他們 就像當初教士來台灣協助我們一樣 !!

從台灣省長宋楚瑜到台北市長柯文哲,可以說 宋楚瑜 2.0 就是柯文哲

「港版國安法」,法律將會放在《基本法》附件三在港實施,而非就《基本法》23條立法

除了兒福聯盟 還有其他團體是努力守護孩子們 芥菜種會愛心育幼院 及忠義育幼院 都需要大家幫忙

兒福聯盟到底多有錢?收捐款為什麼不做事情而是定存?王育敏不解釋嗎?

北京故宮首訪,一窺清宮秘史 大玉兒 & 甄嬛

這個網誌中的熱門文章

Android應用開發豆知識:利用 adb 安裝 apk 到裝置上

Android 中文輸入法 官方版 ! Gboard - Google 鍵盤 開始支援注音輸入啦

Google Play 推薦Android app 誠徵App排行榜

北京故宮首訪,一窺清宮秘史 大玉兒 & 甄嬛

[家教][社會觀察] 建中教我的事 沒上建中被父母親折磨? 在建中到底是如何 ...

[FAANG面試] Amazon/AWS 領導力準則 14 Amazon Leadership Principles

Acer ICONIA Smart S300 更新後越來越好 Acer也有出手機?!

[品質控制] 什麼是Sanity test ? 軟體測試常見名詞整理 包含不同部門的測試人員負責範圍

新鮮人找工作:職場名詞解釋 AE FAE Pre-sales Post-sales