人工神经网络在热门的人工智能领域有着很多很好的应用。
在网上也有很多优秀的文章阐述人工神经网络的原理和应用,可以参考以下优秀的文章。
https://blog.csdn.net/leiting_imecas/article/details/60463897
https://blog.csdn.net/sinat_36171246/article/details/71056454?locationNum=1&fps=1
https://www.jianshu.com/p/f69e16df2623
在应用上,python利用keras和TensorFlow可以完成人工神经网络的模型建立和使用。
BP人工神经网络实现预测(分类)的基本过程如下:
1、读取数据
2、keras.models Sequential 和 keras.layers.core Dense Activation 模块使用
3、Sequential建立模型
4、Dense建立层
5、Activation 激活函数
6、compile模型编译
7、fit训练(学习)
8、验证预测
实现部分,首先准备数据,将数据处理为规定类型。
利用BP人工神经网络模型实现代码如下:
#使用人工神经网络模型
from keras.models import Sequential
from keras.layers.core import Dense,Activation
model=Sequential()
#输入层
model.add(Dense(10,input_dim=len(x2[0]))) #input_dim 特征数
model.add(Activation("relu"))
#输出层
model.add(Dense(1,input_dim=1))
model.add(Activation("sigmoid"))
#模型的编译
model.compile(loss="binary_crossentropy",optimizer="adam",class_mode="binary") #损失函数
#训练
model.fit(x2,y2,nb_epoch=200,batch_size=100) #训练次数epoch p大小,调整准确率
#预测分类
rst=model.predict_classes(x).reshape(len(x))
- 利用BP人工神经网络实现手写体数字识别;
#数据的读取与整理 #加载数据 def datatoarray(fname): arr=[] fh=open(fname) for i in range(0,32): thisline=fh.readline() for j in range(0 , 32): arr.append(int(thisline[j])) return arr #建立一个函数取出labels def seplabel(fname): filestr=fname.split(".")[0] label=int(filestr.split("_")[0]) return label #建立训练数据 def traindata(): labels=[] trainfile=os.listdir("./traindata") num=len(trainfile) trainarr=npy.zeros((num,1024)) for i in range(num): thisfname=trainfile[i] thislabel=seplabel(thisfname) labels.append(thislabel) trainarr[i,]=datatoarray("./traindata/"+thisfname) return trainarr,labels trainarr,labels=traindata() xf=pda.DataFrame(trainarr) yf=pda.DataFrame(labels) tx2=xf.as_matrix().astype(int) ty2=yf.as_matrix().astype(int) #使用人工神经网络模型 from keras.models import Sequential from keras.layers.core import Dense,Activation model=Sequential() #输入层 model.add(Dense(10,input_dim=1024)) model.add(Activation("relu")) #输出层 model.add(Dense(1,input_dim=1)) model.add(Activation("sigmoid")) #模型的编译 model.compile(loss="mean_squared_error",optimizer="adam") #训练 model.fit(tx2,ty2,nb_epoch=10000,batch_size=6) #预测分类 #根据上述训练数据一样,可将测试数据相同处理后利用predict——classes方法预测分类