1. 程式人生 > >零基礎小白學python,大牛三步教你做python神經網路!

零基礎小白學python,大牛三步教你做python神經網路!

零基礎,手把手教你第一個神經網路,只需三步!

這篇文章只是為你掃清障礙

程式碼還是要自己打一遍,才會發現各種報錯。

引數要自己除錯一遍。才能體會神經網路的神奇。

注意:需要學習資料視訊書籍的;

新增小編學習交流群943752371即可。

準備工作:

1、第一個人工神經網路實現目標:

識別數字,讓計算機學會識別如下數字

零基礎小白學python,大牛三步教你做python神經網路!

 

2、資料集:

https://pjreddie.com/projects/mnist-in-csv/

需要下載train set和test set兩個資料集。

資料分析:每一行代表一個手寫數字。每行第一列是這個數字的值,從第二列開始代表畫素值。

3、程式語言python,程式設計工具:jupyter notebook

安裝免費的anaconda,安裝後開啟jupyter notebook會跳出網頁,在網頁對話方塊裡輸入語句。

神經網路原理:

參見之前的文章。吳恩達教你入門神經網路 - 今宵的文章 - 知乎

https://zhuanlan.zhihu.com/p/49854976

正式動手:

把大象裝冰箱需要幾步?只需三步!

一、搭建模型

1、python程式設計通用第一步:引入各種需要的庫

這裡只需要3個庫。Numpy是數值計算必備庫,scipy是需要呼叫裡面一個函式,matplotlib是畫相簿

import numpy

import scipy.special

import matplotlib.pyplot

%matplotlib inline

2、模型框架:三個函式寫出神經網路框架

def init(self,inputnodes,hiddennodes,outputnodes,learningrate):設定神經網路引數,包含輸入層節點數、隱藏節點數、輸出層節點數和學習率

注意init左右2邊是2條下劃線,python裡叫魔法方法,某些情況下會自動呼叫這個函式。

def train(self,inputs_list,targets_list):——訓練函式,輸入和輸出2個引數

def query(self,inputs_list):——查詢函式,輸入1個引數

3、 補全函式:給函式寫具體功能。參見具體語句。

零基礎小白學python,大牛三步教你做python神經網路!

 

零基礎小白學python,大牛三步教你做python神經網路!

 

零基礎小白學python,大牛三步教你做python神經網路!

 

二、 訓練模型

1、 設定神經網路引數

零基礎小白學python,大牛三步教你做python神經網路!

 

寫出語句只是開始,調引數才是神經網路的重點,通過調整引數,可以讓模型結果更好

可以實驗不同的節點數、學習率,看看正確率會怎麼改變,感受引數的改變對模型輸出結果的影響。

2、訓練資料匯入

零基礎小白學python,大牛三步教你做python神經網路!

 

第一次匯入時可以選取小一點的資料集,比如1000個數據,原始資料匯入跑一次要花10多分鐘,不方便除錯。

可以用len() 語句檢視匯入語句是否成功,匯入了多少行語句。

我匯入語句比較順利,匯入失敗可能是檔名寫錯(比如沒寫字尾),或者資料夾放的不對。

3、 用資料訓練神經網路

耗時較長,還看不到結果,要耐心等待。

零基礎小白學python,大牛三步教你做python神經網路!

 

三、測試模型

1、測試資料匯入:

零基礎小白學python,大牛三步教你做python神經網路!

 

這裡訓練資料和測試資料要分開,否則訓練出神經網路起不到作用。就像平時做作業都對,但考試時不一定考出高分。考的內容要和平時作業不一樣才能驗證水平。

2、 附加:檢視神經網路訓練結果和實際資料的區別

這一步是最有成就感的一步。

零基礎小白學python,大牛三步教你做python神經網路!

 

看看圖片是什麼資料,神經網路判斷是什麼數字。這裡神經網路輸出10個數字,從0開始算,拿個數字最大表示判斷是拿個數。比如這張圖,第6個數據最大,表示神經網路判斷這個數字是5(因為從0開始算)。

3、 如何檢視神經網路的正確率?

用迴圈算出每個值和正確值比較

零基礎小白學python,大牛三步教你做python神經網路!

 

零基礎小白學python,大牛三步教你做python神經網路!

 

我這個模型的正確率是88.8%,1000個數據訓練出的正確率還可以。可以用全量30000個數據再訓練一次,最高的正確率是95%

4、 後續玩法

可以檢視哪個數神經網路判斷錯了:比如這張圖是5,神經網路判斷為1了,可以看到輸出結果比較接近,1的數值比5大了一點點。神經網路判斷這個影象1、像2又像5。

零基礎小白學python,大牛三步教你做python神經網路!

 

可以嘗試改變各種引數,追求最大的正確率,並畫出引數和正確率的關係。

可以嘗試自己手寫一個數字,把資料畫素化,讓神經網路判斷

附:完整程式碼參見https://github.com/makeyourownneuralnetwork/makeyourownneuralnetwork

參考文獻:《python神經網路程式設計》

如果覺得有用,請點個贊,讓我知道寫的對你有幫助。