numpy方法读取加载mnist数据集

方法来自机器之心公众号

首先下载mnist数据集,并将里面四个文件夹解压出来,下载方法见前面的博客

import tensorflow as tf
import numpy as np
import osdataset_path = r'D:\PycharmProjects\tensorflow\MNIST_data' # 这是我存放mnist数据集的位置
is_training = True# 定义加载mnist的函数
def load_mnist(path, is_training):# trX将加载储存所有60000张灰度图fd = open(os.path.join(path, 'train-images.idx3-ubyte'))loaded = np.fromfile(file=fd, dtype=np.uint8)trX = loaded[16:].reshape((60000, 28, 28, 1)).astype(np.float)fd = open(os.path.join(path, 'train-labels.idx1-ubyte'))loaded = np.fromfile(file=fd, dtype=np.uint8)trY = loaded[8:].reshape((60000)).astype(np.float)#teX将储存所有一万张测试用的图片fd = open(os.path.join(path, 't10k-images.idx3-ubyte'))loaded = np.fromfile(file=fd, dtype=np.uint8)teX = loaded[16:].reshape((10000, 28, 28, 1)).astype(np.float)fd = open(os.path.join(path, 't10k-labels.idx1-ubyte'))loaded = np.fromfile(file=fd, dtype=np.uint8)teY = loaded[8:].reshape((10000)).astype(np.float)# 将所有训练图片表示为一个4维张量 [60000, 28, 28, 1],其中每个像素值缩放到0和1之间trX = tf.convert_to_tensor(trX / 255., tf.float32)# one hot编码为 [num_samples, 10]trY = tf.one_hot(trY, depth=10, axis=1, dtype=tf.float32)teY = tf.one_hot(teY, depth=10, axis=1, dtype=tf.float32)# 训练和测试时返回不同的数据if is_training:return trX, trYelse:return teX / 255., teYdef get_batch_data():trX, trY = load_mnist(dataset_path, True)# 每次产生一个切片,每次从一个tensor列表中按顺序或者随机抽取出一个tensor放入文件名队列data_queues = tf.train.slice_input_producer([trX, trY])# 对队列中的样本进行乱序处理X, Y = tf.train.shuffle_batch(data_queues,batch_size=batch_size,capacity=batch_size * 64,min_after_dequeue=batch_size * 32,allow_smaller_final_batch=False)return (X, Y)

这里为什么要去掉训练集的前16个数字和标签的前8个数字呢?我看了一下,训练集train-images.idx3-ubyte文件确实有47040016个数字,比28*28*60000=47040000多了16个数字,训练集标签train-labels.idx1-ubyte文件下有60008个数字,也多出来8个数字,下面是mnist训练集的样本和标签的数据结构:

 

可以看出在train-images.idx3-ubyte中,第一个数为32位的整数(魔数,图片类型的数),第二个数为32位的整数(图片的个数),第三和第四个也是32为的整数(分别代表图片的行数和列数),接下来的都是一个字节的无符号数(即像素,值域为0~255) 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/491705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纳米线传感器来了,传感芯片还会远吗

来源:科学网“无旁路电路”纳米线桥接生长方案 黄辉供图微型气体检测仪 黄辉供图人工智能、可穿戴装备、物联网等信息技术迅猛发展,需要海量的传感器提供支持,大数据和云计算等业务也需要各种传感器实时采集数据来支撑。但目前的传感器存在国…

PyTorch框架学习七——自定义transforms方法

PyTorch框架学习七——自定义transforms方法一、自定义transforms注意要素二、自定义transforms步骤三、自定义transforms实例:椒盐噪声虽然前面的笔记介绍了很多PyTorch给出的transforms方法,也非常有用,但是也有可能在具体的问题中需要开发…

美国芯片简史:军方大力扶持下的产物 但一度被日 韩超越

来源:知乎专栏腾讯科技近日发起系列策划,聚焦各个芯片大国的发展历程。第四期:《美国芯片简史》。集成电路是电子信息产业的的基石,电子信息产业对国民经济与社会发展具有重大推动作用。从全球集成电路产业发展历程来看&#xff0…

PyTorch框架学习八——PyTorch数据读取机制(简述)

PyTorch框架学习八——PyTorch数据读取机制(简述)一、数据二、DataLoader与Dataset1.torch.utils.data.DataLoader2.torch.utils.data.Dataset三、数据读取整体流程琢磨了一段时间,终于对PyTorch的数据读取机制有了一点理解,并自己…

报告 | 2019年全球数字化转型现状研究报告

来源:Prophet2019年,战略数字化转型的重要性已经不止于IT领域,而影响着全公司的竞争力。企业的相关预算直线攀升,利益相关方所关注的颠覆性技术数量急剧增加。数字化项目开始由首席高管主导,并由相互协作的跨职能团队管…

Android调用binder实现权限提升-android学习之旅(81)

当进程A权限较低,而B权限较高时,容易产生提权漏洞 fuzz测试的测试路径 First level Interface是服务 Second level Interface是服务中对应的接口 1.首先获取第一层和第二层接口,及服务以及对应服务提供的接口 2.根据以上信息结合参数类型信息…

PyTorch框架学习九——网络模型的构建

PyTorch框架学习九——网络模型的构建一、概述二、nn.Module三、模型容器Container1.nn.Sequential2.nn.ModuleList3.nn.ModuleDict()4.总结笔记二到八主要介绍与数据有关的内容,这次笔记将开始介绍网络模型有关的内容,首先我们不追求网络内部各层的具体…

中国17种稀土有啥军事用途?没它们,美军技术优势将归零

来源:陶慕剑观察 稀土就是化学元素周期表中镧系元素——镧(La)、铈(Ce)、镨(Pr)、钕(Nd)、钷(Pm)、钐(Sm)、铕(Eu)、钆(Gd)、铽(Tb)、镝(Dy)、钬(Ho)、铒(Er)、铥(Tm)、镱(Yb)、镥(Lu),再加上钪(Sc)和钇(Y)共17种元素。中国稀土占据着众多的世界第一&…

PyTorch框架学习十——基础网络层(卷积、转置卷积、池化、反池化、线性、激活函数)

PyTorch框架学习十——基础网络层(卷积、转置卷积、池化、反池化、线性、激活函数)一、卷积层二、转置卷积层三、池化层1.最大池化nn.MaxPool2d2.平均池化nn.AvgPool2d四、反池化层最大值反池化nn.MaxUnpool2d五、线性层六、激活函数层1.nn.Sigmoid2.nn.…

PyTorch框架学习十一——网络层权值初始化

PyTorch框架学习十一——网络层权值初始化一、均匀分布初始化二、正态分布初始化三、常数初始化四、Xavier 均匀分布初始化五、Xavier正态分布初始化六、kaiming均匀分布初始化前面的笔记介绍了网络模型的搭建,这次将介绍网络层权值的初始化,适当的初始化…

W3C 战败:无权再制定 HTML 和 DOM 标准!

来源:CSDN历史性时刻!——近日,W3C正式宣告战败:HTML和DOM标准制定权将全权移交给浏览器厂商联盟WHATWG。由苹果、Google、微软和Mozilla四大浏览器厂商组成的WHATWG已经与万维网联盟(World Wide Web Consortium&#…

PyTorch框架学习十二——损失函数

PyTorch框架学习十二——损失函数一、损失函数的作用二、18种常见损失函数简述1.L1Loss(MAE)2.MSELoss3.SmoothL1Loss4.交叉熵CrossEntropyLoss5.NLLLoss6.PoissonNLLLoss7.KLDivLoss8.BCELoss9.BCEWithLogitsLoss10.MarginRankingLoss11.HingeEmbedding…

化合物半导体的机遇

来源:国盛证券半导体材料可分为单质半导体及化合物半导体两类,前者如硅(Si)、锗(Ge)等所形成的半导体,后者为砷化镓(GaAs)、氮化镓(GaN)、碳化硅(…

PyTorch框架学习十三——优化器

PyTorch框架学习十三——优化器一、优化器二、Optimizer类1.基本属性2.基本方法三、学习率与动量1.学习率learning rate2.动量、冲量Momentum四、十种常见的优化器(简单罗列)上次笔记简单介绍了一下损失函数的概念以及18种常用的损失函数,这次…

最全芯片产业报告出炉,计算、存储、模拟IC一文扫尽

来源:智东西最近几年, 半导体产业风起云涌。 一方面, 中国半导体异军突起, 另一方面, 全球产业面临超级周期,加上人工智能等新兴应用的崛起,中美科技摩擦频发,全球半导体现状如何&am…

python向CSV文件写内容

f open(r"D:\test.csv", w) f.write(1,2,3\n) f.write(4,5,6\n) f.close() 注意:上面例子中的123456这6个数字会分别写入不同的单元格里,即以逗号作为分隔符将字符串内容分开放到不同单元格 上面例子的图: 如果要把变量的值放入…

PyTorch框架学习十四——学习率调整策略

PyTorch框架学习十四——学习率调整策略一、_LRScheduler类二、六种常见的学习率调整策略1.StepLR2.MultiStepLR3.ExponentialLR4.CosineAnnealingLR5.ReduceLRonPlateau6.LambdaLR在上次笔记优化器的内容中介绍了学习率的概念,但是在整个训练过程中学习率并不是一直…

JavaScript数组常用方法

转载于:https://www.cnblogs.com/kenan9527/p/4926145.html

蕨叶形生物刷新生命史,动物界至少起源于5.7亿年前

来源 :newsweek.com根据发表于《古生物学》期刊(Palaeontology)的一项研究,动物界可能比科学界所知更加古老。研究人员发现,一种名为“美妙春光虫”(Stromatoveris psygmoglena)的海洋生物在埃迪…

PyTorch框架学习十五——可视化工具TensorBoard

PyTorch框架学习十五——可视化工具TensorBoard一、TensorBoard简介二、TensorBoard安装及测试三、TensorBoard的使用1.add_scalar()2.add_scalars()3.add_histogram()4.add_image()5.add_graph()之前的笔记介绍了模型训练中的数据、模型、损失函数和优化器,下面将介…