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