MXNET教程2:Module API

2019-07-24  本文已影响0人  阿甘2016

       首先我给出一个实例来引入module模块。

       训练一个神经网络包含以下几个步骤:1)输入训练数据;2)初始化神经网络的模型参数;3)前向传播、通过梯度更新参数来执行后向传播;4)执行模型检测(model checkpoints)等等。训练好神经网络之后,预测推理过程的步骤包括以上的大部分,除了不需要执行后向传播。              Mxnet框架将神经网络训练和推理的常用步骤模块化,打包在Module package,并给出相应的接口API方便大家调用。Module提供了执行预定义网络的高级(high-level )接口和中级(intermediate-level)接口。两种接口可以互换使用。

       用Mxnet的Module写一个多层感知机MLP来识别26个英文字母(Letter Recognition)。这种任务的整体流程是:

整体流程

代码:

输出:

使用中级接口,方便调试和改动:

      例子结束,下来来说明mxnet的module(简称mod)API。module是mxnet的“计算部件”,主要功能是接受Symbol定义好的网络计算图(symbol是创建mod时的一个参数),进而执行神经网络的前向传播运算、后向传播运算、更新参数,推理等计算。一个module有以下几个状态。

        1、初始状态(Initial state:):内存尚未分配,因此模块尚未准备好进行计算。

         2.bind:输入、输出和参数的形状已知,内存已分配,模块已准备好进行计算。

          3、参数初始化(init_parameters):对于带参数的模块,在初始化参数之前进行计算可能会导致未定义的输出。

         4、安装优化器(Optimizer):优化器可以安装到模块上。之后,可以在计算梯度(向前向后)之后,根据优化器更新模块的参数。

        module模块在bind之前,初始化是必须指明的信息包含:

      1、data_names: list of type string indicating the names of the required input data.

      2、output_names: list of type string indicating the names of the required outputs.

参考:

http://mxnet.incubator.apache.org/versions/master/api/python/module/module.html

上一篇下一篇

猜你喜欢

热点阅读