本次我们利用拟利用三层神经网络来识别手写数字,利用http://pjreddie.com/projects/mnist-in-csv/提供的训练数字和测试数字,来进行网络的训练。隐藏层设置为100个节点,学习率设置为0.3,并将全部数据集训练5次。最终得到正确率为

import numpy
import scipy.special
class network:def __init__(self,input_nodes,hidden_nodes,output_nodes,learn):self.inodes=input_nodesself.hnodes=hidden_nodesself.onodes=output_nodesself.lr=learnself.w_ih=(numpy.random.normal(0.0,pow(self.hnodes,-0.5),(self.hnodes,self.inodes)))self.w_ho=(numpy.random.normal(0.0,pow(self.onodes,-0.5),(self.onodes,self.hnodes)))def sigmod_function(self,x):return scipy.special.expit(x)def query(self,input_list):input=numpy.array(input_list,ndmin=2).Thidden_input=numpy.dot(self.w_ih,input)hidden_out=self.sigmod_function(hidden_input)outre_input=numpy.dot(self.w_ho,hidden_out)outre_output=self.sigmod_function(outre_input)return outre_outputdef train(self,input_list,output_list):input=numpy.array(input_list,ndmin=2).Ttarget=numpy.array(output_list,ndmin=2).Thidden_input=numpy.dot(self.w_ih,input)hidden_out=self.sigmod_function(hidden_input)outre_input=numpy.dot(self.w_ho,hidden_out)outre_output=self.sigmod_function(outre_input)output_errors=target-outre_outputhidden_errors=numpy.dot(self.w_ho.T,output_errors)self.w_ho+=self.lr*numpy.dot(output_errors*outre_output*(1-outre_output),hidden_out.T)self.w_ih+=self.lr*numpy.dot(hidden_errors*hidden_out*(1-hidden_out),input.T)
input_nodes=784
output_nodes=10
hidden_nodes=100
learn=0.3
n=network(input_nodes,hidden_nodes,output_nodes,learn)
f=open("D:\\bpnetwork\\mnist_train.csv",'r')
train_data=f.readlines()
f.close()
for record in train_data:all_values=record.split(',')input_list=(numpy.asfarray(all_values[1:])/255.0*0.99)+0.01output_list=numpy.zeros(output_nodes)+0.01output_list[int(all_values[0])]=0.99n.train(input_list,output_list)
f=open("D:\\bpnetwork\\mnist_test.csv",'r')
test_data=f.readlines()
f.close()
result=[]
for record in test_data:data=record.split(',')test_per=(numpy.asfarray(data[1:])/255.0*0.99)+0.01label_result=numpy.argmax(n.query(test_per))label_correct=int(data[0])if label_result==label_correct:result.append('1')else:result.append('0')
length=len(result)
i=0
cnt=0while i<length:if result[i]=='1':cnt+=1i+=1
print(cnt/length)

正确率如图所示:

偷得浮生半日闲:手写数字的识别相关推荐

  1. linux手写数字识别opencv,opencv实现KNN手写数字的识别

    人工智能是当下很热门的话题,手写识别是一个典型的应用.为了进一步了解这个领域,我阅读了大量的论文,并借助opencv完成了对28x28的数字图片(预处理后的二值图像)的识别任务. 预处理一张图片: 首 ...

  2. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Functional)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 下边两张 ...

  3. DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测

    DL之CNN:利用卷积神经网络算法(2→2,基于Keras的API-Sequential)利用MNIST(手写数字图片识别)数据集实现多分类预测 目录 输出结果 设计思路 核心代码 输出结果 1.10 ...

  4. DL之DNN:利用DNN【784→50→100→10】算法对MNIST手写数字图片识别数据集进行预测、模型优化

    DL之DNN:利用DNN[784→50→100→10]算法对MNIST手写数字图片识别数据集进行预测.模型优化 导读 目的是建立三层神经网络,进一步理解DNN内部的运作机制 目录 输出结果 设计思路 ...

  5. Dataset之Handwritten Digits:Handwritten Digits(手写数字图片识别)数据集简介、安装、使用方法之详细攻略

    Dataset之Handwritten Digits:Handwritten Digits(手写数字图片识别)数据集简介.安装.使用方法之详细攻略 目录 Handwritten Digits数据集的简 ...

  6. TF之NN:利用DNN算法(SGD+softmax+cross_entropy)对mnist手写数字图片识别训练集(TF自带函数下载)实现87.4%识别

    TF之NN:利用DNN算法(SGD+softmax+cross_entropy)对mnist手写数字图片识别训练集(TF自带函数下载)实现87.4%识别 目录 输出结果 代码设计 输出结果 代码设计 ...

  7. TF:基于CNN(2+1)实现MNIST手写数字图片识别准确率提高到99%

    TF:基于CNN(2+1)实现MNIST手写数字图片识别准确率提高到99% 导读 与Softmax回归模型相比,使用两层卷积的神经网络模型借助了卷积的威力,准确率高非常大的提升. 目录 输出结果 代码 ...

  8. TF:利用是Softmax回归+GD算法实现MNIST手写数字图片识别(10000张图片测试得到的准确率为92%)

    TF:利用是Softmax回归+GD算法实现MNIST手写数字图片识别(10000张图片测试得到的准确率为92%) 目录 设计思路 全部代码 设计思路 全部代码 #TF:利用是Softmax回归+GD ...

  9. Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集的下载(基于python语言根据爬虫技术自动下载MNIST数据集)

    Dataset之MNIST:MNIST(手写数字图片识别+ubyte.gz文件)数据集的下载(基于python语言根据爬虫技术自动下载MNIST数据集) 目录 数据集下载的所有代码 1.主文件 mni ...

  10. TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率

    TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率 目录 输出结果 设计代码 输出结果 设计代码 #TF之LoR:基于tensorflow实现手写数字图片识别准 ...

最新文章

  1. 从“人肉扩缩容”到云原生容量,90 后程序员的进化
  2. java的初始化顺序
  3. js经典试题之ES6
  4. 粤港澳大湾区菜篮子-哲商对话·林裕豪:从玉农业谋定大健康
  5. 有意思的前端函数面试题
  6. 计算机视觉与深度学习 | 基于Faster R-CNN的目标检测(深度学习Matlab代码)
  7. android 申请usb权限,USB 权限申请流程
  8. 虚拟机CentOS7开机报错:you might must to save “/run/initramfs/rdsosreport.txt“ to a USB stick or /boot
  9. desc 枚举类型id_想让代码更优雅?Mybatis类型处理器了解一下!
  10. Android 自定义progressDialog实现
  11. qq音乐linux版本下载地址,Linux版QQ音乐Cocomusic 2.0.2的安装及使用报告
  12. 聊聊如何对员工做绩效考核
  13. Android-MeasureSpec那些事 1
  14. @PropertySource 注解的使用
  15. 盛会再临,2018 中国大数据技术大会(BDTC)首曝日程及议题
  16. Python开发案例:制作二维码
  17. Kinect2.0 UI交互 InteractionManager脚本
  18. 大龙嘚吧嘚之“C#中的类型转换”(前面是铺垫,可以直接跳到最后)
  19. (转)25款实用的桌面版博客编辑器
  20. 丰田发布“大眼萌”机器人,只有手掌大小!

热门文章

  1. matlab分组形式条形图,Matplotlib带标签的分组条形图
  2. 写一个获取非行间样式的函数
  3. python绘图黄金螺旋_教案-for循环应用之“黄金螺旋-信息技术高中
  4. 矩阵计算在计算机科学中,开发者必读:计算机科学中的线性代数
  5. sprintf函数与strcpy和strcat 用sprintf函数进行字符串某些操作 ————— 开开开山怪
  6. Spring 七大模块介绍
  7. RTR4 拾遗(一)-- 图形学的B面
  8. pmp考试【5】emv期望货币价值计算
  9. awb数据怎么计算_AWB 介绍 原理 和算法
  10. 块数据3.0:秩序互联网与主权区块链