最近因爲疫情被困在家,因而準備天天看點專業知識,準備寫成博客,不按期發佈。算法
博客大概會寫5~7篇,主要是「解剖」一些深度學習的底層技術。關於深度學習,計算機專業的人多少都會了解,知道Conv\Pool的過程,也看過論文,作過實驗或是解決方案。在寫的各類卷積網路 時候,有沒有問問本身:這些網絡究竟是怎麼「運做」起來的?若是本身要實現一個具有基本功能的神經網絡應該怎麼去實現?網絡
知道事物的表面現象,不知事物的本質及其產生的緣由是一件很可悲的事情,正如魯迅所說:What I cannot create, I do not understand. 只有親自實踐去創造一個東西,纔算真正弄懂一個問題。函數
本着「知其然,知其因此然」的目的,會盡量的用Python庫和基本的數學知識,建立經典的深度學習網絡。學習
每篇的計劃以下:測試
第一篇介紹numpy庫和matplotlib庫、讀寫二進制的方法、pkl等。這些知識會在後面用到,在本篇的最後會以mnist數據集爲例,建立處理手寫體圖片的函數,供後使用。設計
第二篇介紹感知機。用感知機實現邏輯門、用多層感知機實現複雜邏輯門。orm
第三篇神經網絡的設計與實現。分爲上下兩部分:圖片
3.1篇增長神經網絡的forward。實現激活函數、全鏈接層的計算、輸出層。最後用mnist數據集測試forwarld是否正確;深度學習
3.2篇增長神經網絡的backward。實現損失函數、梯度、學習算法。最後用mnist數據集測試神經網絡的訓練。博客
第四篇引入計算圖的思想,用計算圖的方式實現乘法層、加法層和激活層。最後用mnist數據集測試這些簡單層。
第四篇添加optimization模塊。設計實現SGD,momentum,學習率的衰減,adam。 最後用mnist數據集做對比。
第五篇增長一些處理過擬合的方法。實現droupout,權值衰減,。用mnist數據集測試效果
第六篇增長batch-normalization功能。用mnist數據集作測試效果;
第七篇增長conv和pool功能。實現一個lenet-5
前面七篇的代碼和博客已經寫完了,通過整理之後會陸續發佈。就這樣吧,加油!