识别MNIST数据集之(一):读取数据
2017-10-11 14:52
309 查看
1.下载数据集
MNIST是一个标注的手写数据集,可以用来测试你的网络是否成功,你可以从这个网站下载数据集http://yann.lecun.com/exdb/mnist/
可以看到它分为四个部分,分别是训练图片的图像和标签,以及训练数据的图像和标签,我们需要分别对他们进行读入
在读入之前,我们还需要用np.zeros申请空间,方便追加数据
self.train_img_list = np.zeros((self.N, 28 * 28)) self.train_label_list = np.zeros((self.N, 1))1
2
2.读入数据集
这里的数据被用python的struct打包成了二进制文件,我们需要python.struct来把这些数据读入进来首先我们把文件用二进制的方式读进来
binfile = open(filename,'rb') buf = binfile.read()1
2
然后用struct进行解包
struct.unpack_from( '>IIII', buf, index )1
这个函数的意思就是,从buf的index这个地方,用大段序的方法读4个unsigned int32,这里面包含了图像数量,行数,列数一些元信息。
读完了之后,我们就调整读指针的位置
index += struct.calcsize('>IIII')1
2.1读入图像数据
然后每次读取784B的数据,就是图像的信息了im = struct.unpack_from('>784B', buf, index) index += struct.calcsize('>784B')1
2
def read_train_images(self,filename):1
binfile = open(filename, 'rb')
buf = binfile.read()
index = 0
magic, self.train_img_num, self.numRows, self.numColums = struct.unpack_from('>IIII', buf, index)
print magic, ' ', self.train_img_num, ' ', self.numRows, ' ', self.numColums
index += struct.calcsize('>IIII')
for i in range(self.train_img_num):
im = struct.unpack_from('>784B', buf, index) index += struct.calcsize('>784B')
im = np.array(im)
im = im.reshape(1, 28 * 28)
self.train_img_list[ i , : ] = im
plt.imshow(im, cmap='binary') # 黑白显示
plt.show()
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2.2读入标签数据
每次读入2个unsigned int的元数据,并且相应的调整位置,代码如下magic, self.train_label_num = struct.unpack_from('>II', buf, index) index += struct.calcsize('>II') for i in range(self.train_label_num): # for x in xrange(2000): label_item = int(struct.unpack_from('>B', buf, index)[0]) self.train_label_list[ i , : ] = label_item index += struct.calcsize('>B')1
2
3
4
5
6
7
8
3.其他数据
除了训练数据以外还有测试用的数据,读法也和上面读训练数据一样,成功读完之后就可以开始训练了
相关文章推荐
- 识别MNIST数据集之(一):读取数据
- python 数据读取--模仿mnist读取自己的数据集
- Ubuntu下Tensorflow加载MNIST数据集(数据下载和读取)
- TensorFlow的MNIST数据识别
- 基于深度学习框架的火灾识别报警平台搭建----OpenCV3.1.0读取dav视频数据出错
- 一般knn算法识别mnist数据集(代码)
- 用opencv读取摄像头数据实现人脸识别
- 使用tensorflow利用神经网络分类识别MNIST手写数字数据集,转自随心1993
- tensorflow下对MNIST数据集进行识别的程序代码
- Python神经网络代码识别手写字的实现流程(一):加载mnist数据
- caffe学习(二):利用mnist数据集训练并进行手写数字识别(windows)
- 数据集读取数据遇到空指针错误
- 识别MNIST数据集之(二):用Python实现神经网络
- webservice(第三天)(包含一个真实项目,读取EXCEL表格中的数据到数据库中,其中涉及真实的隐私数据不能公开数据集)
- 读取 mnist 数据集 --- python
- 人工智能(1)用tensorflow识别MNIST手写数字数据集
- TensorFlow学习笔记(3)--实现Softmax逻辑回归识别手写数字(MNIST数据集)
- MNIST数据识别--全连接神经网络
- MNIST手写识别数据调用API(python)
- TensorFlow官方教程学习笔记(四)——MNIST数据集的读取