zoukankan      html  css  js  c++  java
  • 人工神经网络(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方法预测分类
  • 相关阅读:
    小程序:全局配置(pages、windows、tabBar)
    小程序:(创建项目、目录结构、页面的生命周期、路由)
    CSS:定位(定位的叠放次序、定位的特性)
    CSS:定位(静态、相对、绝对、固定、粘性)
    CSS:清除浮动(额外标签法、父级添加overflow、伪元素法、双伪元素法)
    CSS:浮动(左浮动、右浮动)
    验证码
    JFreeChart
    css:css3(圆角边框、盒子阴影、文字阴影)
    jvm:字节码执行流程
  • 原文地址:https://www.cnblogs.com/hecxx/p/11959846.html
Copyright © 2011-2022 走看看