深度學習基礎課:重構並加入調試日誌和測試代碼

大家好~我開設了“深度學習基礎班”的線上課程,帶領同學從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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章