MNIST数据库格式的解析和生成
来源:互联网 发布:sn ty gm js是什么 编辑:程序博客网 时间:2024/05/19 03:42
如上一篇博客所写MNIST是ML界的’hello world’,为了将自己的图像转化为类似MNIST数据文件类型的格式,先对它的文件进行了解析.先给出我的程序所提取的训练样本的前十张图像及对应的label,截图如下:
该数据格式是bytestream,无论是训练样本还是测试样本,其图像数据文件均在开头有一个2051的标志,之后便是图像的个数/行值/列值,紧接着按行读取所有的图像,且图像数据间无间隔;label数据文件均在开头有一个2049的标志,然后是图像的个数,以及每个图像的标志(如0,1)依次列出,以bytestream形式排列的文件在进行压缩,便是我们下载到的数据文件.
以下为文章开始给出的结果的源码:
#coding=utf-8from __future__ import absolute_importfrom __future__ import divisionfrom __future__ import print_functionimport matplotlib.pyplot as pltimport gzipimport osimport Imageimport tensorflow.python.platformimport numpyfrom six.moves import urllibfrom six.moves import xrange # pylint: disable=redefined-builtinimport tensorflow as tfdef _read32(bytestream): dt = numpy.dtype(numpy.uint32).newbyteorder('>') return numpy.frombuffer(bytestream.read(4), dtype=dt)[0]def extract_images(filename,nth): with gzip.open(filename) as bytestream: magic = _read32(bytestream) if magic != 2051: raise ValueError( 'Invalid magic number %d in MNIST image file: %s' % (magic, filename)) num_images = _read32(bytestream) #print(num_images) rows = _read32(bytestream) cols = _read32(bytestream) #print(rows)#28 #print(cols)#28 for i in range(nth-1): bytestream.read(rows * cols) buf = bytestream.read(rows * cols ) data = numpy.frombuffer(buf, dtype=numpy.uint8)#按行读取,图片间无间隔 data = numpy.reshape(data, (rows, cols)) return datadef extract_labels(filename, one_hot=False): with gzip.open(filename) as bytestream: magic = _read32(bytestream) if magic != 2049: raise ValueError( 'Invalid magic number %d in MNIST label file: %s' % (magic, filename)) num_items = _read32(bytestream) print(num_items) buf = bytestream.read(10)#num_items labels = numpy.frombuffer(buf, dtype=numpy.uint8) if one_hot: return dense_to_one_hot(labels) return labelsif __name__=='__main__': plt.figure(1) for nth in range(1,11): data = extract_images('train-images-idx3-ubyte.gz',nth) new_im = Image.fromarray(data) plt.subplot(2,5,nth) plt.imshow(new_im, cmap ='gray') plt.title(nth) train_labels = extract_labels('train-labels-idx1-ubyte.gz', one_hot=False) print(train_labels) plt.show()
阅读全文
0 0
- MNIST数据库格式的解析和生成
- caffe的mnist格式数据生成和mnist格式数据转npy
- 生成和解析XML格式的字符串
- Xml 格式数据的生成和解析
- Xml格式数据的生成和解析
- 解析mnist数据库
- Xml 格式数据的生成和解析和 Pull 解析 Xml 格式数据
- iCalendar格式中关于RRule的解析和生成
- QT 下 json格式数据的 生成 和 解析
- Python解析lmdb格式mnist数据集
- PB 生成和解析JSON格式数据
- MNIST数据库处理--matlab生成mnist_uint8.mat
- ios-vcf格式通讯录的生成和解析(开源),支持5.0以下版本
- MNIST数据集的格式转换
- 数据库生成xml格式
- PHP实现生成XML数据和解析XML格式数据
- leveldb研究2- 存储分析,数据库日志文件格式,数据文件的格式和生成
- XML的解析和生成
- Django官方教程(八)【创建你的第一个 Django 项目,第六部分】
- leetcode 35. Search Insert Position
- nodemcu响应chunked数据
- MySQL日期时间函数大全
- 比特币挖矿——集群矿池btcpool
- MNIST数据库格式的解析和生成
- C++报计算机中丢失ucrtbased.dll
- 欢迎使用CSDN-markdown编辑器
- button与input标签
- pl/sql 下载安装
- 《python核心编程第二版第七章习题补充》
- spring整合dwr架构(ftl+ssm)以及dwr.xml配置,原理,优缺点讲解,面试题总结
- 理解Linux系统/etc/init.d目录和/etc/rc.local脚本
- redis的基本存储结构的简单使用