神经网络——实现MNIST数据集的手写数字识别

本文介绍了使用MNIST手写数字数据集训练神经网络的过程,包括数据预处理、构建目标矩阵、网络设计与训练。通过调整学习率、训练次数和网络结构,提高模型识别正确率。并提供了使用自己手写数字测试模型的方法。

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

由于官网下载手写数字的数据集较慢,因此提供便捷下载地址如下

手写数字的数据集MNIST下载:https://download.youkuaiyun.com/download/gaoyu1253401563/10891997

数据集包含如下:

一、使用小规模数据集进行神经网络的训练和测试

数据集:

              mnist_train_100.csv   :100个样本

              mnist_test_10.csv       :10个样本

1、数据集分析

如下为mnist_train_100.csv开始的2-3行:

    存储数据的文件成为CSV文件,每一个吗值都是由逗号分隔,对于每行(最左边有行号)的数值,开头的第一个在值是标签,即书写 者希望表示的数字,如第一行的 “5”、第二行的 “0”。随后的784个值,由逗号分隔,是手写数字的像素值,像素数组的尺寸是28*28(即784),这784个像素值是手写数字的28*28的图片对应的784个位置的像素值。

注意:正常情况下0指的是黑色,255指的是白色,但是MNIST数据集使用相反的方式表示。

通过以下程序根据数据显示图片。

# 读入手写字体数据集(小数据集:mnist_train_100.csv)
import numpy as np
import matplotlib.pyplot as plt

data_file = open("mnist_dataset/mnist_train_100.csv", 'r')
data_list = data_file.readlines()
data_file.close()

all_values = data_list[1].split(',')
#np.asfarray()函数:返回转换为float类型的数组
image_array = np.asfarray(all_values[1:]).reshape((28,28))
plt.imshow(image_array, cmap = 'Greys', interpolation = 'None')


                            

 

2、数据集中数据的处理

   需要做的第一件事是将输入颜色值从较大的0到255的范围,缩放到较小的0.01到1.0的范围,选择0.01作为范围的最小值,是为了避免0值输入最终会造成权重更新的失败。

scaled_input = (np.asfarray(all_values[1:]) / 255.0 * 0.99) + 0.01
print(scaled_input)

输出结果如下:                             

[0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.208      0.62729412 0.99223529 0.62729412 0.20411765
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.19635294 0.934
 0.98835294 0.98835294 0.98835294 0.93011765 0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.21964706 0.89129412 0.99223529 0.98835294 0.93788235
 0.91458824 0.98835294 0.23129412 0.03329412 0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.04882353 0.24294118 0.87964706
 0.98835294 0.99223529 0.98835294 0.79423529 0.33611765 0.98835294
 0.99223529 0.48364706 0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.64282353 0.98835294 0.98835294 0.98835294 0.99223529
 0.98835294 0.98835294 0.38270588 0.74376471 0.99223529 0.65835294
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.208      0.934
 0.99223529 0.99223529 0.74764706 0.45258824 0.99223529 0.89517647
 0.19247059 0.31670588 1.         0.66223529 0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.19635294 0.934      0.98835294 0.98835294 0.70494118
 0.05658824 0.30117647 0.47976471 0.09152941 0.01       0.01
 0.99223529 0.95341176 0.20411765 0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.15752941 0.65058824
 0.99223529 0.91458824 0.81752941 0.33611765 0.01       0.01
 0.01       0.01       0.01       0.01       0.99223529 0.98835294
 0.65058824 0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.03717647 0.70105882 0.98835294 0.94176471 0.28564706
 0.08376471 0.11870588 0.01       0.01       0.01       0.01
 0.01       0.01       0.99223529 0.98835294 0.76705882 0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.23129412
 0.98835294 0.98835294 0.25458824 0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.99223529 0.98835294 0.76705882 0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.77870588 0.99223529 0.74764706
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       1.         0.99223529
 0.77094118 0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.30505882 0.96505882 0.98835294 0.44482353 0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.99223529 0.98835294 0.58458824 0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.34       0.98835294
 0.90294118 0.10705882 0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.03717647 0.53411765
 0.99223529 0.73211765 0.05658824 0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.34       0.98835294 0.87576471 0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.03717647 0.51858824 0.98835294 0.88352941 0.28564706
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.34       0.98835294 0.57294118 0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.19635294 0.65058824
 0.98835294 0.68164706 0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.34388235 0.99223529
 0.88352941 0.01       0.01       0.01       0.01       0.01
 0.01       0.45258824 0.934      0.99223529 0.63894118 0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.34       0.98835294 0.97670588 0.57682353
 0.19635294 0.12258824 0.34       0.70105882 0.88352941 0.99223529
 0.87576471 0.65835294 0.22741176 0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.34       0.98835294 0.98835294 0.98835294 0.89905882 0.84470588
 0.98835294 0.98835294 0.98835294 0.77094118 0.51470588 0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.11870588 0.78258824
 0.98835294 0.98835294 0.99223529 0.98835294 0.98835294 0.91458824
 0.57294118 0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.10705882 0.50694118 0.98835294
 0.99223529 0.98835294 0.55741176 0.15364706 0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.01       0.01       0.01       0.01
 0.01       0.01       0.0
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值