
- Apache MXNet 教程
- Apache MXNet - 首頁
- Apache MXNet - 簡介
- Apache MXNet - 安裝 MXNet
- Apache MXNet - 工具包和生態系統
- Apache MXNet - 系統架構
- Apache MXNet - 系統元件
- Apache MXNet - 統一運算元 API
- Apache MXNet - 分散式訓練
- Apache MXNet - Python 包
- Apache MXNet - NDArray
- Apache MXNet - Gluon
- Apache MXNet - KVStore 和視覺化
- Apache MXNet - Python API ndarray
- Apache MXNet - Python API gluon
- Apache MXNet - Python API autograd 和初始化器
- Apache MXNet - Python API Symbol
- Apache MXNet - Python API 模組
- Apache MXNet 有用資源
- Apache MXNet - 快速指南
- Apache MXNet - 有用資源
- Apache MXNet - 討論
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_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[…])
它表示模組的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.]]