神经网络MNIST数据集下载

  [复制链接]
查看: 1102|回复: 7

该用户从未签到

0

好友

479

主题

12

精华

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
1352
经验
35
学豆
98982

灌水之王分享达人至尊VIP荣耀VIP论坛元老

发表于 2017-6-13 22:45:06 | 显示全部楼层 |阅读模式
先就业后付费
MNIST数据集解析官网一探
  • MNIST数据集是一个手写体数据集,简单说就是一堆这样东西
  • MNIST的官网地址是 MNIST; 通过阅读官网我们可以知道,这个数据集由四部分组成,分别是
    ;也就是一个训练图片集,一个训练标签集,一个测试图片集,一个测试标签集;我们可以看出这个其实并不是普通的文本文件或是图片文件,而是一个压缩文件,下载并解压出来,我们看到的是二进制文件,其中训练图片集的内容部分如此

    这些二进制数据如何解释呢?在这里我们只针对官网的说法,对训练图片集和训练标签集进行解说,测试集是一样的道理。
  • 针对训练标签集,官网上陈述有

    官网说法,训练集是有60000个用例的,也就是说这个文件里面包含了60000个标签内容,每一个标签的值为0到9之间的一个数;回到我们的训练标签集上,按上面说的,我们先解析每一个属性的含义,offset代表了字节偏移量,也就是这个属性的二进制值的偏移是多少;type代表了这个属性的值的类型;value代表了这个属性的值是多少;description是对这个的说明;所以呢,这里对上面的进行一下说明,它的说法是“从第0个字节开始有一个32位的整数,它的值是0x00000801,它是一个魔数;从第4个字节开始有一个32位的整数,它的值是60000,它代表了数据集的数量;从第8个字节开始有一个unsigned byte,它的值是??,是一个标签值….”;我们现在针对我们看到的文件进行解说,看图

    首先我们知道用sublime打开这个文件(是解压过的),是用十六进制表示的,也就是说里面的每一个数字代表了四个位,两个数字代表了一个字节;我们首先看到偏移量为0字节处0000 0801它就是代表了魔数,它的值为0000 0801,这里补充说一下什么是魔数,其实它就是一个校验数,用来判断这个文件是不是MNIST里面的train-labels.idx1-ubyte文件;接着往下看偏移量为4字节处0000 ea60,我们知道按照上面说过的这个应该是表示容量数,也就是60000,而60000的十六进制就是ea60,满足;再看偏移量为8字节处05,它就表示我们的标签值了,也就是说第一个图片的标签值为5,后面的也是依此类推;
  • 接下来我们来看训练图片集,同样从官网上可以看到

    其解说与上面的标签文件类似,但是这里还要补充说明一下,在MNIST图片集中,所有的图片都是28×28的,也就是每个图片都有28×28个像素;看回我们的上述图片,其表示,我们的train-images-idx3-ubyte文件中偏移量为0字节处有一个4字节的数为0000 0803表示魔数;接下来是0000 ea60值为60000代表容量,接下来从第8个字节开始有一个4字节数,值为28也就是0000 001c,表示每个图片的行数;从第12个字节开始有一个4字节数,值也为28,也就是0000 001c表示每个图片的列数;从第16个字节开始才是我们的像素值,用图片说话
    ;而且每784个字节代表一幅图片
    我们可以看到文件的二进制内容同我们分析的是一样的。
  • 补充说明:在图示中我们可以看到有一个MSB first,其全称是”Most Significant Bit first”,相对称的是一个LSB first,“Least Significant Bit”; MSB first是指最高有效位优先,也就是我们的大端存储,而LSB对应小端存储;关于大端,小端,可以 参考
代码来也
  • 相信通过上面的解析,对于MNIST的文件组织和内容已经有所了解,接下来我们便对文件内容进行读取;
  • 自己动手型
    • 主要是使用了python的numpy进行数据类型转换和struct模型进行二进制文件的格式化读取;关于struct可以参考 struct;核心代码如下

_tag = '>' #使用大端读取_twoBytes = 'II' #读取数据格式是两个整数_fourBytes =  'IIII' #读取的数据格式是四个整数_pictureBytes =  '784B' #读取的图片的数据格式是784个字节,28*28_lableByte = '1B' #标签是1个字节_msb_twoBytes = _tag + _twoBytes_msb_fourBytes = _tag +  _fourBytes_msb_pictureBytes = _tag + _pictureBytes_msb_lableByte = _tag + _lableBytedef getImage(filename = None):    binfile = open(filename, 'rb') #以二进制读取的方式打开文件    buf = binfile.read() #获取文件内容缓存区    binfile.close()    index = 0 #偏移量    numMagic, numImgs, numRows, numCols = struct.unpack_from(_msb_fourBytes, buf, index)    index += struct.calcsize(_fourBytes)    images = []    for i in xrange(numImgs):        imgVal  = struct.unpack_from(_msb_pictureBytes, buf, index)        index += struct.calcsize(_pictureBytes)        imgVal  = list(imgVal)        #for j in range(len(imgVal)):        #   if imgVal[j] > 1:        #       imgVal[j] = 1        images.append(imgVal)    return np.array(images)def getlable(filename=None) :    binfile = open(filename, 'rb')    buf = binfile.read() #获取文件内容缓存区    binfile.close()    index = 0 #偏移量    numMagic, numItems = struct.unpack_from(_msb_twoBytes,buf, index)    index += struct.calcsize(_twoBytes)    labels = []    for i in range(numItems):        value = struct.unpack_from(_msb_lableByte, buf, index)        index += struct.calcsize(_lableByte)        labels.append(value[0]) #获取值的内容    return np.array(labels)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 使用python已经处理过的包
    • 主要是使用了已经处理过的压缩包 mnist.pkl.gz,前利用cPickle模块从pkl文件中加载出已经处理过的文件内容;关于这个数据集的内容是,它加载完毕后,会返回三个数组,这与mnist官网不同,因为为了方便模型的训练,mnist.pkl将60000个训练数据分成了50000个训练数据和10000校正数据集;每个数组由两部分内容组成,一个图片数组和一个标签数组,图片数组的每一行代表一个图片的像素,有784个元素(28×28);核心代码如下

def  load_data(filename = None):    f = gzip.open(filename, 'rb')    training_data, validation_data, test_data = cPickle.load(f)    return (training_data, validation_data, test_data)
  • 1
  • 2
  • 3
  • 4
  • 全部的代码地址 mnist
[size=0.6]目录
train-labels.idx1-ubyte
train-labels-idx1-ubyte.gz
train-images.idx3-ubyte
train-images-idx3-ubyte.gz
THE MNIST DATABASE.txt
t10k-labels.idx1-ubyte
t10k-labels-idx1-ubyte.gz
t10k-images.idx3-ubyte
t10k-images-idx3-ubyte.gz
showit.m
mnist_lmdb.tgz


[size=0.6]下载地址
回复可查看课程下载链接&提取码
游客,如果您要查看本帖隐藏内容请回复

学豆不足请充值:充值  开通VIP全站课程免学豆下载:开通VIP  QQ:2659147209




回复

使用道具 举报

  • TA的每日心情
    开心
    2020-2-10 22:35
  • 签到天数: 214 天

    连续签到: 2 天

    [LV.7]常住居民III

    0

    好友

    4

    主题

    0

    精华

    荣耀VIP

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    积分
    5705
    经验
    5071
    学豆
    30

    荣耀VIP

    发表于 2017-6-14 09:22:26 | 显示全部楼层
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    开心
    2020-2-10 22:35
  • 签到天数: 214 天

    连续签到: 2 天

    [LV.7]常住居民III

    0

    好友

    4

    主题

    0

    精华

    荣耀VIP

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    积分
    5705
    经验
    5071
    学豆
    30

    荣耀VIP

    发表于 2017-6-14 09:22:02 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-2-9 14:08
  • 签到天数: 78 天

    连续签到: 2 天

    [LV.6]常住居民II

    0

    好友

    3

    主题

    0

    精华

    荣耀VIP

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    积分
    3560
    经验
    1801
    学豆
    70

    荣耀VIP

    发表于 2018-9-16 06:34:22 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 205 天

    连续签到: 2 天

    [LV.7]常住居民III

    0

    好友

    9

    主题

    0

    精华

    荣耀VIP

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    积分
    4199
    经验
    3702
    学豆
    5

    荣耀VIP至尊VIP

    发表于 2018-9-17 21:10:01 | 显示全部楼层
    学习是一群志同道合的人在一起碰撞的过程。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 80 天

    连续签到: 1 天

    [LV.6]常住居民II

    0

    好友

    2

    主题

    0

    精华

    荣耀VIP

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    积分
    1537
    经验
    1284
    学豆
    10

    荣耀VIP

    发表于 2018-10-23 10:18:19 | 显示全部楼层
    下载了如发热发光如天花板也特别好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2020-8-28 16:30
  • 签到天数: 123 天

    连续签到: 1 天

    [LV.7]常住居民III

    0

    好友

    5

    主题

    0

    精华

    荣耀VIP

    Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

    积分
    4762
    经验
    2193
    学豆
    0

    荣耀VIP

    发表于 2019-1-10 04:25:20 | 显示全部楼层
    怀疑自己并不可怕,可怕的是一再怀疑自己——沃.兹基硕德
    回复 支持 反对

    使用道具 举报

    快捷回复:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    快速回复 返回顶部 返回列表