📅  最后修改于: 2020-12-10 04:57:28             🧑  作者: Mango
Apache MXNet的模块API类似于FeedForward模型,并且与Torch模块类似,编写起来也更容易。它由以下几类组成-
它代表模块的基类。可以将模块视为计算组件或计算机。模块的工作是执行向前和向后传递。它还会更新模型中的参数。
下表显示了BaseModule类中包含的方法-
Methods | Definition |
---|---|
backward([out_grads]) | As name implies this method implements the backward computation. |
bind(data_shapes[, label_shapes, …]) | It binds the symbols to construct executors and it is necessary before one can perform computation with the module. |
fit(train_data[, eval_data, eval_metric, …]) | This method trains the module parameters. |
forward(data_batch[, is_train]) | As name implies this method implements the Forward computation. This method supports data batches with various shapes like different batch sizes or different image sizes. |
forward_backward(data_batch) | It is a convenient function, as name implies, that calls both forward and backward. |
get_input_grads([merge_multi_context]) | This method will gets the gradients to the inputs which is computed in the previous backward computation. |
get_outputs([merge_multi_context]) | As name implies, this method will gets outputs of the previous forward computation. |
get_params() | It gets the parameters especially those which are potentially copies of the actual parameters used to do computation on the device. |
get_states([merge_multi_context]) | |
init_optimizer([kvstore, optimizer, …]) | This method installs and initialize the optimizers. It also initializes kvstore for distribute training. |
init_params([initializer, arg_params, …]) | As name implies, this method will initialize the parameters and auxiliary states. |
install_monitor(mon) | This method will install monitor on all executors. |
iter_predict(eval_data[, num_batch, reset, …]) | This method will iterate over predictions. |
load_params(fname) | It will, as name specifies, load model parameters from file. |
predict(eval_data[, num_batch, …]) | It will run the prediction and collects the outputs as well. |
prepare(data_batch[, sparse_row_id_fn]) | The operator prepares the module for processing a given data batch. |
save_params(fname) | As name specifies, this function will save the model parameters to file. |
score(eval_data, eval_metric[, num_batch, …]) | It runs the prediction on eval_data and also evaluates the performance according to the given eval_metric. |
set_params(arg_params, aux_params[, …]) | This method will assign the parameter and aux state values. |
set_states([states, value]) | This method, as name implies, sets value for states. |
update() | This method updates the given parameters according to the installed optimizer. It also updates the gradients computed in the previous forward-backward batch. |
update_metric(eval_metric, labels[, pre_sliced]) | This method, as name implies, evaluates and accumulates the evaluation metric on outputs of the last forward computation. |
backward([out_grads]) | As name implies this method implements the backward computation. |
bind(data_shapes[, label_shapes, …]) | It set up the buckets and binds the executor for the default bucket key. This method represents the binding for a BucketingModule. |
forward(data_batch[, is_train]) | As name implies this method implements the Forward computation. This method supports data batches with various shapes like different batch sizes or different image sizes. |
get_input_grads([merge_multi_context]) | This method will get the gradients to the inputs which is computed in the previous backward computation. |
get_outputs([merge_multi_context]) | As name implies, this method will get outputs from the previous forward computation. |
get_params() | It gets the current parameters especially those which are potentially copies of the actual parameters used to do computation on the device. |
get_states([merge_multi_context]) | This method will get states from all devices. |
init_optimizer([kvstore, optimizer, …]) | This method installs and initialize the optimizers. It also initializes kvstore for distribute training. |
init_params([initializer, arg_params, …]) | As name implies, this method will initialize the parameters and auxiliary states. |
install_monitor(mon) | This method will install monitor on all executors. |
load(prefix, epoch[, sym_gen, …]) | This method will create a model from the previously saved checkpoint. |
load_dict([sym_dict, sym_gen, …]) | This method will create a model from a dictionary (dict) mapping bucket_key to symbols. It also shares arg_params and aux_params. |
prepare(data_batch[, sparse_row_id_fn]) | The operator prepares the module for processing a given data batch. |
save_checkpoint(prefix, epoch[, remove_amp_cast]) | This method, as name implies, saves the current progress to the checkpoint for all buckets in BucketingModule. It is recommended to use mx.callback.module_checkpoint as epoch_end_callback to save during training. |
set_params(arg_params, aux_params[,…]) | As name specifies, this function will assign parameters and aux state values. |
set_states([states, value]) | This method, as name implies, sets value for states. |
switch_bucket(bucket_key, data_shapes[, …]) | It will switche to a different bucket. |
update() | This method updates the given parameters according to the installed optimizer. It also updates the gradients computed in the previous forward-backward batch. |
update_metric(eval_metric, labels[, pre_sliced]) | This method, as name implies, evaluates and accumulates the evaluation metric on outputs of the last forward computation. |
下表显示了BaseModule类的方法中包含的属性-
Attributes | Definition |
---|---|
data_names | It consists of the list of names for data required by this module. |
data_shapes | It consists of the list of (name, shape) pairs specifying the data inputs to this module. |
label_shapes | It shows the list of (name, shape) pairs specifying the label inputs to this module. |
output_names | It consists of the list of names for the outputs of this module. |
output_shapes | It consists of the list of (name, shape) pairs specifying the outputs of this module. |
symbol | As name specified, this attribute gets the symbol associated with this module. |
data_shapes:有关详细信息,请参考https://mxnet.apache.org上的可用链接。 output_shapes:更多
output_shapes:有关更多信息,请访问https://mxnet.apache.org/api/ Python
它代表模块的Bucketingmodule类,有助于有效处理各种长度的输入。
下表显示了BucketingModule类中包含的方法-
下表显示了BaseModule类的方法中包含的属性–
Attributes | Definition |
---|---|
data_names | It consists of the list of names for data required by this module. |
data_shapes | It consists of the list of (name, shape) pairs specifying the data inputs to this module. |
label_shapes | It shows the list of (name, shape) pairs specifying the label inputs to this module. |
output_names | It consists of the list of names for the outputs of this module. |
output_shapes | It consists of the list of (name, shape) pairs specifying the outputs of this module. |
Symbol | As name specified, this attribute gets the symbol associated with this module. |
data_shapes-有关更多信息,请参见https://mxnet.apache.org/api/ Python/ docs上的链接。
output_shapes-有关更多信息,请参见https://mxnet.apache.org/api/ Python/ docs上的链接。
它代表包装符号的基本模块。
下表显示了Module类中包含的方法-
Methods | Definition |
---|---|
backward([out_grads]) | As name implies this method implements the backward computation. |
bind(data_shapes[, label_shapes, …]) | It binds the symbols to construct executors and it is necessary before one can perform computation with the module. |
borrow_optimizer(shared_module) | As name implies, this method will borrow the optimizer from a shared module. |
forward(data_batch[, is_train]) | As name implies this method implements the Forward computation. This method supports data batches with various shapes like different batch sizes or different image sizes. |
get_input_grads([merge_multi_context]) | This method will gets the gradients to the inputs which is computed in the previous backward computation. |
get_outputs([merge_multi_context]) | As name implies, this method will gets outputs of the previous forward computation. |
get_params() | It gets the parameters especially those which are potentially copies of the actual parameters used to do computation on the device. |
get_states([merge_multi_context]) | This method will get states from all devices |
init_optimizer([kvstore, optimizer, …]) | This method installs and initialize the optimizers. It also initializes kvstore for distribute training. |
init_params([initializer, arg_params, …]) | As name implies, this method will initialize the parameters and auxiliary states. |
install_monitor(mon) | This method will install monitor on all executors. |
load(prefix, epoch[, sym_gen, …]) | This method will create a model from the previously saved checkpoint. |
load_optimizer_states(fname) | This method will load an optimizer i.e. the updater state from a file. |
prepare(data_batch[, sparse_row_id_fn]) | The operator prepares the module for processing a given data batch. |
reshape(data_shapes[, label_shapes]) | This method, as name implies, reshape the module for new input shapes. |
save_checkpoint(prefix, epoch[, …]) | It saves the current progress to checkpoint. |
save_optimizer_states(fname) | This method saves the optimizer or the updater state to a file. |
set_params(arg_params, aux_params[,…]) | As name specifies, this function will assign parameters and aux state values. |
set_states([states, value]) | This method, as name implies, sets value for states. |
update() | This method updates the given parameters according to the installed optimizer. It also updates the gradients computed in the previous forward-backward batch. |
update_metric(eval_metric, labels[, pre_sliced]) | This method, as name implies, evaluates and accumulates the evaluation metric on outputs of the last forward computation. |
下表显示了Module类的方法中包含的属性-
Attributes | Definition |
---|---|
data_names | It consists of the list of names for data required by this module. |
data_shapes | It consists of the list of (name, shape) pairs specifying the data inputs to this module. |
label_shapes | It shows the list of (name, shape) pairs specifying the label inputs to this module. |
output_names | It consists of the list of names for the outputs of this module. |
output_shapes | It consists of the list of (name, shape) pairs specifying the outputs of this module. |
label_names | It consists of the list of names for labels required by this module. |
data_shapes:有关更多详细信息,请访问链接https://mxnet.apache.org/api/ Python/ docs / api / module 。
output_shapes:此处提供的链接https://mxnet.apache.org/api/ Python/docs/api/module/index.html将提供其他重要信息。
此类的基础是mxnet.module.python_module.PythonModule。 PythonLossModule类是一个方便的模块类,它将所有或许多模块API实现为空函数。
下表显示了PythonLossModule类中包含的方法:
Methods | Definition |
---|---|
backward([out_grads]) | As name implies this method implements the backward computation. |
forward(data_batch[, is_train]) | As name implies this method implements the Forward computation. This method supports data batches with various shapes like different batch sizes or different image sizes. |
get_input_grads([merge_multi_context]) | This method will gets the gradients to the inputs which is computed in the previous backward computation. |
get_outputs([merge_multi_context]) | As name implies, this method will gets outputs of the previous forward computation. |
install_monitor(mon) | This method will install monitor on all executors. |
此类的基础是mxnet.module.base_module.BaseModule。 PythonModule类还是一个方便的模块类,它将所有或许多模块API实现为空函数。
下表显示了PythonModule类中包含的方法-
Methods | Definition |
---|---|
bind(data_shapes[, label_shapes, …]) | It binds the symbols to construct executors and it is necessary before one can perform computation with the module. |
get_params() | It gets the parameters especially those which are potentially copies of the actual parameters used to do computation on the device. |
init_optimizer([kvstore, optimizer, …]) | This method installs and initialize the optimizers. It also initializes kvstore for distribute training. |
init_params([initializer, arg_params, …]) | As name implies, this method will initialize the parameters and auxiliary states. |
update() | This method updates the given parameters according to the installed optimizer. It also updates the gradients computed in the previous forward-backward batch. |
update_metric(eval_metric, labels[, pre_sliced]) | This method, as name implies, evaluates and accumulates the evaluation metric on outputs of the last forward computation. |
下表显示了PythonModule类的方法中包含的属性-
Attributes | Definition |
---|---|
data_names | It consists of the list of names for data required by this module. |
data_shapes | It consists of the list of (name, shape) pairs specifying the data inputs to this module. |
label_shapes | It shows the list of (name, shape) pairs specifying the label inputs to this module. |
output_names | It consists of the list of names for the outputs of this module. |
output_shapes | It consists of the list of (name, shape) pairs specifying the outputs of this module. |
data_shapes-有关详细信息,请单击链接https://mxnet.apache.org 。
output_shapes-有关更多详细信息,请访问位于https://mxnet.apache.org的链接。
此类的基础是mxnet.module.base_module.BaseModule。 SequentialModule类也是一个容器模块,可以将两个以上(多个)模块链接在一起。
下表显示了SequentialModule类中包含的方法
Methods | Definition |
---|---|
add(module, **kwargs) | This is most important function of this class. It adds a module to the chain. |
backward([out_grads]) | As name implies this method implements the backward computation. |
bind(data_shapes[, label_shapes, …]) | It binds the symbols to construct executors and it is necessary before one can perform computation with the module. |
forward(data_batch[, is_train]) | As name implies this method implements the Forward computation. This method supports data batches with various shapes like different batch sizes or different image sizes. |
get_input_grads([merge_multi_context]) | This method will gets the gradients to the inputs which is computed in the previous backward computation. |
get_outputs([merge_multi_context]) | As name implies, this method will gets outputs of the previous forward computation. |
get_params() | It gets the parameters especially those which are potentially copies of the actual parameters used to do computation on the device. |
init_optimizer([kvstore, optimizer, …]) | This method installs and initialize the optimizers. It also initializes kvstore for distribute training. |
init_params([initializer, arg_params, …]) | As name implies, this method will initialize the parameters and auxiliary states. |
install_monitor(mon) | This method will install monitor on all executors. |
update() | This method updates the given parameters according to the installed optimizer. It also updates the gradients computed in the previous forward-backward batch. |
update_metric(eval_metric, labels[, pre_sliced]) | This method, as name implies, evaluates and accumulates the evaluation metric on outputs of the last forward computation. |
下表显示了BaseModule类的方法中包含的属性-
Attributes | Definition |
---|---|
data_names | It consists of the list of names for data required by this module. |
data_shapes | It consists of the list of (name, shape) pairs specifying the data inputs to this module. |
label_shapes | It shows the list of (name, shape) pairs specifying the label inputs to this module. |
output_names | It consists of the list of names for the outputs of this module. |
output_shapes | It consists of the list of (name, shape) pairs specifying the outputs of this module. | output_shapes | It consists of the list of (name, shape) pairs specifying the outputs of this module. |
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)
输出
输出在下面提到-
例
print(mod)
输出
输出如下所示-
在下面的示例中,我们将实现正向计算
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.]]