Apache MXNet - Python API 模块
Apache MXNet 的模块 API 类似于 FeedForward 模型,并且与 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, …]) | 此方法将从将 bucket_key 映射到符号的字典 (dict) 创建一个模型。它还共享 arg_params 和 aux_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[…])
它表示 Module 的 Bucketingmodule 类,有助于有效处理不同长度的输入。
方法
下表显示了 BucketingModule 类 中包含的方法 −
属性
下表显示了 BaseModule 的方法中包含的属性类 −
属性 | 定义 |
---|---|
data_names | 它由该模块所需数据的名称列表组成。 |
data_shapes | 它由指定该模块数据输入的 (name, shape) 对列表组成。 |
label_shapes | 它显示指定该模块标签输入的 (name, shape) 对列表。 |
output_names | 它由该模块输出的名称列表组成模块。 |
output_shapes | 它由指定此模块输出的 (name, shape) 对列表组成。 |
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 的基本模块。
方法
下表显示了 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 将帮助您详细了解该属性。
output_shapes − 请访问 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.]]