ApacheMXNet-PythonAPIグルーオン

前の章ですでに説明したように、MXNet Gluonは、DLプロジェクトに明確で簡潔でシンプルなAPIを提供します。これにより、Apache MXNetは、トレーニング速度を損なうことなく、DLモデルのプロトタイプ作成、構築、トレーニングを行うことができます。

コアモジュール

Apache MXNet Pythonアプリケーションプログラミングインターフェイス(API)グルーオンのコアモジュールを学びましょう。

gluon.nn

Gluonは、gluon.nnモジュールに多数の組み込みNNレイヤーを提供します。それがコアモジュールと呼ばれる理由です。

メソッドとそのパラメータ

以下は、以下でカバーされる重要なメソッドとそのパラメータの一部です。 mxnet.gluon.nn コアモジュール-

メソッドとそのパラメータ 定義
アクティベーション(アクティベーション、** kwargs) 名前が示すように、このメソッドは入力に活性化関数を適用します。
AvgPool1D([pool_size、strides、padding、…]) これは、時間データの平均プーリング操作です。
AvgPool2D([pool_size、strides、padding、…]) これは、空間データの平均的なプーリング操作です。
AvgPool3D([pool_size、strides、padding、…]) これは、3Dデータの平均プーリング操作です。データは、空間的または時空間的である可能性があります。
BatchNorm([軸、運動量、イプシロン、中心、…]) バッチ正規化レイヤーを表します。
BatchNormReLU([軸、運動量、イプシロン、…]) また、バッチ正規化レイヤーを表しますが、Reluアクティベーション機能を備えています。
Block([prefix、params]) これは、すべてのニューラルネットワークレイヤーとモデルの基本クラスを提供します。
Conv1D(channels、kernel_size [、strides、…]) この方法は、1次元畳み込み層に使用されます。たとえば、時間畳み込み。
Conv1DTranspose(channels、kernel_size [、…]) この方法は、転置された1D畳み込みレイヤーに使用されます。
Conv2D(channels、kernel_size [、strides、…]) この方法は、2D畳み込みレイヤーに使用されます。たとえば、画像上の空間畳み込み)。
Conv2DTranspose(channels、kernel_size [、…]) この方法は、転置された2D畳み込みレイヤーに使用されます。
Conv3D(channels、kernel_size [、strides、…]) この方法は、3D畳み込みレイヤーに使用されます。たとえば、ボリューム上の空間畳み込み。
Conv3DTranspose(channels、kernel_size [、…]) この方法は、転置された3D畳み込みレイヤーに使用されます。
Dense(units [、activation、use_bias、…]) この方法は、通常の密に接続されたNNレイヤーを表します。
ドロップアウト(レート[、軸]) 名前が示すように、このメソッドはドロップアウトを入力に適用します。
ELU(α) この方法は、指数線形単位(ELU)に使用されます。
埋め込み(input_dim、output_dim [、dtype、…]) 非負の整数を固定サイズの密なベクトルに変換します。
Flatten(** kwargs) この方法は、入力を2次元に平坦化します。
GELU(** kwargs) この方法は、ガウス指数線形単位(GELU)に使用されます。
GlobalAvgPool1D([layout]) この方法を使用すると、時間データのグローバル平均プーリング操作を実行できます。
GlobalAvgPool2D([layout]) この方法を使用すると、空間データのグローバル平均プーリング操作を実行できます。
GlobalAvgPool3D([layout]) この方法を使用すると、3Dデータのグローバル平均プーリング操作を実行できます。
GlobalMaxPool1D([layout]) この方法を使用すると、1次元データのグローバル最大プーリング操作を実行できます。
GlobalMaxPool2D([layout]) この方法を使用すると、2次元データのグローバル最大プーリング操作を実行できます。
GlobalMaxPool3D([layout]) この方法を使用すると、3Dデータのグローバル最大プーリング操作を実行できます。
GroupNorm([num_groups、epsilon、center、…]) このメソッドは、グループの正規化をnD入力配列に適用します。
HybridBlock([prefix、params]) この方法は、両方での転送をサポートします Symbol そして NDArray
HybridLambda(関数[、プレフィックス]) このメソッドを使用して、演算子または式をHybridBlockオブジェクトとしてラップできます。
HybridSequential([prefix、params]) HybridBlocksを順番にスタックします。
InstanceNorm([axis、epsilon、center、scale、…]) このメソッドは、インスタンスの正規化をnD入力配列に適用します。

実装例

以下の例では、すべてのニューラルネットワークレイヤーとモデルの基本クラスを提供するBlock()を使用します。

from mxnet.gluon import Block, nn
class Model(Block):
   def __init__(self, **kwargs):
      super(Model, self).__init__(**kwargs)
      # use name_scope to give child Blocks appropriate names.
      with self.name_scope():
         self.dense0 = nn.Dense(20)
         self.dense1 = nn.Dense(20)
   def forward(self, x):

      x = mx.nd.relu(self.dense0(x))
      return mx.nd.relu(self.dense1(x))

model = Model()
model.initialize(ctx=mx.cpu(0))
model(mx.nd.zeros((5, 5), ctx=mx.cpu(0)))

Output

次の出力が表示されます-

[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
<NDArray 5x20 @cpu(0)*gt;

以下の例では、SymbolとNDArrayの両方で転送をサポートするHybridBlock()を使用します。

import mxnet as mx
from mxnet.gluon import HybridBlock, nn


class Model(HybridBlock):
   def __init__(self, **kwargs):
      super(Model, self).__init__(**kwargs)
      # use name_scope to give child Blocks appropriate names.
      with self.name_scope():
         self.dense0 = nn.Dense(20)
         self.dense1 = nn.Dense(20)

   def forward(self, x):
      x = nd.relu(self.dense0(x))
      return nd.relu(self.dense1(x))
model = Model()
model.initialize(ctx=mx.cpu(0))

model.hybridize()
model(mx.nd.zeros((5, 5), ctx=mx.cpu(0)))

Output

出力は以下に記載されています-

[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]]
<NDArray 5x20 @cpu(0)>

gluon.rnn

Gluonは多数の組み込みを提供します recurrent neural networkgluon.rnnモジュールの(RNN)レイヤー。それがコアモジュールと呼ばれる理由です。

メソッドとそのパラメータ

以下は、以下でカバーされる重要なメソッドとそのパラメータの一部です。 mxnet.gluon.nn コアモジュール:

メソッドとそのパラメータ 定義
BidirectionCell(l_cell、r_cell [、…]) 双方向リカレントニューラルネットワーク(RNN)セルに使用されます。
DropoutCell(rate [、axes、prefix、params]) このメソッドは、指定された入力にドロップアウトを適用します。
GRU(hidden_​​size [、num_layers、layout、…]) これは、多層ゲート付き回帰ユニット(GRU)RNNを特定の入力シーケンスに適用します。
GRUCell(hidden_​​size [、…]) ゲート付き回帰ユニット(GRU)ネットワークセルに使用されます。
HybridRecurrentCell([prefix、params]) このメソッドはハイブリッド化をサポートします。
HybridSequentialRNNCell([prefix、params]) この方法を使用すると、複数のHybridRNNセルを順番にスタックできます。
LSTM(hidden_​​size [、num_layers、layout、…])0 これは、マルチレイヤーの長短期記憶(LSTM)RNNを特定の入力シーケンスに適用します。
LSTMCell(hidden_​​size [、…]) これは、Long-Short Term Memory(LSTM)ネットワークセルに使用されます。
ModifierCell(base_cell) これは、修飾子セルの基本クラスです。
RNN(hidden_​​size [、num_layers、activation、…]) 多層ElmanRNNを適用します tanh または ReLU 与えられた入力シーケンスに対する非線形性。
RNNCell(hidden_​​size [、activation、…]) ElmanRNNリカレントニューラルネットワークセルに使用されます。
RecurrentCell([prefix、params]) これは、RNNセルの抽象基本クラスを表します。
SequentialRNNCell([prefix、params]) この方法を使用すると、複数のRNNセルを順番にスタックできます。
ZoneoutCell(base_cell [、zoneout_outputs、…]) このメソッドは、ベースセルにゾーンアウトを適用します。

実装例

以下の例では、マルチレイヤーゲート付き回帰ユニット(GRU)RNNを特定の入力シーケンスに適用するGRU()を使用します。

layer = mx.gluon.rnn.GRU(100, 3)
layer.initialize()
input_seq = mx.nd.random.uniform(shape=(5, 3, 10))
out_seq = layer(input_seq)
h0 = mx.nd.random.uniform(shape=(3, 3, 100))
out_seq, hn = layer(input_seq, h0)
out_seq

Output

これにより、次の出力が生成されます-

[[[ 1.50152072e-01 5.19012511e-01 1.02390535e-01 ... 4.35803324e-01
1.30406499e-01 3.30152437e-02]
[ 2.91542172e-01 1.02243155e-01 1.73325196e-01 ... 5.65296151e-02
1.76546033e-02 1.66693389e-01]
[ 2.22257316e-01 3.76294643e-01 2.11277917e-01 ... 2.28903517e-01
3.43954474e-01 1.52770668e-01]]


[[ 1.40634328e-01 2.93247789e-01 5.50393537e-02 ... 2.30207980e-01
6.61415309e-02 2.70989928e-02]
[ 1.11081995e-01 7.20834285e-02 1.08342394e-01 ... 2.28330195e-02
6.79589901e-03 1.25501186e-01]
[ 1.15944080e-01 2.41565228e-01 1.18612610e-01 ... 1.14908054e-01
1.61080107e-01 1.15969211e-01]]
………………………….

Example

hn

Output

これにより、次の出力が生成されます-

[[[-6.08105101e-02 3.86217088e-02   6.64453954e-03 8.18805695e-02
3.85607071e-02 -1.36945639e-02 7.45836645e-03 -5.46515081e-03
9.49622393e-02 6.39371723e-02 -6.37890724e-03 3.82240303e-02
9.11015049e-02 -2.01375950e-02 -7.29381144e-02 6.93765879e-02
2.71829776e-02 -6.64435029e-02 -8.45306814e-02 -1.03075653e-01
6.72040805e-02 -7.06537142e-02 -3.93818803e-02 5.16211614e-03
-4.79770005e-02 1.10734522e-01 1.56721435e-02 -6.93409378e-03
1.16915874e-01 -7.95962065e-02 -3.06530762e-02 8.42394680e-02
7.60370195e-02 2.17055440e-01 9.85361822e-03 1.16660878e-01
4.08297703e-02 1.24978097e-02 8.25245082e-02 2.28673983e-02
-7.88266212e-02 -8.04114193e-02 9.28791538e-02 -5.70827350e-03
-4.46166918e-02 -6.41122833e-02 1.80885363e-02 -2.37745279e-03
4.37298454e-02 1.28888980e-01 -3.07202265e-02 2.50503756e-02
4.00907174e-02 3.37077095e-03 -1.78839862e-02 8.90695080e-02
6.30150884e-02 1.11416787e-01 2.12221760e-02 -1.13236710e-01
5.39616570e-02 7.80710578e-02 -2.28817668e-02 1.92073174e-02
………………………….

以下の例では、指定された入力シーケンスに長短期記憶(LSTM)RNNを適用するLSTM()を使用します。

layer = mx.gluon.rnn.LSTM(100, 3)
layer.initialize()

input_seq = mx.nd.random.uniform(shape=(5, 3, 10))
out_seq = layer(input_seq)
h0 = mx.nd.random.uniform(shape=(3, 3, 100))
c0 = mx.nd.random.uniform(shape=(3, 3, 100))
out_seq, hn = layer(input_seq,[h0,c0])
out_seq

Output

出力は以下に記載されています-

[[[ 9.00025964e-02 3.96071747e-02 1.83841765e-01 ... 3.95872220e-02
1.25569820e-01 2.15555862e-01]
[ 1.55962542e-01 -3.10300849e-02 1.76772922e-01 ... 1.92474753e-01
2.30574399e-01 2.81707942e-02]
[ 7.83204585e-02 6.53361529e-03 1.27262697e-01 ... 9.97719541e-02
1.28254429e-01 7.55299702e-02]]
[[ 4.41036932e-02 1.35250352e-02 9.87644792e-02 ... 5.89378644e-03
5.23949116e-02 1.00922674e-01]
[ 8.59075040e-02 -1.67027581e-02 9.69351009e-02 ... 1.17763653e-01
9.71239135e-02 2.25218050e-02]
[ 4.34580036e-02 7.62207608e-04 6.37005866e-02 ... 6.14888743e-02
5.96345589e-02 4.72368896e-02]]
……………

Example

hn

Output

コードを実行すると、次の出力が表示されます-

[
[[[ 2.21408084e-02 1.42750628e-02 9.53067932e-03 -1.22849066e-02
1.78788435e-02 5.99269159e-02 5.65306023e-02 6.42553642e-02
6.56616641e-03 9.80876666e-03 -1.15729487e-02 5.98640442e-02
-7.21173314e-03 -2.78371759e-02 -1.90690923e-02 2.21447181e-02
8.38765781e-03 -1.38521893e-02 -9.06938594e-03 1.21346042e-02
6.06449470e-02 -3.77471633e-02 5.65885007e-02 6.63008019e-02
-7.34188128e-03 6.46054149e-02 3.19911093e-02 4.11194898e-02
4.43960279e-02 4.92892228e-02 1.74766723e-02 3.40303481e-02
-5.23341820e-03 2.68163737e-02 -9.43402853e-03 -4.11836170e-02
1.55221792e-02 -5.05655073e-02 4.24557598e-03 -3.40388380e-02
……………………

トレーニングモジュール

Gluonのトレーニングモジュールは次のとおりです-

gluon.loss

mxnet.gluon.lossモジュール、Gluonは事前定義された損失関数を提供します。基本的に、ニューラルネットワークのトレーニングには損失があります。それがトレーニングモジュールと呼ばれる理由です。

メソッドとそのパラメータ

以下は、以下でカバーされる重要なメソッドとそのパラメータの一部です。 mxnet.gluon.loss トレーニングモジュール:

メソッドとそのパラメータ 定義
損失(重量、batch_axis、** kwargs) これは、損失の基本クラスとして機能します。
L2Loss([weight、batch_axis]) 間の平均二乗誤差(MSE)を計算します label そして prediction(pred)
L1Loss([weight、batch_axis]) 間の平均絶対誤差(MAE)を計算します label そして pred
SigmoidBinaryCrossEntropyLoss([…]) この方法は、二項分類のクロスエントロピー損失に使用されます。
SigmoidBCELoss この方法は、二項分類のクロスエントロピー損失に使用されます。
SoftmaxCrossEntropyLoss([axis、…]) ソフトマックスクロスエントロピー損失(CEL)を計算します。
SoftmaxCELoss また、softmaxクロスエントロピー損失も計算します。
KLDivLoss([from_logits、axis、weight、…]) これは、クルバック-ライブラーの発散損失に使用されます。
CTCLoss([layout、label_layout、weight]) これは、接続者の時間的分類損失(TCL)に使用されます。
HuberLoss([rho、weight、batch_axis]) 平滑化されたL1損失を計算します。平滑化されたL1損失は、絶対誤差がrhoを超える場合はL1損失に等しくなりますが、それ以外の場合はL2損失に等しくなります。
HingeLoss([マージン、重量、batch_axis]) このメソッドは、SVMでよく使用されるヒンジ損失関数を計算します。
SquaredHingeLoss([margin、weight、batch_axis]) このメソッドは、SVMで使用されるソフトマージン損失関数を計算します。
LogisticLoss([weight、batch_axis、label_format]) このメソッドは、ロジスティック損失を計算します。
TripletLoss([マージン、重量、batch_axis]) このメソッドは、3つの入力テンソルと正のマージンが与えられた場合のトリプレット損失を計算します。
PoissonNLLLoss([weight、from_logits、…]) この関数は、負の対数尤度損失を計算します。
CosineEmbeddingLoss([weight、batch_axis、margin]) この関数は、ベクトル間のコサイン距離を計算します。
SDMLLoss([smoothing_parameter、weight、…]) このメソッドは、2つの入力テンソルと平滑化重みSDM損失が与えられた場合に、バッチワイズ平滑化ディープメトリック学習(SDML)損失を計算します。ミニバッチ内のペアになっていないサンプルを潜在的なネガティブな例として使用することにより、ペアになっているサンプル間の類似性を学習します。

私たちが知っているように mxnet.gluon.loss.lossラベルと予測(pred)の間のMSE(平均二乗誤差)を計算します。それは次の式の助けを借りて行われます:

gluon.parameter

mxnet.gluon.parameter パラメータ、つまりブロックの重みを保持するコンテナです。

メソッドとそのパラメータ

以下は、以下でカバーされる重要なメソッドとそのパラメータの一部です。 mxnet.gluon.parameter トレーニングモジュール-

メソッドとそのパラメータ 定義
cast(dtype) このメソッドは、このパラメーターのデータと勾配を新しいデータ型にキャストします。
data([ctx]) このメソッドは、1つのコンテキストでこのパラメーターのコピーを返します。
grad([ctx]) このメソッドは、1つのコンテキストでこのパラメーターのグラデーションバッファーを返します。
initialize([init、ctx、default_init、…]) このメソッドは、パラメーターとグラデーションの配列を初期化します。
list_ctx() このメソッドは、このパラメーターが初期化されるコンテキストのリストを返します。
list_data() このメソッドは、すべてのコンテキストでこのパラメーターのコピーを返します。作成と同じ順序で行われます。
list_grad() このメソッドは、すべてのコンテキストでグラデーションバッファーを返します。これは、と同じ順序で実行されますvalues()
list_row_sparse_data(row_id) このメソッドは、すべてのコンテキストで「row_sparse」パラメーターのコピーを返します。これは、作成と同じ順序で実行されます。
reset_ctx(ctx) このメソッドは、パラメータを他のコンテキストに再割り当てします。
row_sparse_data(row_id) このメソッドは、row_idと同じコンテキストで「row_sparse」パラメーターのコピーを返します。
set_data(data) このメソッドは、すべてのコンテキストでこのパラメーターの値を設定します。
var() このメソッドは、このパラメーターを表すシンボルを返します。
zero_grad() このメソッドは、すべてのコンテキストのグラデーションバッファーを0に設定します。

実装例

以下の例では、次のようにinitialize()メソッドを使用してパラメーターとグラデーション配列を初期化します。

weight = mx.gluon.Parameter('weight', shape=(2, 2))
weight.initialize(ctx=mx.cpu(0))
weight.data()

Output

出力は以下に記載されています-

[[-0.0256899 0.06511251]
[-0.00243821 -0.00123186]]
<NDArray 2x2 @cpu(0)>

Example

weight.grad()

Output

出力は以下のとおりです。

[[0. 0.]
[0. 0.]]
<NDArray 2x2 @cpu(0)>

Example

weight.initialize(ctx=[mx.gpu(0), mx.gpu(1)])
weight.data(mx.gpu(0))

Output

次の出力が表示されます-

[[-0.00873779 -0.02834515]
 [ 0.05484822 -0.06206018]]
<NDArray 2x2 @gpu(0)>

Example

weight.data(mx.gpu(1))

Output

上記のコードを実行すると、次の出力が表示されます-

[[-0.00873779 -0.02834515]
 [ 0.05484822 -0.06206018]]
<NDArray 2x2 @gpu(1)>

gluon.trainer

mxnet.gluon.trainerは、一連のパラメーターにオプティマイザーを適用します。autogradと一緒に使用する必要があります。

メソッドとそのパラメータ

以下は、以下でカバーされる重要なメソッドとそのパラメータの一部です。 mxnet.gluon.trainer トレーニングモジュール-

メソッドとそのパラメータ 定義
allreduce_grads() このメソッドは、各パラメーター(重み)のさまざまなコンテキストからの勾配を減らします。
load_states(fname) 名前が示すように、このメソッドはトレーナーの状態をロードします。
save_states(fname) 名前が示すように、このメソッドはトレーナーの状態を保存します。
set_learning_rate(lr) このメソッドは、オプティマイザーの新しい学習率を設定します。
step(batch_size [、ignore_stale_grad]) このメソッドは、パラメータ更新の1つのステップを実行します。後に呼び出す必要がありますautograd.backward() と外 record() 範囲。
update(batch_size [、ignore_stale_grad]) このメソッドは、パラメータ更新の1つのステップも行います。後に呼び出す必要がありますautograd.backward() と外 record() スコープおよびtrainer.update()の後。

データモジュール

Gluonのデータモジュールを以下に説明します-

gluon.data

Gluonは、gluon.dataモジュールに多数の組み込みデータセットユーティリティを提供します。それがデータモジュールと呼ばれる理由です。

クラスとそのパラメータ

以下は、mxnet.gluon.dataコアモジュールでカバーされる重要なメソッドとそのパラメーターの一部です。これらのメソッドは通常、データセット、サンプリング、およびデータローダーに関連しています。

データセット
メソッドとそのパラメータ 定義
ArrayDataset(* args) このメソッドは、2つまたは3つ以上のデータセットのようなオブジェクトを組み合わせたデータセットを表します。たとえば、データセット、リスト、配列など。
BatchSampler(sampler、batch_size [、last_batch]) このメソッドは別のメソッドをラップします Sampler。ラップされると、サンプルのミニバッチが返されます。
DataLoader(dataset [、batch_size、shuffle、…]) BatchSamplerに似ていますが、このメソッドはデータセットからデータをロードします。ロードされると、データのミニバッチを返します。
これは、抽象データセットクラスを表します。
FilterSampler(fn、dataset) このメソッドは、fn(関数)が返すデータセットからのサンプル要素を表します True
RandomSampler(長さ) このメソッドは、[0、長さ)からのサンプル要素を置換せずにランダムに表します。
RecordFileDataset(ファイル名) これは、RecordIOファイルをラップするデータセットを表します。ファイルの拡張子は.rec
サンプラー これはサンプラーの基本クラスです。
SequentialSampler(length [、start]) セット[start、start + length)のサンプル要素を順番に表します。
セット[start、start + length)のサンプル要素を順番に表します。 これは、特にリストと配列の単純なデータセットラッパーを表しています。

実装例

以下の例では、 gluon.data.BatchSampler()別のサンプラーをラップするAPI。サンプルのミニバッチを返します。

import mxnet as mx
from mxnet.gluon import data
sampler = mx.gluon.data.SequentialSampler(15)
batch_sampler = mx.gluon.data.BatchSampler(sampler, 4, 'keep')
list(batch_sampler)

Output

出力は以下に記載されています-

[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14]]

gluon.data.vision.datasets

Gluonは、で多数の事前定義されたビジョンデータセット関数を提供します。 gluon.data.vision.datasets モジュール。

クラスとそのパラメータ

MXNetは、有用で重要なデータセットを提供します。そのクラスとパラメーターを以下に示します。

クラスとそのパラメータ 定義
MNIST([ルート、トレイン、変換]) これは、手書きの数字を提供する便利なデータセットです。MNISTデータセットのURLはhttp://yann.lecun.com/exdb/mnistです。
FashionMNIST([ルート、トレイン、トランスフォーム]) このデータセットは、ファッション製品で構成されるZalandoの記事画像で構成されています。これは、元のMNISTデータセットのドロップイン置換です。このデータセットはhttps://github.com/zalandoresearch/fashion-mnistから取得できます
CIFAR10([root、train、transform]) これは、https://www.cs.toronto.edu/~kriz/cifar.htmlの画像分類データセットです。このデータセットでは、各サンプルは形状(32、32、3)の画像です。
CIFAR100([root、fine_label、train、transform]) これは、https://www.cs.toronto.edu/~kriz/cifar.htmlのCIFAR100画像分類データセットです。また、各サンプルは形状(32、32、3)の画像です。
ImageRecordDataset(filename [、flag、transform]) このデータセットは、画像を含むRecordIOファイルをラップしています。この各サンプルには、対応するラベルが付いた画像があります。
ImageFolderDataset(root [、flag、transform]) これは、フォルダ構造に保存されている画像ファイルをロードするためのデータセットです。
ImageListDataset([root、imglist、flag]) これは、エントリのリストで指定された画像ファイルをロードするためのデータセットです。

以下の例では、エントリのリストで指定された画像ファイルをロードするために使用されるImageListDataset()の使用法を示します-

# written to text file *.lst

0 0 root/cat/0001.jpg
1 0 root/cat/xxxa.jpg
2 0 root/cat/yyyb.jpg
3 1 root/dog/123.jpg
4 1 root/dog/023.jpg
5 1 root/dog/wwww.jpg

# A pure list, each item is a list [imagelabel: float or list of float, imgpath]

[[0, root/cat/0001.jpg]
[0, root/cat/xxxa.jpg]
[0, root/cat/yyyb.jpg]
[1, root/dog/123.jpg]
[1, root/dog/023.jpg]
[1, root/dog/wwww.jpg]]

ユーティリティモジュール

Gluonのユーティリティモジュールは次のとおりです-

gluon.utils

Gluonは、gluon.utilsモジュールに多数の組み込み並列化ユーティリティオプティマイザーを提供します。トレーニング用のさまざまなユーティリティを提供します。それがユーティリティモジュールと呼ばれる理由です。

関数とそのパラメーター

以下は、このユーティリティモジュールで構成される関数とそのパラメータです。 gluon.utils −

関数とそのパラメータ 定義
split_data(data、num_slice [、batch_axis、…]) この関数は通常、データの並列処理に使用され、各スライスは1つのデバイス(GPU)に送信されます。NDArrayをに分割しますnum_slice に沿ってスライス batch_axis
split_and_load(data、ctx_list [、batch_axis、…]) この関数は、NDArrayをに分割します len(ctx_list) に沿ってスライス batch_axis. 上記のsplit_data()関数との唯一の違いは、各スライスを1つのコンテキストにロードすることです。 ctx_list
clip_global_norm(arrays、max_norm [、…]) この関数の役割は、2ノルムの合計がより小さくなるようにNDArrayを再スケーリングすることです。 max_norm
check_sha1(ファイル名、sha1_hash) この関数は、ファイルコンテンツのsha1ハッシュが予想されるハッシュと一致するかどうかをチェックします。
ダウンロード(url [、パス、上書き、sha1_hash、…]) 名前が示すように、この関数は指定されたURLをダウンロードします。
replace_file(src、dst) この関数はアトミックを実装します os.replace。LinuxとOSXで行われます。