Iterable
MXNET中读入数据需要使用到数据迭代器(Iter),用户可以使用MXNET提供的一些数据迭代器也可以自己写一个迭代器。虽然一般情况下,我们很多的数据都可以直接读入内存之中,但是面向神经网络进行大数据学习时,学习的样本往往达到了几个GB甚至几十上百个GB。这显然是我们的内存所不能承受的。这样的情况下,我们不得不分批次的将数据送入我们的学习网络之中。迭代器的目的就是在需要数据的时候得到部分数据,然后下次需要的时候能够继续获得后续数据。在网上发现这篇Blog对迭代的概念解释的非常好。
NDarray
numpy中的ndarray存储数据时采用的是一维的形式。二维或者多维数组在numpy中采用“别样”解读的方式来实现。比如,一个30元素可以看作5x6或者3x10
Super
dataiter = mx.io.ImageRecordIter(
#rec文件所在位置
path_imgrec="MNIST.rec",
#rec文件中图像大小以及通道数量
data_shape=(3,28,28),
#每个batch中图像的数量
batch_size=100,
#平均图像,如果设置了平均图像,则输入图像将减去该平均图像
mean_img="data/cifar/cifar10_mean.bin",
#随机对图像进行裁剪
rand_crop=True,
#随机对图像进行镜像
rand_mirror=True,
#从rec文件中随机取出图像
shuffle=False,
#预处理线程数
preprocess_threads=4,
#预取缓存
prefetch_buffer=1)