MNIST数据集上手写数字识别准确率是不是能达到100

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MNIST数据集上手写数字识别准确率是不是能达到100相关的知识,希望对你有一定的参考价值。

参考技术A 其实就是python怎么读取binnary file
mnist的结构如下,选取train-images

TRAINING SET IMAGE FILE (train-images-idx3-ubyte):
[offset] [type] [value] [description]
0000 32 bit integer 0x00000803(2051) magic number
0004 32 bit integer 60000 number of images
0008 32 bit integer 28 number of rows
0012 32 bit integer 28 number of columns
0016 unsigned byte ?? pixel
0017 unsigned byte ?? pixel
........
xxxx unsigned byte ?? pixel

也就是之前我们要读取4个 32 bit integer

试过很多方法,觉得最方便的,至少对我来说还是使用
struct.unpack_from()

filename = 'train-images.idx3-ubyte'
binfile = open(filename , 'rb')
buf = binfile.read()

先使用二进制方式把文件都读进来

index = 0
magic, numImages , numRows , numColumns = struct.unpack_from('>IIII' , buf , index)
index += struct.calcsize('>IIII')

然后使用struc.unpack_from
'>IIII'是说使用大端法读取4个unsinged int32

然后读取一个图片测试是否读取成功

im = struct.unpack_from('>784B' ,buf, index)
index += struct.calcsize('>784B')

im = np.array(im)
im = im.reshape(28,28)

fig = plt.figure()
plotwindow = fig.add_subplot(111)
plt.imshow(im , cmap='gray')
plt.show()

'>784B'的意思就是用大端法读取784个unsigned byte

完整代码如下

import numpy as np
import struct
import matplotlib.pyplot as plt

filename = 'train-images.idx3-ubyte'
binfile = open(filename , 'rb')
buf = binfile.read()

index = 0
magic, numImages , numRows , numColumns = struct.unpack_from('>IIII' , buf , index)
index += struct.calcsize('>IIII')

im = struct.unpack_from('>784B' ,buf, index)
index += struct.calcsize('>784B')

im = np.array(im)
im = im.reshape(28,28)

fig = plt.figure()
plotwindow = fig.add_subplot(111)
plt.imshow(im , cmap='gray')
plt.show()

只是为了测试是否成功所以只读了一张图片

以上是关于MNIST数据集上手写数字识别准确率是不是能达到100的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch基于 LSTM 的手写数字识别(MNIST)

深度学习笔记:基于Keras库的MNIST手写数字识别

图像分类基于PyTorch搭建LSTM实现MNIST手写数字体识别(单向LSTM,附完整代码和数据集)

【Pytorch+torchvision】MNIST手写数字识别(代码附最详细注释)

基于 Tensorflow 2.x 实现多层卷积神经网络,实践 MNIST 手写数字识别

基于 Tensorflow 2.x 实现多层卷积神经网络,实践 MNIST 手写数字识别