Apache Mxnet 简明教程

Apache MXNet - Python API Module

Apache MXNet 的模块 API 类似于前馈模型,而且可以很容易地组合类似于 Torch 模块。它由以下的类组成:

BaseModule([logger])

它表示模块的基础类。可以将模块视为计算组件或计算机器。模块的任务是执行前向传播和反向传播。它还更新模型中的参数。

Methods

下表显示 BaseModule class 中包含的方法:

Methods

Definition

backward([out_grads])

如名称所示,此方法实现 backward 计算。

bind(data_shapes[, label_shapes, …])

它绑定符号以构造执行器,在用模块执行计算之前,此步骤是必要的。

fit(train_data[, eval_data, eval_metric, …])

此方法训练模块参数。

forward(data_batch[, is_train])

如名称所示,此方法实现正向传播计算。此方法支持具有各种形状的数据批次,如不同的批次大小或不同的图像大小。

forward_backward(data_batch)

正如名称所示,它是一个便捷的函数,它同时调用前向和反向。

get_input_grads([merge_multi_context])

此方法将获取在前面的反向计算中计算得到的输入的梯度。

get_outputs([merge_multi_context])

如名称所示,此方法将获取前面正向计算的输出。

get_params()

它获取参数,尤其是可能复制实际参数用于在设备上执行计算的参数。

get_states([merge_multi_context])

init_optimizer([kvstore, optimizer, …])

此方法安装并初始化优化器。它还初始化 kvstore 以进行分布训练。

init_params([initializer, arg_params, …])

如名称所示,此方法将初始化参数和辅助状态。

install_monitor(mon)

此方法将在所有执行器中安装监控程序。

iter_predict(eval_data[, num_batch, reset, …])

此方法将遍历预测。

load_params(fname)

正如其名称所示,它将从文件中加载模型参数。

predict(eval_data[, num_batch, …])

它将运行预测,以及收集输出结果。

prepare(data_batch[, sparse_row_id_fn])

该算子准备模块以处理给定数据批处理。

save_params(fname)

正如其名称所示,此函数将模型参数保存到文件。

score(eval_data, eval_metric[, num_batch, …])

它在 eval_data 上运行预测,并且还根据给定的 eval_metric 评估性能。

set_params(arg_params, aux_params[, …])

此方法为参数和辅助状态值赋值。

set_states([states, value])

此方法(由名称暗示)为状态设置值。

update()

此方法根据已安装的优化器更新给定参数。它还更新在上一个前向反向批处理中计算的梯度。

update_metric(eval_metric, labels[, pre_sliced])

此方法(由名称暗示)评估并累积最后一个前向计算的输出的评估度量。

backward([out_grads])

如名称所示,此方法实现 backward 计算。

bind(data_shapes[, label_shapes, …])

设置存储桶并绑定默认存储桶键的执行器。此方法表示 BucketingModule 的绑定。

forward(data_batch[, is_train])

如名称所示,此方法实现正向传播计算。此方法支持具有各种形状的数据批次,如不同的批次大小或不同的图像大小。

get_input_grads([merge_multi_context])

此方法将获得上一次反向计算中计算的输入梯度。

get_outputs([merge_multi_context])

正如其名称所示,此方法将从上一次前向计算中获得输出。

get_params()

它获得当前参数,特别是潜在复制在设备上进行计算的实际参数。

get_states([merge_multi_context])

此方法将从所有设备中获取状态。

init_optimizer([kvstore, optimizer, …])

此方法安装并初始化优化器。它还初始化 kvstore 以进行分布训练。

init_params([initializer, arg_params, …])

如名称所示,此方法将初始化参数和辅助状态。

install_monitor(mon)

此方法将在所有执行器中安装监控程序。

load(prefix, epoch[, sym_gen, …])

此方法将从以前保存的检查点创建模型。

load_dict([sym_dict, sym_gen, …])

此方法将从将 bucket_key 映射到符号的字典(dict)创建模型。它还共享 arg_paramsaux_params

prepare(data_batch[, sparse_row_id_fn])

该算子准备模块以处理给定数据批处理。

save_checkpoint(prefix, epoch[, remove_amp_cast])

此方法(由名称暗示)将当前进度保存到 BucketingModule 中所有存储桶的检查点。建议将 mx.callback.module_checkpoint 用作 epoch_end_callback 以在训练期间保存进度。

set_params(arg_params, aux_params[,…])

正如其名称所示,此函数将分配参数和辅助状态值。

set_states([states, value])

此方法(由名称暗示)为状态设置值。

switch_bucket(bucket_key, data_shapes[, …])

它将切换为不同的存储桶。

update()

此方法根据已安装的优化器更新给定参数。它还更新在上一个前向反向批处理中计算的梯度。

update_metric(eval_metric, labels[, pre_sliced])

此方法(由名称暗示)评估并累积最后一个前向计算的输出的评估度量。

Attributes

以下表列出 BaseModule 类的各个方法包含的属性 −

Attributes

Definition

data_names

其中包含此模块所需数据的名称列表。

data_shapes

其中包含指定此模块的数据输入的 (名称,形状) 对的列表。

label_shapes

其中显示指定此模块的标签输入的 (名称,形状) 对的列表。

output_names

其中包含此模块输出的名称列表。

output_shapes

其中包含指定此模块的输出的 (名称,形状) 对的列表。

symbol

根据所指定的名称,此属性获取与此模块关联的符号。

data_shapes:你可以参考 https://mxnet.apache.org 处提供的链接以了解更多详细信息。output_shapes:详细信息

output_shapes:更多信息可在 https://mxnet.apache.org/api/python 找到

BucketingModule(sym_gen[…])

它表示一个模块的 Bucketingmodule 类,它有助于有效地处理长度不一的输入。

Methods

以下表列出 BucketingModule class 中包含的方法 −

Attributes

以下表列出 BaseModule class 的各个方法包含的属性 −

Attributes

Definition

data_names

其中包含此模块所需数据的名称列表。

data_shapes

其中包含指定此模块的数据输入的 (名称,形状) 对的列表。

label_shapes

其中显示指定此模块的标签输入的 (名称,形状) 对的列表。

output_names

其中包含此模块输出的名称列表。

output_shapes

其中包含指定此模块的输出的 (名称,形状) 对的列表。

Symbol

根据所指定的名称,此属性获取与此模块关联的符号。

data_shapes − 你可以参考 https://mxnet.apache.org/api/python/docs 处的链接了解更多信息。

output_shapes− 你可以参考 https://mxnet.apache.org/api/python/docs 处的链接了解更多信息。

Module(symbol[,data_names, label_names,…])

它表示一个包装 symbol 的基本模块。

Methods

以下表列出 Module class 中包含的方法 −

Methods

Definition

backward([out_grads])

如名称所示,此方法实现 backward 计算。

bind(data_shapes[, label_shapes, …])

它绑定符号以构造执行器,在用模块执行计算之前,此步骤是必要的。

borrow_optimizer(shared_module)

正如名称暗示的那样,此方法会从共享模块中借用优化器。

forward(data_batch[, is_train])

正如名称暗示的那样,此方法会实现 Forward 计算。此方法支持具有不同形状的数据批次,如不同的批次大小或不同的图像大小。

get_input_grads([merge_multi_context])

此方法将获取在前面的反向计算中计算得到的输入的梯度。

get_outputs([merge_multi_context])

如名称所示,此方法将获取前面正向计算的输出。

get_params()

它获取参数,尤其是可能复制实际参数用于在设备上执行计算的参数。

get_states([merge_multi_context])

此方法将从所有设备获取状态

init_optimizer([kvstore, optimizer, …])

此方法安装并初始化优化器。它还初始化 kvstore 以进行分布训练。

init_params([initializer, arg_params, …])

如名称所示,此方法将初始化参数和辅助状态。

install_monitor(mon)

此方法将在所有执行器中安装监控程序。

load(prefix, epoch[, sym_gen, …])

此方法将从以前保存的检查点创建模型。

load_optimizer_states(fname)

该方法将从文件中加载优化器,即更新器状态。

prepare(data_batch[, sparse_row_id_fn])

该算子准备模块以处理给定数据批处理。

reshape(data_shapes[, label_shapes])

顾名思义,此方法根据新的输入形状调整模块的形状。

save_checkpoint(prefix, epoch[, …])

它将当前进程保存到检查点。

save_optimizer_states(fname)

该方法将优化器或更新器状态保存到文件。

set_params(arg_params, aux_params[,…])

正如其名称所示,此函数将分配参数和辅助状态值。

set_states([states, value])

此方法(由名称暗示)为状态设置值。

update()

此方法根据已安装的优化器更新给定参数。它还更新在上一个前向反向批处理中计算的梯度。

update_metric(eval_metric, labels[, pre_sliced])

此方法(由名称暗示)评估并累积最后一个前向计算的输出的评估度量。

Attributes

下表显示了 Module class 方法包含的属性——

Attributes

Definition

data_names

其中包含此模块所需数据的名称列表。

data_shapes

其中包含指定此模块的数据输入的 (名称,形状) 对的列表。

label_shapes

其中显示指定此模块的标签输入的 (名称,形状) 对的列表。

output_names

其中包含此模块输出的名称列表。

output_shapes

其中包含指定此模块的输出的 (名称,形状) 对的列表。

label_names

它包含该模块所需的标签名称列表。

data_shapes: 访问链接 https://mxnet.apache.org/api/python/docs/api/module 以获取更多详细信息。

output_shapes: 此处给出的链接 https://mxnet.apache.org/api/python/docs/api/module/index.html 将提供其他重要信息。

PythonLossModule([name,data_names,…])

该类的基础是 mxnet.module.python_module.PythonModule. PythonLossModule 类是一个便捷的模块类,它将所有或许多模块 API 实现为空函数。

Methods

下表显示了 PythonLossModule 类中包含的方法:

Methods

Definition

backward([out_grads])

如名称所示,此方法实现 backward 计算。

forward(data_batch[, is_train])

正如名称暗示的那样,此方法会实现 Forward 计算。此方法支持具有不同形状的数据批次,如不同的批次大小或不同的图像大小。

get_input_grads([merge_multi_context])

此方法将获取在前面的反向计算中计算得到的输入的梯度。

get_outputs([merge_multi_context])

如名称所示,此方法将获取前面正向计算的输出。

install_monitor(mon)

此方法将在所有执行器中安装监控程序。

PythonModule([data_names,label_names…])

该类的基础是 mxnet.module.base_module.BaseModule。PythonModule 类也是一个便捷的模块类,它将所有或许多模块 API 实现为空函数。

Methods

下表显示了 PythonModule 类中包含的方法——

Methods

Definition

bind(data_shapes[, label_shapes, …])

它绑定符号以构造执行器,在用模块执行计算之前,此步骤是必要的。

get_params()

它获取参数,尤其是可能复制实际参数用于在设备上执行计算的参数。

init_optimizer([kvstore, optimizer, …])

此方法安装并初始化优化器。它还初始化 kvstore 以进行分布训练。

init_params([initializer, arg_params, …])

如名称所示,此方法将初始化参数和辅助状态。

update()

此方法根据已安装的优化器更新给定参数。它还更新在上一个前向反向批处理中计算的梯度。

update_metric(eval_metric, labels[, pre_sliced])

此方法(由名称暗示)评估并累积最后一个前向计算的输出的评估度量。

Attributes

下表显示了 PythonModule 类中的方法包含的属性——

Attributes

Definition

data_names

其中包含此模块所需数据的名称列表。

data_shapes

其中包含指定此模块的数据输入的 (名称,形状) 对的列表。

label_shapes

其中显示指定此模块的标签输入的 (名称,形状) 对的列表。

output_names

其中包含此模块输出的名称列表。

output_shapes

其中包含指定此模块的输出的 (名称,形状) 对的列表。

data_shapes - 访问链接 https://mxnet.apache.org 查看详细信息。

output_shapes - 访问链接 https://mxnet.apache.org 查看更多详细信息

SequentialModule([logger])

该类的基础是 mxnet.module.base_module.BaseModule。SequentialModule 类也是一个容器模块,它可以链接多个模块。

Methods

下表显示了 SequentialModule 类中包含的方法

Methods

Definition

add(module, **kwargs)

这是该类最重要的函数。它将模块添加到链中。

backward([out_grads])

顾名思义,此方法实现反向计算。

bind(data_shapes[, label_shapes, …])

它绑定符号以构造执行器,在用模块执行计算之前,此步骤是必要的。

forward(data_batch[, is_train])

如名称所示,此方法实现正向传播计算。此方法支持具有各种形状的数据批次,如不同的批次大小或不同的图像大小。

get_input_grads([merge_multi_context])

此方法将获取在前面的反向计算中计算得到的输入的梯度。

get_outputs([merge_multi_context])

如名称所示,此方法将获取前面正向计算的输出。

get_params()

它获取参数,尤其是可能复制实际参数用于在设备上执行计算的参数。

init_optimizer([kvstore, optimizer, …])

此方法安装并初始化优化器。它还初始化 kvstore 以进行分布训练。

init_params([initializer, arg_params, …])

如名称所示,此方法将初始化参数和辅助状态。

install_monitor(mon)

此方法将在所有执行器中安装监控程序。

update()

此方法根据已安装的优化器更新给定参数。它还更新在上一个前向反向批处理中计算的梯度。

update_metric(eval_metric, labels[, pre_sliced])

此方法(由名称暗示)评估并累积最后一个前向计算的输出的评估度量。

Attributes

下表显示了 BaseModule 类的方法中包含的属性 -

Attributes

Definition

data_names

其中包含此模块所需数据的名称列表。

data_shapes

其中包含指定此模块的数据输入的 (名称,形状) 对的列表。

label_shapes

其中显示指定此模块的标签输入的 (名称,形状) 对的列表。

output_names

其中包含此模块输出的名称列表。

output_shapes

其中包含指定此模块的输出的 (名称,形状) 对的列表。

output_shapes

其中包含指定此模块的输出的 (名称,形状) 对的列表。

data_shapes - 此处给出的链接 https://mxnet.apache.org 将帮助你更详细地理解属性。

output_shapes - 按照 https://mxnet.apache.org/api 上的链接了解更多详情。

Implementation Examples

在下面的示例中,我们将创建一个 mxnet 模块。

import mxnet as mx
input_data = mx.symbol.Variable('input_data')
f_connected1 = mx.symbol.FullyConnected(data, name='f_connected1', num_hidden=128)
activation_1 = mx.symbol.Activation(f_connected1, name='relu1', act_type="relu")
f_connected2 = mx.symbol.FullyConnected(activation_1, name = 'f_connected2', num_hidden = 64)
activation_2 = mx.symbol.Activation(f_connected2, name='relu2',
act_type="relu")
f_connected3 = mx.symbol.FullyConnected(activation_2, name='fc3', num_hidden=10)
out = mx.symbol.SoftmaxOutput(f_connected3, name = 'softmax')
mod = mx.mod.Module(out)
print(out)

Output

输出如下:

<Symbol softmax>

Example

print(mod)

Output

输出如下所示−

<mxnet.module.module.Module object at 0x00000123A9892F28>

在下例中,我们将实现正向计算

import mxnet as mx
from collections import namedtuple
Batch = namedtuple('Batch', ['data'])
data = mx.sym.Variable('data')
out = data * 2
mod = mx.mod.Module(symbol=out, label_names=None)
mod.bind(data_shapes=[('data', (1, 10))])
mod.init_params()
data1 = [mx.nd.ones((1, 10))]
mod.forward(Batch(data1))
print (mod.get_outputs()[0].asnumpy())

Output

执行以上代码时,应该看到以下输出 −

[[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]]

Example

data2 = [mx.nd.ones((3, 5))]

mod.forward(Batch(data2))
print (mod.get_outputs()[0].asnumpy())

Output

以下是代码的输出 −

[[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]]