一:训练模型
第一步:下载MNIST数据集
在Linux的终端输入:
wget http://deeplearning.net/data/mnist/mnist.pkl.gz
原版mnist数据集下载比较慢,所以使用这个bengio组封装好的数据包。
第二步:处理数据集(显示数据 - 图片)
(1)使用python下载数据集并转换成图片
# encoding: utf-8
# os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,
# 根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块
import os
import pickle ,gzip #pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。
import matplotlib #绘图工具包
import matplotlib.pyplot
#从原始文件读入mnist数据
print ('Loading data from mnist.pkl.gzip ...')
with gzip.open('mnist.pkl.gz', 'rb') as f :
train_set, vaild_set, test_set = pickle.load(f) #pickle.load(file)反序列化对象.将文件中的数据解析为一个Python对象。
#创建mnist文件夹
imgs_dir = 'mnist'
os.system('mkdir -p {}'.format(imgs_dir)) #python中format函数用于字符串的格式化
datasets = {'train': train_set, 'val': vaild_set, 'test': test_set}
#转换train,vai,test 数据集
for dataname, dataset in datasets.items(): #Python 字典 items() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组。
print('Converting {} dataset ...'.format(dataname))
data_dir = os.sep.join([imgs_dir, dataname])
#在mninst文件夹下创建子文件夹
os.system('mkdir -p {}'.format(data_dir))
# i代表序号,用zip()函数读取对应位置的图片和标签
for i, (img, label) in enumerate(zip(*dataset)):
#格式化生成文件名,第一个字段是序号,第二个字段是数字值
filename = '{:0>6d}_{}.jpg'.format(i,label)
filepath = os.sep.join([data_dir, filename])
#将展开的一维数组还原为二位数组
img = img.reshape((28, 28))
# 利用pyplot保存可以自动归一化生成像素值在0~255之间的灰度图片
matplotlib.pyplot.imsave(filepath, img, cmap='gray')
if (i+1)% 10000 == 0:
print('{} images converted!'.format(i+1))
这样就处首先创建mnist文件夹(在pychram工程文件夹同一目录下)然后得到了train,test,val三个子文件夹分别保存对应的3个数据集转化后产生的图片(28 * 28像素)。命名规则是:第一个字段是序号,第二个字段是数字的值,保存为jpg格式。
(2)利用CAFFE提供的工具制作LMDB数据
LMDB(Lightning Memery-Mapped Database,闪