ApacheMXNet-PythonAPIモジュール
Apache MXNetのモジュールAPIはFeedForwardモデルに似ており、Torchモジュールと同様に作成が簡単です。以下のクラスで構成されています-
BaseModule([logger])
モジュールの基本クラスを表します。モジュールは、計算コンポーネントまたは計算マシンと考えることができます。モジュールの役割は、順方向パスと逆方向パスを実行することです。また、モデルのパラメーターを更新します。
メソッド
次の表は、 BaseModule class−
このメソッドは、すべてのデバイスから状態を取得しますメソッド | 定義 |
---|---|
後方([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) | 名前が示すように、ファイルからモデルパラメータをロードします。 |
予測(eval_data [、num_batch、…]) | 予測を実行し、出力も収集します。 |
prepare(data_batch [、sparse_row_id_fn]) | オペレーターは、特定のデータバッチを処理するためにモジュールを準備します。 |
save_params(fname) | 名前が示すように、この関数はモデルパラメータをファイルに保存します。 |
スコア(eval_data、eval_metric [、num_batch、…]) | 予測を実行します eval_data また、与えられたに従ってパフォーマンスを評価します eval_metric。 |
set_params(arg_params、aux_params [、…]) | このメソッドは、パラメーターとAux状態の値を割り当てます。 |
set_states([states、value]) | このメソッドは、名前が示すように、状態の値を設定します。 |
更新() | このメソッドは、インストールされているオプティマイザーに従って、指定されたパラメーターを更新します。また、前の前後のバッチで計算された勾配も更新します。 |
update_metric(eval_metric、labels [、pre_sliced]) | このメソッドは、名前が示すように、最後の順方向計算の出力で評価メトリックを評価して累積します。 |
後方([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、…]) | このメソッドは、辞書(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 [、…]) | 名前が示すように、この関数はパラメーターとAux状態値を割り当てます。 |
set_states([states、value]) | このメソッドは、名前が示すように、状態の値を設定します。 |
switch_bucket(bucket_key、data_shapes [、…]) | 別のバケットに切り替わります。 |
更新() | このメソッドは、インストールされているオプティマイザーに従って、指定されたパラメーターを更新します。また、前の前後のバッチで計算された勾配も更新します。 |
update_metric(eval_metric、labels [、pre_sliced]) | このメソッドは、名前が示すように、最後の順方向計算の出力で評価メトリックを評価して累積します。 |
属性
次の表は、次のメソッドで構成される属性を示しています。 BaseModule クラス-
属性 | 定義 |
---|---|
data_names | これは、このモジュールに必要なデータの名前のリストで構成されています。 |
data_shapes | これは、このモジュールへのデータ入力を指定する(名前、形状)ペアのリストで構成されます。 |
label_shapes | このモジュールへのラベル入力を指定する(名前、形状)ペアのリストが表示されます。 |
output_names | これは、このモジュールの出力の名前のリストで構成されています。 |
output_shapes | これは、このモジュールの出力を指定する(名前、形状)ペアのリストで構成されます。 |
シンボル | 指定された名前として、この属性はこのモジュールに関連付けられたシンボルを取得します。 |
data_shapes:で利用可能なリンクを参照できます https://mxnet.apache.org詳細については。output_shapes:詳細
output_shapes:詳細については次のURLをご覧ください。 https://mxnet.apache.org/api/python
BucketingModule(sym_gen […])
それは Bucketingmodule さまざまな長さの入力を効率的に処理するのに役立つモジュールのクラス。
メソッド
次の表は、 BucketingModule class −
属性
次の表は、次のメソッドで構成される属性を示しています。 BaseModule class −
属性 | 定義 |
---|---|
data_names | これは、このモジュールに必要なデータの名前のリストで構成されています。 |
data_shapes | これは、このモジュールへのデータ入力を指定する(名前、形状)ペアのリストで構成されます。 |
label_shapes | このモジュールへのラベル入力を指定する(名前、形状)ペアのリストが表示されます。 |
output_names | これは、このモジュールの出力の名前のリストで構成されています。 |
output_shapes | これは、このモジュールの出力を指定する(名前、形状)ペアのリストで構成されます。 |
シンボル | 指定された名前として、この属性はこのモジュールに関連付けられたシンボルを取得します。 |
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 class −
メソッド | 定義 |
---|---|
後方([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 [、…]) | 名前が示すように、この関数はパラメーターとAux状態値を割り当てます。 |
set_states([states、value]) | このメソッドは、名前が示すように、状態の値を設定します。 |
更新() | このメソッドは、インストールされているオプティマイザーに従って、指定されたパラメーターを更新します。また、前の前後のバッチで計算された勾配も更新します。 |
update_metric(eval_metric、labels [、pre_sliced]) | このメソッドは、名前が示すように、最後の順方向計算の出力で評価メトリックを評価して累積します。 |
属性
次の表は、次のメソッドで構成される属性を示しています。 Module class −
属性 | 定義 |
---|---|
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のすべてまたは多くを空の関数として実装する便利なモジュールクラスです。
メソッド
次の表は、 PythonLossModule クラス:
メソッド | 定義 |
---|---|
後方([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のすべてまたは多くを空の関数として実装する便利なモジュールクラスでもあります。
メソッド
次の表は、 PythonModule クラス-
メソッド | 定義 |
---|---|
bind(data_shapes [、label_shapes、…]) | シンボルをバインドしてエグゼキュータを構築し、モジュールで計算を実行する前に必要です。 |
get_params() | パラメータ、特にデバイスで計算を行うために使用される実際のパラメータのコピーである可能性のあるパラメータを取得します。 |
init_optimizer([kvstore、optimizer、…]) | このメソッドは、オプティマイザをインストールして初期化します。また、初期化しますkvstore トレーニングを配布するため。 |
init_params([initializer、arg_params、…]) | 名前が示すように、このメソッドはパラメーターと補助状態を初期化します。 |
更新() | このメソッドは、インストールされているオプティマイザーに従って、指定されたパラメーターを更新します。また、前の前後のバッチで計算された勾配も更新します。 |
update_metric(eval_metric、labels [、pre_sliced]) | このメソッドは、名前が示すように、最後の順方向計算の出力で評価メトリックを評価して累積します。 |
属性
次の表は、次のメソッドで構成される属性を示しています。 PythonModule クラス-
属性 | 定義 |
---|---|
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クラスは、3つ以上の(複数の)モジュールをチェーン化できるコンテナーモジュールでもあります。
メソッド
次の表は、 SequentialModule クラス
メソッド | 定義 |
---|---|
add(module、** kwargs) | これは、このクラスの最も重要な機能です。チェーンにモジュールを追加します。 |
後方([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_metric(eval_metric、labels [、pre_sliced]) | このメソッドは、名前が示すように、最後の順方向計算の出力で評価メトリックを評価して累積します。 |
属性
次の表は、BaseModuleクラスのメソッドで構成される属性を示しています。
属性 | 定義 |
---|---|
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 詳細については。
実装例
以下の例では、 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.]]