计算机毕业设计中用python神经网络编程实现手写数字识别
本文实例为大家分享了python实现手写数字识别的具体代码,供大家参考,具体内容如下
import numpyimport scipy.special#import matplotlib.pyplotclass neuralNetwork:def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate):self.inodes=inputnodesself.hnodes=hiddennodesself.onodes=outputnodesself.lr=learningrateself.wih=numpy.random.normal(0.0,pow(self.hnodes,-0.5),(self.hnodes,self.inodes))self.who=numpy.random.normal(0.0,pow(self.onodes,-0.5),(self.onodes,self.hnodes))self.activation_function=lambda x: scipy.special.expit(x)passdef train(self,inputs_list,targets_list):inputs=numpy.array(inputs_list,ndmin=2).Ttargets=numpy.array(targets_list,ndmin=2).Thidden_inputs=numpy.dot(self.wih,inputs)hidden_outputs=self.activation_function(hidden_inputs)final_inputs=numpy.dot(self.who,hidden_outputs)final_outputs=self.activation_function(final_inputs)output_errors=targets-final_outputshidden_errors=numpy.dot(self.who.T,output_errors)self.who+=self.lr*numpy.dot((output_errors*final_outputs*(1.0-final_outputs)),numpy.transpose(hidden_outputs))self.wih+=self.lr*numpy.dot((hidden_errors*hidden_outputs*(1.0-hidden_outputs)),numpy.transpose(inputs))passdef query(self,input_list):inputs=numpy.array(input_list,ndmin=2).Thidden_inputs=numpy.dot(self.wih,inputs)hidden_outputs=self.activation_function(hidden_inputs)final_inputs=numpy.dot(self.who,hidden_outputs)final_outputs=self.activation_function(final_inputs)return final_outputsinput_nodes=784hidden_nodes=100output_nodes=10learning_rate=0.1n=neuralNetwork(input_nodes,hidden_nodes,output_nodes,learning_rate)training_data_file=open(r"C:\Users\lsy\Desktop\nn\mnist_train.csv","r")training_data_list=training_data_file.readlines()training_data_file.close()#print(n.wih)#print("")epochs=2for e in range(epochs):for record in training_data_list:all_values=record.split(",")inputs=(numpy.asfarray(all_values[1:])/255.0*0.99)+0.01targets=numpy.zeros(output_nodes)+0.01targets[int(all_values[0])]=0.99n.train(inputs,targets)#print(n.wih)#print(len(training_data_list))#for i in training_data_list:# print(i)test_data_file=open(r"C:\Users\lsy\Desktop\nn\mnist_test.csv","r")test_data_list=test_data_file.readlines()test_data_file.close()scorecard=[]for record in test_data_list:all_values=record.split(",")correct_lable=int(all_values[0])inputs=(numpy.asfarray(all_values[1:])/255.0*0.99)+0.01outputs=n.query(inputs)label=numpy.argmax(outputs)if(label==correct_lable):scorecard.append(1)else:scorecard.append(0)scorecard_array=numpy.asarray(scorecard)print(scorecard_array)print("")print(scorecard_array.sum()/scorecard_array.size)#all_value=test_data_list[0].split(",")#input=(numpy.asfarray(all_value[1:])/255.0*0.99)+0.01#print(all_value[0])#image_array=numpy.asfarray(all_value[1:]).reshape((28,28))#matplotlib.pyplot.imshow(image_array,cmap="Greys",interpolation="None")#matplotlib.pyplot.show()#nn=n.query((numpy.asfarray(all_value[1:])/255.0*0.99)+0.01)#for i in nn :# print(i)```《python神经网络编程》中代码,仅做记录,以备后用。 ```pythonimage_file_name=r"*.JPG"img_array=scipy.misc.imread(image_file_name,flatten=True)img_data=255.0-img_array.reshape(784)image_data=(img_data/255.0*0.99)+0.01图片对应像素的读取。因训练集灰度值与实际相反,故用255减取反。import numpyimport scipy.special#import matplotlib.pyplotimport scipy.miscfrom PIL import Imageclass neuralNetwork:def __init__(self,inputnodes,hiddennodes,outputnodes,learningrate):self.inodes=inputnodesself.hnodes=hiddennodesself.onodes=outputnodesself.lr=learningrateself.wih=numpy.random.normal(0.0,pow(self.hnodes,-0.5),(self.hnodes,self.inodes))self.who=numpy.random.normal(0.0,pow(self.onodes,-0.5),(self.onodes,self.hnodes))self.activation_function=lambda x: scipy.special.expit(x)passdef train(self,inputs_list,targets_list):inputs=numpy.array(inputs_list,ndmin=2).Ttargets=numpy.array(targets_list,ndmin=2).Thidden_inputs=numpy.dot(self.wih,inputs)hidden_outputs=self.activation_function(hidden_inputs)final_inputs=numpy.dot(self.who,hidden_outputs)final_outputs=self.activation_function(final_inputs)output_errors=targets-final_outputshidden_errors=numpy.dot(self.who.T,output_errors)self.who+=self.lr*numpy.dot((output_errors*final_outputs*(1.0-final_outputs)),numpy.transpose(hidden_outputs))self.wih+=self.lr*numpy.dot((hidden_errors*hidden_outputs*(1.0-hidden_outputs)),numpy.transpose(inputs))passdef query(self,input_list):inputs=numpy.array(input_list,ndmin=2).Thidden_inputs=numpy.dot(self.wih,inputs)hidden_outputs=self.activation_function(hidden_inputs)final_inputs=numpy.dot(self.who,hidden_outputs)final_outputs=self.activation_function(final_inputs)return final_outputsinput_nodes=784hidden_nodes=100output_nodes=10learning_rate=0.1n=neuralNetwork(input_nodes,hidden_nodes,output_nodes,learning_rate)training_data_file=open(r"C:\Users\lsy\Desktop\nn\mnist_train.csv","r")training_data_list=training_data_file.readlines()training_data_file.close()#print(n.wih)#print("")#epochs=2#for e in range(epochs):for record in training_data_list:all_values=record.split(",")inputs=(numpy.asfarray(all_values[1:])/255.0*0.99)+0.01targets=numpy.zeros(output_nodes)+0.01targets[int(all_values[0])]=0.99n.train(inputs,targets)#image_file_name=r"C:\Users\lsy\Desktop\nn\1000-1.JPG"'''img_array=scipy.misc.imread(image_file_name,flatten=True)img_data=255.0-img_array.reshape(784)image_data=(img_data/255.0*0.99)+0.01#inputs=(numpy.asfarray(image_data)/255.0*0.99)+0.01outputs=n.query(image_data)label=numpy.argmax(outputs)print(label)'''#print(n.wih)#print(len(training_data_list))#for i in training_data_list:# print(i)test_data_file=open(r"C:\Users\lsy\Desktop\nn\mnist_test.csv","r")test_data_list=test_data_file.readlines()test_data_file.close()scorecard=[]total=[0,0,0,0,0,0,0,0,0,0]rightsum=[0,0,0,0,0,0,0,0,0,0]for record in test_data_list:all_values=record.split(",")correct_lable=int(all_values[0])inputs=(numpy.asfarray(all_values[1:])/255.0*0.99)+0.01outputs=n.query(inputs)label=numpy.argmax(outputs)total[correct_lable]+=1if(label==correct_lable):scorecard.append(1)rightsum[correct_lable]+=1else:scorecard.append(0)scorecard_array=numpy.asarray(scorecard)print(scorecard_array)print("")print(scorecard_array.sum()/scorecard_array.size)print("")print(total)print(rightsum)for i in range(10):print((rightsum[i]*1.0)/total[i])#all_value=test_data_list[0].split(",")#input=(numpy.asfarray(all_value[1:])/255.0*0.99)+0.01#print(all_value[0])#image_array=numpy.asfarray(all_value[1:]).reshape((28,28))#matplotlib.pyplot.imshow(image_array,cmap="Greys",interpolation="None")#matplotlib.pyplot.show()#nn=n.query((numpy.asfarray(all_value[1:])/255.0*0.99)+0.01)#for i in nn :# print(i)
计算机毕业设计中用python神经网络编程实现手写数字识别相关推荐
- 【零基础】从零开始学神经网络《python神经网络编程》——手写数字识别实战
文章目录 前言 一.机器学习是什么,深度学习是什么? 二.对NN,CNN,RNN,GNN,GAN的名词解释 三.详细介绍神经网络(NN) 1.认识神经网络 2.神经元 3.激活函数 4.权重--连接的 ...
- python手写数字识别实验报告_python神经网络编程实现手写数字识别
本文实例为大家分享了python实现手写数字识别的具体代码,供大家参考,具体内容如下 import numpy import scipy.special #import matplotlib.pypl ...
- Python神经网络编程:手写数字的数据集MNIST
识别人的笔迹这个问题相对复杂,也非常模糊,因此这是一种检验人工智能的理想挑战.这不像进行大量数字相乘那样明确清晰. 让计算机准确区分图像中包含的内容,有时也称之为图像识别问题.科学家对这个问题进行了几 ...
- Python(TensorFlow框架)实现手写数字识别系统
手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...
- Python TensorFlow框架 实现手写数字识别系统
手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...
- MATLAB实现数字识别系统,基于人工神经网络的MATLAB手写数字识别系统
<基于人工神经网络的MATLAB手写数字识别系统>由会员分享,可在线阅读,更多相关<基于人工神经网络的MATLAB手写数字识别系统(8页珍藏版)>请在人人文库网上搜索. 1.基 ...
- 深蓝学院第二章:基于全连接神经网络(FCNN)的手写数字识别
如何用全连接神经网络去做手写识别??? 使用的是jupyter notebook这个插件进行代码演示.(首先先装一个Anaconda的虚拟环境,然后自己构建一个自己的虚拟环境,然后在虚拟环境中安装ju ...
- 【TensorFlow-windows】(四) CNN(卷积神经网络)进行手写数字识别(mnist)
主要内容: 1.基于CNN的mnist手写数字识别(详细代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_64. ...
- PyTorch入门一:卷积神经网络实现MNIST手写数字识别
先给出几个入门PyTorch的好的资料: PyTorch官方教程(中文版):http://pytorch123.com <动手学深度学习>PyTorch版:https://github.c ...
最新文章
- Codeforces Round #650 (Div. 3)(A-F1)题解
- 【WP7】页面过渡效果
- Activity的使用(七):activity的返回值
- Matlab中基本统计量的函数
- const pointer
- 报名倒计时 | 挣脱流量束缚,社交电商的未来在哪里?
- Linux 下gedit编辑器的使用
- 现代制造工程课堂笔记06-集成电路制造工程
- 天地与我并存/万物与我为一 2
- 电脑公司win11旗舰版32位镜像v2021.07
- c#怎么拟合函数得到参数_吴恩达老师课程笔记系列第32节 -正则化之代价函数(2)...
- C#的COM接口定义细则
- SSM项目使用Idea打war包
- VMware view client for ipad 测试
- atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99
- 记录下qcharts绘制曲线遇到的坑
- oracle存货管理系统,存货管理系统的功能模块有哪些?
- OAI搭建 eNB(2018-09最新版)
- Android 获取wifi列表
- Ping 1000个包看丢跑率