大家好~我開設了“深度學習基礎班”的線上課程,帶領同學從0開始學習全連接和卷積神經網絡,進行數學推導,並且實現可以運行的Demo程序
線上課程資料:
加QQ羣,獲得ppt等資料,與羣主交流討論:106047770
本系列文章爲線上課程的覆盤,每上完一節課就會同步發佈對應的文章
本課程系列文章可進入索引查看:
爲什麼要學習本課
- 爲什麼要重構代碼?
答:方便加入各種不同類型的層到神經網絡中
重構代碼
-
爲了簡單,本節課只考慮全連接層
-
重構的關鍵是定義每層的forward等函數的輸入、輸出爲統一的抽象類型
-
通過泛型來實現類型重載,如支持全連接層和卷積層的forward函數的input參數爲不同的類型(前者爲Vector.t,後者爲Matrix.t)
-
重構後的“構建神經網絡”的僞代碼如下所示:
let networkState = let Network.build(
[
LinearLayer.create(layerData1),
LinearLayer.create(layerData2)
]
)
加入調試日誌
- 爲什麼要加入調試日誌?
答:目前使用DebugUtils來在運行時檢查一些值是否有異常。但是這樣這不夠全面,所以加入調試日誌來打印訓練的每輪中的每層的輸入和輸出,從而方便排查
加入BDD測試
對隱藏層和輸出層進行了BDD測試(行爲驅動測試)
相關的代碼爲:test
代碼實現
- 重構後的入口代碼爲:Main