MNIST数据集包含哪三个部分,mnist数据库

  MNIST数据集包含哪三个部分,mnist数据库

  首先必须向大家强调的是,这个数据集的名字是MNIST,不是MINIST~ ~我之前搞错了!哈哈~网上有很多使用MNIST数据集的教程,不是太麻烦就是翻墙下载慢。在这里,分享一下我找到的最方便的方法。

  1下载数据集并解压缩。1从这个没有网络限制的百度云链接下载会更快:链接:https://pan.baidu.com/s/1ydcCsPBlP6U9Hw52TMnhkw提取代码:8zjp

  2(需要翻墙)从MNIST官网下载以下四个文件,下载速度很慢!下载了4个压缩包。gz格式。

  解压缩后,获得四个新文件。

  之前的4。gz压缩包可以删除。

  2创建一个新的。名为

input_data

的py文件。将以下代码复制并粘贴到input_data.py中

  #版权所有2015 tensor flow作者。保留所有权利。##根据Apache许可证2.0版(“许可证”)获得许可;#除非符合许可证的规定,否则您不得使用本文件。#您可以通过# # http://www.apache.org/licenses/许可证-2.0##获得许可证的副本。除非适用法律要求或书面同意,根据许可证分发的软件#按“原样”分发,#不附带任何种类的明示或暗示的担保或条件。#请参见许可协议,了解许可协议下的特定语言管理权限和#限制。#======================================================================下载和读取MNIST数据的功能 from _ _ future _ _ I import absolute _ import from _ _ future _ _ import division from _ _ future _ _ import print _ function import gzip import OSI import tempfile import numpy from six . moves import URL lib from six . moves import xrange # Pylint:disable=redefined-builtin import tensor flow as TF from tensor flow . contrib . learn . python . learn . datasets . mnistimportread _ data _ sets 3构建您的python项目并将input_data.py放入您的项目中。

  4在你的python文件中(我的是main.py,input_data.py需要在第一个目录中。)使用input _ data导入张量流作为tfimport input _ data #下载加载MNIST手写数据库#下面这句话的作用是使用input _ data.py的内容自动下载数据集,如果数据集已经存在,那么可以不下载直接调用mnist=input _ data . read _ data _ sets( mnist _ data ,one _ hot=true)运行程序。但是,如果不出意外,你跑了很久也不会有结果。因为网络限制等问题,如果要长时间下载,请终止程序,转到步骤5。

  5打开你的项目文件目录,新建一个文件夹MINIST_data(如果你之前运行过一次,这个文件夹会存在,但是里面什么都没有)

把第一步下载并解压的文件复制粘贴到MINIST_data这个文件夹中

  现在通过这两个代码就可以正常获取minist数据集了,因为每次直接调用都很方便,不用下载。

  import _ datamnist=input _ data . read _ data _ sets( mnist _ data ,one _ hot=true)最后附上一个CNN的例子供你测试。

  导入numpy作为NP导入matplotlib。py绘图为pltimport张量流为TF import input _ data import osos。environ[ TF _ CPP _ MIN _ LOG _ LEVEL ]= 2 #下载并载入手写数字识别手写数据库mnist=input _ data。读取数据集( MNIST _数据,one_hot=True)#无表示kfdxf的第一个维度可以是任意长度输入x=TF。占位符(TF。浮点32,[无,28*28])/255 #灰度值:0 ~ 255 output _ y=TF。占位符(TF。int 32,[None,10]) #输出:10个数字的标签输入_ x _图像=TF。shape(input _ x,[-1,28,28,1]) #改变形状之后的输入# 从测试数据集中选取3000个手写数字的图片和对应标签test _ x=Mn ist。测试。图像[:3000]#图片test _ y=Mn ist。测试。标签[:3000]#标签# 构建卷积神经网络# 第一层卷积con v1=TF。层次。conv 2d(输入=输入_ x _图像,#形状是[28,28,1]过滤器=32,# 32个过滤器,输出的深度是32 kernel_size=[5,5],#过滤器在二维的大小是(5.5)步=1,#步长是一填充=相同,#相同表示输出的大小不变,因此需要在外围补0两圈activation=tf.nn.relu #激活函数是Relu ) #形状[28, 28, 32]# 第一层池化(亚采样)池1=TF。层次。max _ pooling 2d(输入=con v1,#形状[28,28,32]池大小=[2,2],#过滤器在二维的大小是(2 * 2)步=2 #步长是2) # 形状[14, 14, 32]# 第2层卷积con v2=TF。层次。conv 2d(输入=池1,#形状是[14,14,32]过滤器=64,# 64个过滤器,输出的深度是64 kernel_size=[5,5],#过滤器在二维的大小是(5.5)步=1,#步长是一填充=相同,#相同表示输出的大小不变,因此需要在外围补0两圈activation=tf.nn.relu #激活函数是Relu ) #形状[14, 14, 64]# 第2层池化(亚采样)池2=TF。层次。max _ pooling 2d(输入=con v2,#形状[14,14,64]池大小=[2,2],#过滤器在二维的大小是(2 * 2)步=2 #步长是2) # 形状[7, 7, 64]# 平坦化(平)平=TF。形状(池2,[-1,7 * 7 * 64]) #形状[7 * 7 * 64, ]# 1024个神经元的全链接层密集=TF。层次。dense(输入=flat,单位=1024,激活=tf.nn.relu)# Dropout:丢弃50%,速率=0.5下降=tf.layers。下降(输入=密集,速率=0.5)# 10个神经元的券链接层,这里不用激活函数来做非线性话了logits=tf.layers.dense(输入=下降,单位=10) #输出。形状[1, 1, 10]# 计算误差(计算交叉熵(交叉熵),再用Softmax计算百分比概率)损失=TF。损失。软max _ cross _ entropy(onehot _ labels=output _ y,logits=logits)# Adam优化器来最小化误差,学习率0。001 train _ op=TF。火车。adamotimizer(learning _ rate=0.001).最小化(损失)#精度。计算预测值和实际标签的匹配程度# 返回(精度,update_op),会创建两个局部变量精度=TF。度量标准。准确度(标签=TF。arg max(output _ y,axis=1),predictions=tf.argmax(logits,axis=1),)[1]with tf .会话()作为会话:#初始化全局和局部变量init=TF。组(TF。global _ variables _ initializer()。local _ variables _ initializer()sess。对范围(20000)中的I运行(init):batch=mnist。火车。下一批(50)#从训练集中取下一个50个样本train_loss,train_op_=sess.run([loss,train_op],{input_x: batch[0],output _ y:batch[1]})if I % 100==0:Test _ accuracy=sess。run(accuracy,{input_x: test_x,output _ y:Test _ y })print( Step=% d,Train loss=%.4f,[Test accuracy=%.2f] % (i,train_loss,Test _ accuracy))Test _ output=sess。运行(logits,推测的数字print(np.argmax(test_y[:20],1),实数)#真实的数字

MNIST数据集包含哪三个部分,mnist数据库