识别MNIST数据集之(二):用Python实现神经网络

本文详细介绍使用神经网络对MNIST手写数字数据集进行分类的过程。包括神经网络的正向计算、Softmax计算、梯度下降及反向传播等核心概念。并通过Python代码实现了神经网络模型。

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

在这篇文章当中,我们将会用根据MNIST的数据集,跟大家介绍神经网络进行分类的基本原理和方法。

1.神经网络的正向计算

如果我们把神经网络当作一个黑盒来看,它的结构大概是这样的:

输入(层):一张图片

计算过程 : 神经网络

输出 (层): 这张图片属于每种分类的概率(或者说是分数)

现在我们来解释一下

输入是一张图片,也就是这张图片的各个像素的值,向量化了之后的向量,对于MNIST来说,就是一个( 1, 28*28 )的向量。通过训练,我们要让这个神经网络自己提取这些像素值的某种特征,这样当出现一个从来没有见过的图像的时候,也能根据识别的特征进行分类

计算过程:

众所周知,神经单元的基本结构是这样的

表示成向量,就是这样的

W1 = [ w1, w2, w3 ]

假设我们输入的图片向量是I = [ i1, i2, i3 ]

那我们计算出的分数其实是 S = W1 * I = w1 * i1 + w2 * i2 + w3 * i3

但是这样的表现力是不够的,还需要加入偏移量 B1 = [ b1, b2, b3 ]

所以我们计算出的分数其实就是S = W1 * I + B1

虽然这是最最简化的版本,但是基本的东西就是这样,很简单

根据现在的这个结构,我们只能算出一个分数,但是我们要对一个输入的图像算出多个分数,才知道该把它分成那一类,我么你现在要对权值矩阵做一定的调整

原来我们的权值是

W1 = [ w1, w2, w3 ]

现在我们的权值调整为

w11w21w31w12w22w32w13w23w33

输入仍然是

I=[i1,
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值