python神经网络训练_python构造神经网络(neurolab)

人类的大脑很擅长于鉴别和识别物体,我们希望机器也可以做同样的事情。一个神经网络就是一个模仿人类大脑激发学习过程的框架。神经网络被用于从数据中识别隐藏的模式。正如所有的学习算啊,神经网络处理的是数字。因此,如果想要实现处理现实世界中任何包含图像、文字、传感器等的任务,就必须将其转换成数值形式,然后将其输入到一个神经网络。我们可以用神经网络做分类,聚类,生成以及其他相关的任务。

神经网络由一层层神经元组成。这些神经元模拟人类大脑中的生物神经元。每一层都是一组独立的神经元,这些神经元与相邻层的神经元相连。输入层对应我们提供的输入数据,而输出层包括了我们期望的输出结果。输入层与输出层之间的层统称为隐藏层。如果设计的神经网络包括多个隐藏层,那么通过这些层的自我训练获得更大的精确度。

假如我们希望神经网络按照我们的要求来对数据进行分类。为了使神经网络完成相应的任务,需要提供带标签的训练数据。神经网络将通过优化成本函数来训练自己。我们不停的迭代,知道错误率下降到一个我们能够接受的阀值。那么深度神经网络是什么?深度神经网络是由多个隐藏层组成的神经网络。一般来书这就属于深度学习的范畴。深度学习用于研究这些神经网络,而这些神经网络由多个层次的多层结构组成。

python中提供了神经网络的第三发库NeuroLab库,你可以通过pip install NeuroLab安装适合你的python环境的版本,也可以去官网上去下载源码安装。接下来我们就通过NeuroLab实现一个深层神经网络:

1225061-20180323143249697-131388808.png

1 importnumpy as np2 importneurolab as nl3 importmatplotlib.pyplot as plt4

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_gd31

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副图像:

第一幅图像显示输入数据图像:

1225061-20180323143705473-827906730.png

第二幅图像显示训练误差进程:

1225061-20180323143757190-9140406.png

第三幅图像显示神经网络的输出:

1225061-20180323143831040-916465923.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值