python构造神经⽹络(neurolab)
⼈类的⼤脑很擅长于鉴别和识别物体,我们希望机器也可以做同样的事情。⼀个神经⽹络就是⼀个模仿⼈类⼤脑激发学习过程的框架。神经⽹络被⽤于从数据中识别隐藏的模式。正如所有的学习算啊,神经⽹络处理的是数字。因此,如果想要实现处理现实世界中任何包含图像、⽂字、传感器等的任务,就必须将其转换成数值形式,然后将其输⼊到⼀个神经⽹络。我们可以⽤神经⽹络做分类,聚类,⽣成以及其他相关的任务。
神经⽹络由⼀层层神经元组成。这些神经元模拟⼈类⼤脑中的⽣物神经元。每⼀层都是⼀组独⽴的神经元,这些神经元与相邻层的神经元相连。输⼊层对应我们提供的输⼊数据,⽽输出层包括了我们期望的输出结果。输⼊层与输出层之间的层统称为隐藏层。如果设计的神经⽹络包括多个隐藏层,那么通过这些层的⾃我训练获得更⼤的精确度。
假如我们希望神经⽹络按照我们的要求来对数据进⾏分类。为了使神经⽹络完成相应的任务,需要提供带标签的训练数据。神经⽹络将通过优化成本函数来训练⾃⼰。我们不停的迭代,知道错误率下降到⼀个我们能够接受的阀值。那么深度神经⽹络是什么?深度神经⽹络是由多个隐藏层组成的神经⽹络。⼀般来书这就属于深度学习的范畴。深度学习⽤于研究这些神经⽹络,⽽这些神经⽹络由多个层次的多层结构组成。
python中提供了神经⽹络的第三发库NeuroLab库,你可以通过pip install NeuroLab安装适合你的python环境的版本,也可以去官⽹上去下载源码安装。接下来我们就通过NeuroLab实现⼀个深层神经⽹络:
1import numpy as np
2import neurolab as nl
3import 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/=(y)
14
15 data = x.reshape(num_datapoints,1)
16 shape(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.newff([[min_value,max_value]],[10,10,10,10,1])
28
29#设置训练算法为梯度下降法
30 ainf = ain_gd
31
32#训练⽹络
33 error = ain(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.shape(x2.size,1)).reshape(x2.size)
49 y3=shape(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副图像:
第⼀幅图像显⽰输⼊数据图像:
第⼆幅图像显⽰训练误差进程:
第三幅图像显⽰神经⽹络的输出:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论