此系列內容的順序為 keras訓練架構運作 -> 機器學習概念 -> 相關數學概述,是為了提供日後有需要時,可以查閱參考,得以解決問題。其敘述方式與前一系列 [Dot Net Core]圖解系列與常用套件相似,將框架如何運作重點式的參考。
如果要學使用其它API框架,如PyTorch,一樣舉一反三可以很快上手;前提是深度學習如何運作的,還是要去學習探討後,比較有籌碼去舉一反三地融入應用。目前Keras仍有在維護,修正了早期的錯誤,也有不少資源可以參考。
有以下幾類要點要注意:
1. keras API 的使用時的參考
例如有出現此問題:
錯誤程式為:
model.compile(optimizer=
optimizers.get( {"class_name": "rmsprop", "config": {"learning_rate" : "0.001"} } ) ,
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
查閱 15. optimizer 與 learning_rate,有提到class_and_config_for_serialized_keras_object ,得知
"config": {"learning_rate" : "0.001"} 要設定為 "config": {"learning_rate" : 0.001} ,0.001應為數值而非字串。
再看一個問題:
查閱 20. 使用 callbacks.ModelCheckpoint 求最佳模型,model.fit 參數加上 validation_split=0.2 可以修正此錯誤。
而此問題:
查閱 20. 使用 callbacks.ModelCheckpoint 求最佳模型,model.compiler 參數 metrics 陣列中加上 "accuracy" 得以修正。
2. 撰寫機器訓練時要注意的地方
大部分會使用 python來撰寫,但其實任何語言都可以進行機器學習的任務。既然不限任何語言,程式的架構非常重要,關係到是否可以讓成員容易維護,加速開發時間,與方便溝通、管理。專案進行與管理,如同建築大樓,一開始一定是勘察基底與建立框架,如果基底與框架沒處理好,建築是很容易垮的,也影響後續的工程。
要如何達成,推薦要找好的Pattern,以好的設計模式來建構基底,好擴充好融入使得走得長久。 keras 是不錯的框架與介面,就是一個設計的參考。另外物件的容易使用,API化的設計也是非常重要。
3. 建議多多學習數學概念
傳統的程式,能夠搭配使用design pattern 、MVC、micro-service 等方式進行,達成階段動態自動化其實很厲害了,但如果真正讓機器"活起來"學習,讓機器可以被教導,絕對不是單純用人的語言或過去使用的迴圈、判斷式語法就能達成,而是數學。沒有數學,就沒有現在的大樓、交通工具、工廠製造等等,即使搭捷運,火車,在抵達目的地的煞車,都會用到模糊理論;總不能固定的反作用力停下來吧? 這樣被運輸目標一定會損傷損害。
數學是個跳脫目前狀態的捷徑,另外的"哲學"思維,跳躍到另一層次,不同的定理可能造就不同的科技。不要有所侷限,說不定不同的科技就是靠翻轉到另一個定理達成的!
另外,無論面對什麼,就是不設限與謙遜,拿出經驗與耐心,如同去年鐵人系列的最後一篇https://ithelp.ithome.com.tw/articles/10301367 ,把自己當作難纏的陸戰隊,去挑戰未來!