Apache MXNet - Python API 模块



Apache MXNet 的模块 API 类似于一个前馈模型,并且更容易组合,类似于 Torch 模块。它包含以下类:

BaseModule([logger])

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

方法

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

此方法将从所有设备获取状态
方法 定义
backward([out_grads]) 顾名思义,此方法实现了反向计算。
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]) 顾名思义,此方法实现了反向计算。
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, …]) 此方法将从一个字典 (dict) 创建模型,该字典将bucket_key映射到符号。它还共享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]) 此方法(顾名思义)评估并在最后一次前向计算的输出上累积评估指标。

属性

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

属性 定义
data_names 它包含此模块所需数据的名称列表。
data_shapes 它包含指定此模块的数据输入的 (name, shape) 对列表。
label_shapes 它显示指定此模块的标签输入的 (name, shape) 对列表。
output_names 它包含此模块输出的名称列表。
output_shapes 它包含指定此模块输出的 (name, shape) 对列表。
symbol 如名称指定,此属性获取与此模块关联的符号。

data_shapes:您可以参考https://mxnet.apache.org上的链接以获取详细信息。output_shapes:更多

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

BucketingModule(sym_gen[…])

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

方法

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

属性

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

属性 定义
data_names 它包含此模块所需数据的名称列表。
data_shapes 它包含指定此模块的数据输入的 (name, shape) 对列表。
label_shapes 它显示指定此模块的标签输入的 (name, shape) 对列表。
output_names 它包含此模块输出的名称列表。
output_shapes 它包含指定此模块输出的 (name, shape) 对列表。
符号 如名称指定,此属性获取与此模块关联的符号。

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的基本模块。

方法

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

方法 定义
backward([out_grads]) 顾名思义,此方法实现了反向计算。
bind(data_shapes[, label_shapes, …]) 它绑定符号以构建执行器,这在执行模块计算之前是必要的。
borrow_optimizer(shared_module) 顾名思义,此方法将从共享模块借用优化器。
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_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]) 此方法(顾名思义)评估并在最后一次前向计算的输出上累积评估指标。

属性

下表显示了Module 类方法中包含的属性:

属性 定义
data_names 它包含此模块所需数据的名称列表。
data_shapes 它包含指定此模块的数据输入的 (name, shape) 对列表。
label_shapes 它显示指定此模块的标签输入的 (name, shape) 对列表。
output_names 它包含此模块输出的名称列表。
output_shapes 它包含指定此模块输出的 (name, shape) 对列表。
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 作为空函数实现。

方法

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

方法 定义
backward([out_grads]) 顾名思义,此方法实现了反向计算。
forward(data_batch[, is_train]) 顾名思义,此方法实现了前向计算。此方法支持具有各种形状的数据批次,例如不同的批次大小或不同的图像大小。
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 作为空函数实现。

方法

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

方法 定义
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]) 此方法(顾名思义)评估并在最后一次前向计算的输出上累积评估指标。

属性

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

属性 定义
data_names 它包含此模块所需数据的名称列表。
data_shapes 它包含指定此模块的数据输入的 (name, shape) 对列表。
label_shapes 它显示指定此模块的标签输入的 (name, shape) 对列表。
output_names 它包含此模块输出的名称列表。
output_shapes 它包含指定此模块输出的 (name, shape) 对列表。

data_shapes - 请访问https://mxnet.apache.org以获取详细信息。

output_shapes - 有关更多详细信息,请访问https://mxnet.apache.org上提供的链接

SequentialModule([logger])

此类的基类是mxnet.module.base_module.BaseModule。SequentialModule 类也是一个容器模块,可以将两个以上(多个)模块链接在一起。

方法

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

方法 定义
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]) 此方法(顾名思义)评估并在最后一次前向计算的输出上累积评估指标。

属性

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

属性 定义
data_names 它包含此模块所需数据的名称列表。
data_shapes 它包含指定此模块的数据输入的 (name, shape) 对列表。
label_shapes 它显示指定此模块的标签输入的 (name, shape) 对列表。
output_names 它包含此模块输出的名称列表。
output_shapes 它包含指定此模块输出的 (name, shape) 对列表。
output_shapes 它包含指定此模块输出的 (name, shape) 对列表。

data_shapes - 此处提供的链接https://mxnet.apache.org将帮助您更详细地了解该属性。

输出形状 - 有关详细信息,请访问 https://mxnet.apache.org/api 提供的链接。

实现示例

在下面的示例中,我们将创建一个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)

输出

输出如下所示 -

<Symbol softmax>

示例

print(mod)

输出

输出如下所示 -

<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())

输出

执行上述代码时,您应该看到以下输出 -

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

示例

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

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

输出

以下是代码的输出 -

[[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2.]]
广告