人工神经网络(ANN)BP算法应用(手写体数字识别部分代码)

人工神经网络在热门的人工智能领域有着很多很好的应用。

在网上也有很多优秀的文章阐述人工神经网络的原理和应用,可以参考以下优秀的文章。

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方法预测分类

     

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个使用python写的基于神经网络(ANN)模型的手写体数字识别代码: ```python import numpy as np import sklearn from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier # 加载手写体数字数据集 digits = load_digits() X, y = digits.data, digits.target # 数据集划分为训练集和测试集(80%训练集,20%测试集) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建ANN模型,并设置参数 model = MLPClassifier(hidden_layer_sizes=(256,), activation='relu', solver='adam', max_iter=1000) # 训练模型 model.fit(X_train, y_train) # 在测试集上进行预测 y_pred = model.predict(X_test) # 计算准确率 accuracy = np.mean(y_pred == y_test) print("准确率:", accuracy) ``` 在代码中,首先我们通过`load_digits()`函数加载了一个手写体数字数据集,其中包含一些手写体数字图像数据和对应的标签。然后我们将数据集分为训练集和测试集,其中80%的数据用于训练模型,20%的数据用于模型的测试。接下来,我们创建了一个包含一个隐藏层(256个神经元)的ANN模型。使用`fit()`函数对模型进行训练,并使用`predict()`函数对测试集进行预测。最后,我们计算预测结果的准确率并输出。 这段代码演示了一个简单的手写体数字识别ANN模型,可以用于识别手写数字的图像。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值