手把手教你搭建BP神经网络,并实现手写mnist手写数字识别

本文详细介绍了如何利用BP神经网络进行手写数字识别,从数学基础到推导过程,再到Python代码实现。通过训练和测试集,实现了对MNIST数据集的识别,最终达到了0.9722的识别准确率。
摘要由CSDN通过智能技术生成

一、BP神经网络(back propagation neual network)过程原理:
1、数学基础:矩阵乘法、高数、不多做赘述直接上公式
2、推倒过程如下图片所示:
在这里插入图片描述
二、BP神经网络基于python的实现
代码:
可以直接使用,需要下载手写数字识别图像的文件,训练集:http://www.pjreddie.com/media/files/mnist_train.csv
测试集:http://www.pjreddie.com/media/files/mnist_train.csv ,下载完成后只需要在file操作时改成自己的文件路径
即可运行,得到训练的最终结果

import numpy
import scipy.special
import matplotlib.pyplot
#创建神经网络类,以便于实例化成不同的实例
class NeuralNetwork:
    def __init__(self,input_nodes,hidden_nodes,output_nodes,learning_rate):
    	#初始化输入层、隐藏层、输出层的节点个数、学习率
        self.inodes=input_nodes
        self.hnodes=hidden_nodes
        self.onodes=output_nodes
        #定义输入层与隐藏层之间的初始权重参数
        self.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)
  • 18
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
搭建bp神经网络实现数字识别的代码可以分为以下几个步骤: 步骤一:准备数据集 首先,我们需要准备数字的数据集。一个常用的数据集是MNIST数字数据集,包含60000个训练样本和10000个测试样本。每个样本都是一个28x28像素的灰度图像,对应着0到9之间的数字。 步骤二:数据预处理 对于神经网络的输入,我们需要将每个图像转换成28x28=784维的向量,并对向量进行归一化处理,将像素值映射到0到1之间的范围。 步骤三:搭建神经网络模型 使用Python编代码,导入所需的库(如numpy、matplotlib等)。定义神经网络的结构,包括输入层、隐藏层和输出层的节点数,并初始化参数(权重和偏置)。使用激活函数(如sigmoid函数)来引入非线性特性。 步骤四:前向传播 实现前向传播算法,将输入样本通过网络进行计算,得到输出。 步骤五:计算损失函数 定义损失函数,常用的是均方误差(mean squared error)或交叉熵损失函数。通过比较网络的输出和实际标签,计算出损失值。 步骤六:反向传播 实现反向传播算法,根据损失值和激活函数的导数,计算每个参数的梯度(即参数的变化方向)。 步骤七:参数更新 使用梯度下降算法,通过不断地更新参数,使得损失函数不断减小,进而提高网络的准确率。 步骤八:训练模型 使用训练集对神经网络模型进行训练。将数据分为小批次进行训练,每次训练都进行前向传播、损失计算和反向传播。 步骤九:测试模型 使用测试集对训练好的模型进行测试,计算模型的准确率。 步骤十:优化和改进 根据测试结果进行优化和改进,可以调整神经网络的结构、学习率和迭代次数等参数,以提高模型的性能。 通过以上步骤,我们可以搭建一个基于bp神经网络数字识别代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值