python構造神經網絡(neurolab)

 

  人類的大腦很擅長於鑑別和識別物體,咱們但願機器也能夠作一樣的事情。一個神經網絡就是一個模仿人類大腦激發學習過程的框架。神經網絡被用於從數據中識別隱藏的模式。正如全部的學習算啊,神經網絡處理的是數字。所以,若是想要實現處理現實世界中任何包含圖像、文字、傳感器等的任務,就必須將其轉換成數值形式,而後將其輸入到一個神經網絡。咱們能夠用神經網絡作分類,聚類,生成以及其餘相關的任務。python

  神經網絡由一層層神經元組成。這些神經元模擬人類大腦中的生物神經元。每一層都是一組獨立的神經元,這些神經元與相鄰層的神經元相連。輸入層對應咱們提供的輸入數據,而輸出層包括了咱們指望的輸出結果。輸入層與輸出層之間的層統稱爲隱藏層。若是設計的神經網絡包括多個隱藏層,那麼經過這些層的自我訓練得到更大的精確度。算法

  假如咱們但願神經網絡按照咱們的要求來對數據進行分類。爲了使神經網絡完成相應的任務,須要提供帶標籤的訓練數據。神經網絡將經過優化成本函數來訓練本身。咱們不停的迭代,知道錯誤率降低到一個咱們可以接受的閥值。那麼深度神經網絡是什麼?深度神經網絡是由多個隱藏層組成的神經網絡。通常來書這就屬於深度學習的範疇。深度學習用於研究這些神經網絡,而這些神經網絡由多個層次的多層結構組成。網絡

  python中提供了神經網絡的第三發庫NeuroLab庫,你能夠經過pip install NeuroLab安裝適合你的python環境的版本,也能夠去官網上去下載源碼安裝。接下來咱們就經過NeuroLab實現一個深層神經網絡:框架

 1 import numpy as np
 2 import neurolab as nl
 3 import matplotlib.pyplot as plt
 4 
 5 #生成訓練數據
 6 min_value=-12
 7 max_value=12
 8 num_datapoints=90
 9 
10 x=np.linspace(min_value,max_value,num_datapoints)
11 
12 y=2*np.square(x)+7
13 y/=np.linalg.norm(y)
14 
15 data = x.reshape(num_datapoints,1)
16 labels=y.reshape(num_datapoints,1)
17 
18 #畫出輸入數據
19 plt.figure()
20 plt.scatter(data,labels)
21 plt.xlabel('X-axis')
22 plt.ylabel('Y-axis')
23 plt.title('Input data')
24 plt.show()
25 
26 #定義一個深度神經網絡,帶有兩個隱藏層,每一個隱藏層由10個神經元組成,輸出層由一個神經元組成
27 multilayer_net = nl.net.newff([[min_value,max_value]],[10,10,10,10,1])
28 
29 #設置訓練算法爲梯度降低法
30 multilayer_net.trainf = nl.train.train_gd
31 
32 #訓練網絡
33 error = multilayer_net.train(data,labels,epochs=800,show=100,goal=0.01)
34 
35 #用訓練數據運行該網絡,預測結果
36 predicted_output=multilayer_net.sim(data)
37 
38 #畫出訓練偏差結果
39 plt.figure()
40 plt.plot(error)
41 plt.xlabel('Number of epoches')
42 plt.ylabel('Error')
43 plt.title('Training error progress')
44 plt.show()
45 
46 #畫出預測結果
47 x2=np.linspace(min_value,max_value,num_datapoints*2)
48 y2=multilayer_net.sim(x2.reshape(x2.size,1)).reshape(x2.size)
49 y3=predicted_output.reshape(num_datapoints)
50 
51 plt.figure()
52 plt.plot(x2,y2,'-',x,y,'.',x,y3,'p')
53 plt.title('Ground truth va predicted output')
54 plt.show()

運行代碼能夠看到咱們實現了一個深度神經網絡,該神經網絡包含兩個隱藏層,每一個隱藏層包含10個神經元,而且使用梯度降低算法訓練。能夠看到3副圖像:函數

第一幅圖像顯示輸入數據圖像:學習

第二幅圖像顯示訓練偏差進程:優化

第三幅圖像顯示神經網絡的輸出:spa

相關文章
相關標籤/搜索