Mxnet Data Loading API

import mxnet as mx
nd_iterator = mx.io.NDArrayIter(data={'data': mx.nd.ones((100, 10))},
                                label={'softmax_label': mx.nd.ones((100, ))},
                                batch_size=25
                                )
# print( nd_iterator.provide_data)
# print(nd_iterator.provide_label)

data = mx.sym.Variable('data')
label = mx.sym.Variable('softmax_label')
fullc = mx.sym.FullyConnected(data=data, num_hidden=1)
loss = mx.sym.SoftmaxOutput(data=fullc, label=label)

mod = mx.mod.Module(loss, data_names=['data'], label_names=['softmax_label'])
mod.bind(data_shapes=nd_iterator.provide_data, label_shapes=nd_iterator.provide_label)

mod.fit(nd_iterator, num_epoch=2)

# 下面看几个比较常见的
# mx.io.NDArrayIter(data, label=None, batch_size=1, shuffle=False, last_batch_handle='pad')
# 这是一个类, 返回的是一个迭代器
# 比如
import numpy as np
data = np.arange(40).reshape((10, 2, 2))
labels = np.ones([10, 1])
dataiter = mx.io.NDArrayIter(data=data, label=labels, batch_size=3, shuffle=True, last_batch_handle='pad')
batch_num  = 0
for batch in dataiter:
    print batch.data[0].asnumpy()
    print batch.data[0].shape
    batch_num += 1
print batch_num

# 其中last_batch_handle如果是'pad'的话就会填充,如果是pad的话上面的batch_num 就是4, 如果是disard的话就会是3
# NDArrayIter也支持多个input和labels,
# # 比如可以把刚才的 改成下面的。
# data = {'data1': np.zeros(shape=(10,2,2)), 'data2': np.zeros(shape=(20, 2, 2))}
# label = {'label1': np.zeros(shape=(10, 1)), 'data2': np.zeros(shape=(20, 1))}

# 下面的是一些关于图像数据常用的接口
mx.io.ImageRecordIter(*args, **kwargs)
# 这个是图像 RecordIO files上的迭代器,
# 可以先通过 im2rec.py 把原始的imgs pack 进 RecordIO files,
# 然后可以像下面这样使用
data_iter = mx.io.ImageRecordIter(
    path_imgrec = './sample.rec',
    data_shape = (3, 227, 227),
    batch_size = 4,
    resize = 256  # Resize the shorter edge of 256 before cropping.
    )
batch = data_iter.next()  # first batch
imgs = batch.data[0]

data_iter.reset()  # 再从开始再restart the iterator

# 还有一个
mxnet.io.ImageDetRecordIter(*args, **kwargs)
# 这个是 create iterator for image detection dataset packed in recordio.
# 我刻SSD里面就用了这个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值