摘抄一下MNIST手写体数据库文件格式
来源:互联网 发布:制作书本的软件 编辑:程序博客网 时间:2024/05/22 14:07
最近在查看Hinton最新的论文,提出了新的神经网络架构,最核心的神经元变成了一组取名为Capsule,输入相应的变成了向量(或者张量更有高大上的feel),关于该网络的实现已经有牛人复现了,感谢:
云梦居客(https://github.com/naturomics/CapsNet-Tensorflow)
https://www.zhihu.com/question/67287444/answer/251460831
在阅读代码时,发现了解析MNIST的文件,因此复习一下:
def load_mnist(path, is_training): fd = open(os.path.join(cfg.dataset, '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(cfg.dataset, 'train-labels-idx1-ubyte')) loaded = np.fromfile(file=fd, dtype=np.uint8) trY = loaded[8:].reshape((60000)).astype(np.int32) fd = open(os.path.join(cfg.dataset, '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(cfg.dataset, 't10k-labels-idx1-ubyte')) loaded = np.fromfile(file=fd, dtype=np.uint8) teY = loaded[8:].reshape((10000)).astype(np.int32) # normalization and convert to a tensor [60000, 28, 28, 1] trX = tf.convert_to_tensor(trX / 255., tf.float32) # => [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, trY else: return teX / 255., teYdef get_batch_data(): trX, trY = load_mnist(cfg.dataset, cfg.is_training) data_queues = tf.train.slice_input_producer([trX, trY]) X, Y = tf.train.shuffle_batch(data_queues, num_threads=cfg.num_threads, batch_size=cfg.batch_size, capacity=cfg.batch_size * 64, min_after_dequeue=cfg.batch_size * 32, allow_smaller_final_batch=False) return(X, Y)
MNIST数据库官网:http://yann.lecun.com/exdb/mnist/
FILE FORMATS FOR THE MNIST DATABASE
The data is stored in a very simple file format designed for storing vectors and multidimensional matrices. General info on this format is given at the end of this page, but you don't need to read that to use the data files.All the integers in the files are stored in the MSB first (high endian) format used by most non-Intel processors. Users of Intel processors and other low-endian machines must flip the bytes of the header.
There are 4 files:
train-images-idx3-ubyte: training set images
train-labels-idx1-ubyte: training set labels
t10k-images-idx3-ubyte: test set images
t10k-labels-idx1-ubyte: test set labels
The training set contains 60000 examples, and the test set 10000 examples.
The first 5000 examples of the test set are taken from the original NIST training set. The last 5000 are taken from the original NIST test set. The first 5000 are cleaner and easier than the last 5000.
TRAINING SET LABEL FILE (train-labels-idx1-ubyte):
[offset] [type] [value] [description]0000 32 bit integer 0x00000801(2049) magic number (MSB first)
0004 32 bit integer 60000 number of items
0008 unsigned byte ?? label
0009 unsigned byte ?? label
........
xxxx unsigned byte ?? label
The labels values are 0 to 9.
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
Pixels are organized row-wise. Pixel values are 0 to 255. 0 means background (white), 255 means foreground (black).
TEST SET LABEL FILE (t10k-labels-idx1-ubyte):
[offset] [type] [value] [description]0000 32 bit integer 0x00000801(2049) magic number (MSB first)
0004 32 bit integer 10000 number of items
0008 unsigned byte ?? label
0009 unsigned byte ?? label
........
xxxx unsigned byte ?? label
The labels values are 0 to 9.
TEST SET IMAGE FILE (t10k-images-idx3-ubyte):
[offset] [type] [value] [description]0000 32 bit integer 0x00000803(2051) magic number
0004 32 bit integer 10000 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
Pixels are organized row-wise. Pixel values are 0 to 255. 0 means background (white), 255 means foreground (black).
THE IDX FILE FORMAT
the IDX file format is a simple format for vectors and multidimensional matrices of various numerical types.The basic format is
magic number
size in dimension 0
size in dimension 1
size in dimension 2
.....
size in dimension N
data
The magic number is an integer (MSB first). The first 2 bytes are always 0.
The third byte codes the type of the data:
0x08: unsigned byte
0x09: signed byte
0x0B: short (2 bytes)
0x0C: int (4 bytes)
0x0D: float (4 bytes)
0x0E: double (8 bytes)
The 4-th byte codes the number of dimensions of the vector/matrix: 1 for vectors, 2 for matrices....
The sizes in each dimension are 4-byte integers (MSB first, high endian, like in most non-Intel processors).
The data is stored like in a C array, i.e. the index in the last dimension changes the fastest.
Happy hacking.
- 摘抄一下MNIST手写体数据库文件格式
- 图像转化为手写体mnist格式的数据
- MNIST手写体数据库介绍
- Tensorflow手写体识别mnist
- MNIST手写体识别--tensorflow
- Caffe_02_运行mnist手写体例子
- MNIST基础手写体识别 tensorflow+Python
- mnist手写体数据加载碰到问题解决方案
- Windows caffe (一) MNIST手写体跑起来
- DCGAN例子学习-MNIST 手写体数字生成
- Caffe环境搭建&Mnist手写体识别
- MNIST手写体识别入门程序整理
- caffe深度学习:mnist手写体的识别
- tensorflow基于softmax模型实现手写体MNIST数字集识别
- tensorflow 全连接神经网络 MNIST手写体数字识别
- 生成对抗网络GAN入门——生成mnist手写体
- tensorflow 卷积神经网络 LeNet-5模型 MNIST手写体数字识别
- CNN学习(三)—Tensorflow 进行MNIST手写体识别
- python 调试
- 数据结构实验之二叉树一:树的同构
- Mybatis中的statementType="STATEMENT"使用注意
- USB host 通信
- 前端圈的寒冬要来?
- 摘抄一下MNIST手写体数据库文件格式
- 购票系统
- Redis持久化--RDB+AOF
- 机器学习实战——决策树
- docker安装redis
- Android中ListView下拉刷新功能
- SVM支持向量机Tensorflow实现
- JS中函数名后面的括号加与不加的区别
- Android原生登录同步到webview的网页