人类的大脑很擅长于鉴别和识别物体,咱们但愿机器也能够作一样的事情。一个神经网络就是一个模仿人类大脑激发学习过程的框架。神经网络被用于从数据中识别隐藏的模式。正如全部的学习算啊,神经网络处理的是数字。所以,若是想要实现处理现实世界中任何包含图像、文字、传感器等的任务,就必须将其转换成数值形式,而后将其输入到一个神经网络。咱们能够用神经网络作分类,聚类,生成以及其余相关的任务。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