训练神经网络涉及不少的步骤。我们需要知道如何提供输入训练数据,初始化模型参数,执行前向和后向传播,根据计算的梯度更新权重,模型检查等。在预测过程中,大部分步骤是重复的。 所有这一切对于新手以及经验丰富的开发人员而言都是相当艰巨的。
幸运的是,MXNet的module 包(简写为mod )模块化了用于训练和推断的常用代码。module提供用于执行预定义网络的高级和中级接口。我们可以互换地使用两个接口。 我们将在本教程中展示两个接口的用法。
前提条件
为了完成以下教程,我们需要:
- MXNet:安装教程
- Jupyter Notebook and Python Requests packages.
pip install jupyter requests
- 1
准备
在本部分教程中,我们将使用一个十类的多层感知机(MLP)和一个字母识别数据集。
下面的代码下载数据集并创建一个80:20的训练:测试拆分。它还初始化训练数据迭代器,每次返回一批32个训练样本,还为测试数据创建了一个单独的迭代器。
import logging
logging.getLogger().setLevel(logging.INFO)
import mxnet as mx
import numpy as np
fname = mx.test_utils.download('http://archive.ics.uci.edu/ml/machine-learning-databases/letter-recognition/letter-recognition.data')
data = np.genfromtxt(fname, delimiter=',')[:,1:]
label = np.array([ord(l.split(',')[0])-ord('A') for l in open(fname, 'r')])
batch_size = 32
ntrain = int(