Apache MXNet - глюон API Python

Как мы уже обсуждали в предыдущих главах, MXNet Gluon предоставляет ясный, краткий и простой API для проектов DL. Это позволяет Apache MXNet создавать прототипы, создавать и обучать модели DL без потери скорости обучения.

Основные модули

Давайте изучим основные модули интерфейса программирования приложений (API) Apache MXNet Python gluon.

gluon.nn

Gluon предоставляет большое количество встроенных слоев NN в модуле gluon.nn. По этой причине он называется основным модулем.

Методы и их параметры

Ниже приведены некоторые важные методы и их параметры, охватываемые mxnet.gluon.nn основной модуль -

Методы и их параметры Определение
Активация (активация, ** kwargs) Как следует из названия, этот метод применяет к вводу функцию активации.
AvgPool1D ([размер_пул, шаги, отступы,…]) Это средняя операция объединения временных данных.
AvgPool2D ([размер_пул, шаги, отступы,…]) Это средняя операция объединения пространственных данных.
AvgPool3D ([размер_пул, шаги, отступы,…]) Это средняя операция объединения для 3D-данных. Данные могут быть пространственными или пространственно-временными.
BatchNorm ([ось, импульс, эпсилон, центр,…]) Он представляет собой слой пакетной нормализации.
BatchNormReLU ([ось, импульс, эпсилон,…]) Он также представляет собой уровень пакетной нормализации, но с функцией активации Relu.
Блокировать ([префикс, параметры]) Он дает базовый класс для всех слоев и моделей нейронной сети.
Conv1D (каналы, размер_ядра [, шаги,…]) Этот метод используется для одномерного сверточного слоя. Например, височная свертка.
Conv1DTranspose (каналы, размер_ядра [,…]) Этот метод используется для транспонированного одномерного сверточного слоя.
Conv2D (каналы, размер_ядра [, шаги,…]) Этот метод используется для 2D сверточного слоя. Например, пространственная свертка по изображениям).
Conv2DTranspose (каналы, размер_ядра [,…]) Этот метод используется для транспонированного 2D сверточного слоя.
Conv3D (каналы, размер_ядра [, шаги,…]) Этот метод используется для трехмерного сверточного слоя. Например, пространственная свертка по объемам.
Conv3DTranspose (каналы, размер_ядра [,…]) Этот метод используется для транспонированного трехмерного сверточного слоя.
Плотный (единицы [, активация, use_bias,…]) Этот метод подходит для вашего обычного плотно связанного слоя NN.
Выпадение (коэффициент [, оси]) Как следует из названия, метод применяет Dropout к входу.
ELU ([альфа]) Этот метод используется для экспоненциальной линейной единицы (ELU).
Встраивание (input_dim, output_dim [, dtype,…]) Он превращает неотрицательные целые числа в плотные векторы фиксированного размера.
Flatten (** kwargs) Этот метод сглаживает вход до 2-мерного.
ГЕЛУ (** kwargs) Этот метод используется для гауссовской экспоненциальной линейной единицы (GELU).
GlobalAvgPool1D ([макет]) С помощью этого метода мы можем выполнить операцию глобального среднего пула для временных данных.
GlobalAvgPool2D ([макет]) С помощью этого метода мы можем выполнить операцию объединения глобального среднего значения для пространственных данных.
GlobalAvgPool3D ([макет]) С помощью этого метода мы можем выполнить операцию глобального среднего пула для 3-D данных.
GlobalMaxPool1D ([макет]) С помощью этого метода мы можем выполнить операцию глобального максимального пула для одномерных данных.
GlobalMaxPool2D ([макет]) С помощью этого метода мы можем выполнить операцию глобального максимального пула для двумерных данных.
GlobalMaxPool3D ([макет]) С помощью этого метода мы можем выполнить операцию глобального максимального пула для 3-D данных.
GroupNorm ([число_групп, эпсилон, центр,…]) Этот метод применяет групповую нормализацию к входному массиву nD.
HybridBlock ([префикс, параметры]) Этот метод поддерживает пересылку с обоими Symbol а также NDArray.
HybridLambda(функция [, префикс]) С помощью этого метода мы можем обернуть оператор или выражение как объект HybridBlock.
HybridSequential ([префикс, параметры]) Он последовательно складывает гибридные блоки.
InstanceNorm ([ось, эпсилон, центр, масштаб,…]) Этот метод применяет нормализацию экземпляра к входному массиву 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;

В приведенном ниже примере мы собираемся использовать HybridBlock (), который поддерживает пересылку как с символом, так и с NDArray.

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

Глюон обеспечивает большое количество встроенных recurrent neural network(RNN) слои в модуле gluon.rnn. По этой причине он называется основным модулем.

Методы и их параметры

Ниже приведены некоторые важные методы и их параметры, охватываемые mxnet.gluon.nn основной модуль:

Методы и их параметры Определение
BidirectionalCell (l_cell, r_cell [,…]) Он используется для ячейки двунаправленной рекуррентной нейронной сети (RNN).
DropoutCell (ставка [, оси, префикс, параметры]) Этот метод применит исключение к данному входу.
GRU (hidden_size [, num_layers, layout,…]) Он применяет многослойный стробируемый рекуррентный блок (GRU) RNN к заданной входной последовательности.
GRUCell (скрытый_размер [,…]) Он используется для ячейки сети Gated Rectified Unit (GRU).
HybridRecurrentCell ([префикс, параметры]) Этот метод поддерживает гибридизацию.
HybridSequentialRNNCell ([префикс, параметры]) С помощью этого метода мы можем последовательно складывать несколько ячеек HybridRNN.
LSTM (hidden_size [, num_layers, layout,…]) 0 Он применяет многослойную длинную краткосрочную память (LSTM) RNN к заданной входной последовательности.
LSTMCell (скрытый_размер [,…]) Он используется для ячейки сети с долговременной памятью (LSTM).
ModifierCell (base_cell) Это базовый класс для ячеек-модификаторов.
RNN (скрытый_размер [, количество_слоев, активация,…]) Применяется многослойная RNN Эльмана с tanh или ReLU нелинейность к заданной входной последовательности.
RNNCell (hidden_size [, активация,…]) Он используется для ячейки рекуррентной нейронной сети Эльмана.
RecurrentCell ([префикс, параметры]) Он представляет собой абстрактный базовый класс для ячеек RNN.
SequentialRNNCell ([префикс, параметры]) С помощью этого метода мы можем последовательно складывать несколько ячеек RNN.
ZoneoutCell (base_cell [, zoneout_outputs,…]) Этот метод применяет Zoneout к базовой ячейке.

Примеры реализации

В приведенном ниже примере мы собираемся использовать 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 следующие:

глюон. потеря

В mxnet.gluon.lossмодуль, Gluon предоставляет предопределенную функцию потерь. В основном это потери для обучения нейронной сети. Поэтому он называется обучающим модулем.

Методы и их параметры

Ниже приведены некоторые важные методы и их параметры, охватываемые mxnet.gluon.loss учебный модуль:

Методы и их параметры Определение
Потеря (вес, batch_axis, ** кваргс) Это действует как базовый класс для потерь.
L2Loss ([вес, batch_axis]) Он вычисляет среднеквадратичную ошибку (MSE) между label а также prediction(pred).
L1Loss ([вес, batch_axis]) Он вычисляет среднюю абсолютную ошибку (MAE) между label а также pred.
SigmoidBinaryCrossEntropyLoss ([…]) Этот метод используется для потери кросс-энтропии для двоичной классификации.
Сигмовидный BCELoss Этот метод используется для потери кросс-энтропии для двоичной классификации.
SoftmaxCrossEntropyLoss ([ось,…]) Он вычисляет кросс-энтропийную потерю softmax (CEL).
SoftmaxCELoss Он также вычисляет потерю кросс-энтропии softmax.
KLDivLoss ([from_logits, ось, вес,…]) Он используется для потери расхождения Кульбака-Лейблера.
CTCLoss ([макет, label_layout, вес]) Он используется для определения потерь временной классификации (TCL).
HuberLoss ([rho, weight, batch_axis]) Он вычисляет сглаженные потери L1. Сглаженные потери L1 будут равны потерям L1, если абсолютная ошибка превышает rho, но в противном случае равны потерям L2.
HingeLoss ([маржа, вес, batch_axis]) Этот метод вычисляет функцию потерь шарнира, часто используемую в SVM:
SquaredHingeLoss ([маржа, вес, batch_axis]) Этот метод вычисляет функцию потерь с мягким запасом, используемую в SVM:
LogisticLoss ([вес, batch_axis, label_format]) Этот метод рассчитывает логистические потери.
TripletLoss ([маржа, вес, batch_axis]) Этот метод вычисляет тройные потери с учетом трех входных тензоров и положительного запаса.
PoissonNLLLoss ([вес, from_logits,…]) Функция вычисляет потерю вероятности отрицательного логарифма.
CosineEmbeddingLoss ([вес, batch_axis, margin]) Функция вычисляет косинусное расстояние между векторами.
SDMLLoss ([параметр_сглаживания, вес,…]) Этот метод вычисляет пакетно-сглаженные потери при глубоком метрическом обучении (SDML) с учетом двух входных тензоров и сглаживающего веса потерь SDM. Он изучает сходство между парными образцами, используя непарные образцы в мини-партии в качестве потенциальных отрицательных примеров.

пример

Как мы знаем, mxnet.gluon.loss.lossвычислит MSE (среднеквадратичную ошибку) между меткой и предсказанием (прогноз). Это делается по следующей формуле:

глюон. параметр

mxnet.gluon.parameter - это контейнер, в котором хранятся параметры, т.е. веса блоков.

Методы и их параметры

Ниже приведены некоторые важные методы и их параметры, охватываемые mxnet.gluon.parameter учебный модуль -

Методы и их параметры Определение
cast (dtype) Этот метод преобразует данные и градиент этого параметра в новый тип данных.
данные ([ctx]) Этот метод вернет копию этого параметра в одном контексте.
град ([ctx]) Этот метод вернет буфер градиента для этого параметра в одном контексте.
инициализировать ([инициализация, ctx, default_init,…]) Этот метод инициализирует массивы параметров и градиентов.
list_ctx () Этот метод вернет список контекстов, в которых инициализирован этот параметр.
list_data () Этот метод вернет копии этого параметра во всех контекстах. Это будет происходить в том же порядке, что и создание.
list_grad () Этот метод вернет буферы градиента для всех контекстов. Это будет сделано в том же порядке, что иvalues().
list_row_sparse_data (row_id) Этот метод вернет копии параметра row_sparse во всех контекстах. Это будет происходить в том же порядке, что и создание.
reset_ctx (ctx) Этот метод повторно назначит Parameter другим контекстам.
row_sparse_data (row_id) Этот метод вернет копию параметра row_sparse в том же контексте, что и row_id.
set_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 применяет оптимизатор к набору параметров. Его следует использовать вместе с автоградом.

Методы и их параметры

Ниже приведены некоторые важные методы и их параметры, охватываемые mxnet.gluon.trainer учебный модуль -

Методы и их параметры Определение
allreduce_grads () Этот метод уменьшит градиенты из разных контекстов для каждого параметра (веса).
load_states (имя_файла) Как следует из названия, этот метод будет загружать состояния тренера.
save_states (имя_файла) Как следует из названия, этот метод сохранит состояния трейнера.
set_learning_rate (lr) Этот метод устанавливает новую скорость обучения оптимизатора.
шаг (размер_пакета [, ignore_stale_grad]) Этот метод сделает один шаг обновления параметров. Он должен вызываться послеautograd.backward() и за пределами record() объем.
обновить (размер_пакета [, игнорировать_стейл_град]) Этот метод также будет выполнять один шаг обновления параметров. Он должен вызываться послеautograd.backward() и за пределами record() scope и после trainer.update ().

Модули данных

Модули данных Gluon объясняются ниже -

gluon.data

Gluon предоставляет большое количество встроенных утилит для набора данных в модуле gluon.data. Вот почему он называется модулем данных.

Классы и их параметры

Ниже приведены некоторые из важных методов и их параметров, охватываемых основным модулем mxnet.gluon.data. Эти методы обычно связаны с наборами данных, выборкой и загрузчиком данных.

Набор данных
Методы и их параметры Определение
ArrayDataset (* аргументы) Этот метод представляет набор данных, который объединяет два или более чем два объекта, подобных набору данных. Например, наборы данных, списки, массивы и т. Д.
BatchSampler (сэмплер, batch_size [, last_batch]) Этот метод накладывается на другой Sampler. После упаковки он возвращает мини-партии образцов.
DataLoader (набор данных [, размер_пакции, перемешать,…]) Подобен BatchSampler, но этот метод загружает данные из набора данных. После загрузки он возвращает мини-пакеты данных.
Это представляет собой абстрактный класс набора данных.
FilterSampler (fn, набор данных) Этот метод представляет образцы элементов из набора данных, для которых fn (function) возвращает True.
RandomSampler (длина) Этот метод представляет образцы элементов из [0, length) случайным образом без замены.
RecordFileDataset (имя файла) Он представляет собой набор данных, охватывающий файл RecordIO. Расширение файла -.rec.
Сэмплер Это базовый класс для сэмплеров.
SequentialSampler (длина [, начало]) Он последовательно представляет образцы элементов из набора [начало, начало + длина).
Он последовательно представляет образцы элементов из набора [начало, начало + длина). Это представляет собой простую оболочку набора данных, особенно для списков и массивов.

Примеры реализации

В приведенном ниже примере мы будем использовать 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 ([корень, обучение, преобразование]) Это полезный набор данных, содержащий рукописные цифры. URL-адрес набора данных MNIST: http://yann.lecun.com/exdb/mnist
FashionMNIST ([корень, обучение, преобразование]) Этот набор данных состоит из изображений статей Zalando, состоящих из модных товаров. Это прямая замена исходного набора данных MNIST. Вы можете получить этот набор данных по адресу https://github.com/zalandoresearch/fashion-mnist
CIFAR10 ([корень, обучение, преобразование]) Это набор данных классификации изображений с https://www.cs.toronto.edu/~kriz/cifar.html. В этом наборе данных каждый образец представляет собой изображение с формой (32, 32, 3).
CIFAR100 ([корень, точная_метка, обучение, преобразование]) Это набор данных классификации изображений CIFAR100 с https://www.cs.toronto.edu/~kriz/cifar.html. Также в нем каждый образец представляет собой изображение с формой (32, 32, 3).
ImageRecordDataset (имя файла [, флаг, преобразование]) Этот набор данных охватывает файл RecordIO, содержащий изображения. В этом случае каждый образец представляет собой изображение с соответствующей меткой.
ImageFolderDataset (root[, flag, transform]) This is a dataset for loading image files that are stored in a folder structure.
ImageListDataset ([root, imglist, flag]) This is a dataset for loading image files that are specified by a list of entries.

Example

In the example below, we are going to show the use of ImageListDataset(), which is used for loading image files that are specified by a list of entries −

# 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]]

Utility Modules

The utility modules in Gluon are as follows −

gluon.utils

Gluon provides a large number of build-in parallelisation utility optimiser in gluon.utils module. It provides variety of utilities for training. That is the reason it is called the utility module.

Functions and their parameters

Following are the functions and their parameters consisting in this utility module named gluon.utils −

Functions and its Parameters Definition
split_data(data, num_slice[, batch_axis, …]) This function is usually use for data parallelism and each slice is sent to one device i.e. GPU. It splits an NDArray into num_slice slices along batch_axis.
split_and_load(data, ctx_list[, batch_axis, …]) This function splits an NDArray into len(ctx_list) slices along batch_axis. The only difference from above split_data () function is that, it also loads each slice to one context in ctx_list.
clip_global_norm(arrays, max_norm[, …]) The job of this function is to rescale NDArrays in such a way that the sum of their 2-norm is smaller than max_norm.
check_sha1(filename, sha1_hash) This function will check whether the sha1 hash of the file content matches the expected hash or not.
download(url[, path, overwrite, sha1_hash, …]) As name specifies, this function will download a given URL.
replace_file(src, dst) This function will implement atomic os.replace. it will be done with Linux and OSX.