Python 實現深度學習


前言


最近因爲疫情被困在家,因而準備天天看點專業知識,準備寫成博客,不按期發佈。算法

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

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

相關文章
相關標籤/搜索