深度學習基礎課:重構并加入調試日志和測試代碼
大家好~我開設了“深度學習基礎班”的線上課程,帶領同學從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
浙公網安備 33010602011771號