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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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))
        self.lr=learning_rate
        #定义激活函数sigmoid
       
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值