Python 實現深度學習


 

前言

寫在最前, 我把代碼和整理的文檔放在github上了

https://github.com/Leezhen2014/python_deep_learning

 

最近由於疫情被困在家,於是准備每天看點專業知識,准備寫成博客,不定期發布。

博客大概會寫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

前面七篇的代碼和博客已經寫完了,經過整理以后會陸續發布。就這樣吧,加油!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM