Apache MXNet - gluon API Pythona
Jak już omówiliśmy w poprzednich rozdziałach, MXNet Gluon zapewnia przejrzyste, zwięzłe i proste API dla projektów DL. Umożliwia Apache MXNet prototypowanie, budowanie i trenowanie modeli DL bez utraty szybkości szkolenia.
Moduły podstawowe
Poznajmy podstawowe moduły interfejsu programowania aplikacji (API) gluon Apache MXNet Python.
gluon.nn
Gluon zapewnia dużą liczbę wbudowanych warstw NN w module gluon.nn. Z tego powodu nazywany jest modułem podstawowym.
Metody i ich parametry
Poniżej przedstawiono niektóre z ważnych metod i ich parametrów objętych mxnet.gluon.nn moduł podstawowy -
Metody i ich parametry | Definicja |
---|---|
Aktywacja (aktywacja, ** kwargs) | Jak sama nazwa wskazuje, ta metoda stosuje funkcję aktywacji do wejścia. |
AvgPool1D ([rozmiar_puli, kroki, dopełnienie,…]) | Jest to średnia operacja łączenia danych czasowych. |
AvgPool2D ([pool_size, strides, padding,…]) | Jest to średnia operacja łączenia danych przestrzennych. |
AvgPool3D ([pool_size, strides, padding,…]) | To jest operacja puli średniej dla danych 3D. Dane mogą być przestrzenne lub czasoprzestrzenne. |
BatchNorm ([oś, pęd, epsilon, środek,…]) | Reprezentuje warstwę normalizacji partii. |
BatchNormReLU ([oś, pęd, epsilon,…]) | Reprezentuje również warstwę normalizacji partii, ale z funkcją aktywacji Relu. |
Blok ([prefiks, parametry]) | Daje klasę bazową dla wszystkich warstw i modeli sieci neuronowych. |
Conv1D (kanały, kernel_size [, strides,…]) | Ta metoda jest stosowana dla warstwy splotu 1-D. Na przykład splot czasowy. |
Conv1DTranspose (kanały, rozmiar_kernela [,…]) | Ta metoda jest używana dla warstwy splotu transponowanego 1D. |
Conv2D (kanały, kernel_size [, strides,…]) | Ta metoda jest używana dla warstwy splotu 2D. Na przykład splot przestrzenny na obrazach). |
Conv2DTranspose (kanały, rozmiar_kernela [,…]) | Ta metoda jest używana w przypadku transponowanej warstwy splotu 2D. |
Conv3D (kanały, kernel_size [, strides,…]) | Ta metoda jest używana dla warstwy splotu 3D. Na przykład splot przestrzenny w objętości. |
Conv3DTranspose (kanały, rozmiar_kernela [,…]) | Ta metoda jest używana dla warstwy splotu transponowanego 3D. |
Gęsty (jednostki [, aktywacja, użycie_bias,…]) | Ta metoda reprezentuje zwykłą gęsto połączoną warstwę NN. |
Porzucenie (stopa [, osie]) | Jak sama nazwa wskazuje, metoda stosuje Dropout na wejściu. |
ELU ([alfa]) | Ta metoda jest stosowana w przypadku wykładniczych jednostek liniowych (ELU). |
Osadzanie (input_dim, output_dim [, dtype,…]) | Zamienia nieujemne liczby całkowite w gęste wektory o stałym rozmiarze. |
Spłaszcz (** kwargs) | Ta metoda spłaszcza dane wejściowe do 2-D. |
GELU (** kwargs) | Ta metoda jest używana dla wykładniczych jednostek liniowych Gaussa (GELU). |
GlobalAvgPool1D ([układ]) | Za pomocą tej metody możemy wykonać operację globalnego łączenia średniej dla danych czasowych. |
GlobalAvgPool2D ([układ]) | Za pomocą tej metody możemy wykonać operację globalnego łączenia średnich danych przestrzennych. |
GlobalAvgPool3D ([układ]) | Za pomocą tej metody możemy wykonać operację globalnego łączenia średnich danych trójwymiarowych. |
GlobalMaxPool1D ([układ]) | Za pomocą tej metody możemy wykonać globalną operację maksymalnego pulowania danych 1-D. |
GlobalMaxPool2D ([układ]) | Za pomocą tej metody możemy wykonać operację globalnego max poolingu dla danych 2-D. |
GlobalMaxPool3D ([układ]) | Za pomocą tej metody możemy wykonać operację globalnego max poolingu dla danych trójwymiarowych. |
GroupNorm ([num_groups, epsilon, center,…]) | Ta metoda stosuje normalizację grupową do tablicy wejściowej nD. |
HybridBlock ([prefiks, parametry]) | Ta metoda obsługuje przekazywanie z obu Symbol i NDArray. |
HybridLambda(funkcja [, przedrostek]) | Za pomocą tej metody możemy opakować operator lub wyrażenie jako obiekt HybridBlock. |
HybridSequential ([prefiks, parametry]) | Układa HybridBlocks sekwencyjnie. |
InstanceNorm ([oś, epsilon, środek, skala,…]) | Ta metoda stosuje normalizację instancji do tablicy wejściowej nD. |
Przykłady wdrożeń
W poniższym przykładzie użyjemy Block (), który podaje klasę bazową dla wszystkich warstw i modeli sieci neuronowych.
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
Zobaczysz następujący wynik -
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 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;
W poniższym przykładzie użyjemy HybridBlock (), która obsługuje przekazywanie zarówno z Symbolem, jak i 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
Dane wyjściowe są wymienione poniżej -
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 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 zapewnia dużą liczbę wbudowanych recurrent neural network(RNN) warstwy w module gluon.rnn. Z tego powodu nazywa się go modułem podstawowym.
Metody i ich parametry
Poniżej przedstawiono niektóre z ważnych metod i ich parametrów objętych mxnet.gluon.nn moduł podstawowy:
Metody i ich parametry | Definicja |
---|---|
BidirectionalCell (l_cell, r_cell [,…]) | Jest używany w komórce dwukierunkowej sieci neuronowej (RNN). |
DropoutCell (stopa [, osie, prefiks, parametry]) | Ta metoda zastosuje spadek na danym wejściu. |
GRU (ukryty_rozmiar [, liczba_warstw, układ,…]) | Stosuje wielowarstwową bramkowaną jednostkę rekurencyjną (GRU) RNN do danej sekwencji wejściowej. |
GRUCell (hidden_size [,…]) | Jest używany w komórce sieciowej Gated Rectified Unit (GRU). |
HybridRecurrentCell ([prefiks, parametry]) | Ta metoda obsługuje hybrydyzację. |
HybridSequentialRNNCell ([prefiks, parametry]) | Za pomocą tej metody możemy sekwencyjnie łączyć wiele komórek HybridRNN. |
LSTM (hidden_size [, num_layers, layout,…]) 0 | Stosuje wielowarstwową pamięć krótkotrwałą (LSTM) RNN do danej sekwencji wejściowej. |
LSTMCell (hidden_size [,…]) | Jest używany w komórce sieciowej pamięci długoterminowej (LSTM). |
ModifierCell (base_cell) | Jest to klasa podstawowa dla komórek modyfikujących. |
RNN (hidden_size [, num_layers, aktywacja,…]) | Stosuje wielowarstwowy Elman RNN z tanh lub ReLU nieliniowość do danej sekwencji wejściowej. |
RNNCell (hidden_size [, aktywacja,…]) | Służy do rekurencyjnej komórki sieci neuronowej Elman RNN. |
RecurrentCell ([prefiks, parametry]) | Reprezentuje abstrakcyjną klasę bazową dla komórek RNN. |
SequentialRNNCell ([prefiks, parametry]) | Za pomocą tej metody możemy sekwencyjnie układać wiele komórek RNN. |
ZoneoutCell (base_cell [, zoneout_outputs,…]) | Ta metoda stosuje Zoneout w komórce podstawowej. |
Przykłady wdrożeń
W poniższym przykładzie użyjemy GRU (), która stosuje wielowarstwową bramkowaną jednostkę rekurencyjną (GRU) RNN do danej sekwencji wejściowej.
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
Daje to następujący wynik -
[[[ 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
Daje to następujący wynik -
[[[-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
………………………….
W poniższym przykładzie użyjemy LSTM (), która stosuje pamięć długookresową (LSTM) RNN do danej sekwencji wejściowej.
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
Dane wyjściowe są wymienione poniżej -
[[[ 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
Po uruchomieniu kodu zobaczysz następujące dane wyjściowe -
[
[[[ 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
……………………
Moduły szkoleniowe
Moduły szkoleniowe w Gluon są następujące -
gluon.loss
W mxnet.gluon.lossmoduł, Gluon zapewnia predefiniowaną funkcję strat. Zasadniczo ma straty do uczenia sieci neuronowej. Z tego powodu nazywa się go modułem szkoleniowym.
Metody i ich parametry
Poniżej przedstawiono niektóre z ważnych metod i ich parametrów objętych mxnet.gluon.loss moduł szkoleniowy:
Metody i ich parametry | Definicja |
---|---|
Strata (waga, oś_ partii, ** kwargs) | Działa jako klasa bazowa strat. |
L2Loss ([waga, oś_ partii]) | Oblicza średni kwadrat błędu (MSE) pomiędzy label i prediction(pred). |
L1Loss ([waga, oś_ partii]) | Oblicza średni błąd bezwzględny (MAE) pomiędzy label i pred. |
SigmoidBinaryCrossEntropyLoss ([…]) | Ta metoda jest używana do utraty entropii krzyżowej w klasyfikacji binarnej. |
SigmoidBCELoss | Ta metoda jest używana do utraty entropii krzyżowej w klasyfikacji binarnej. |
SoftmaxCrossEntropyLoss ([oś,…]) | Oblicza stratę krzyżową entropii softmax (CEL). |
SoftmaxCELoss | Oblicza również utratę entropii krzyżowej softmax. |
KLDivLoss ([from_logits, axis, weight,…]) | Służy do utraty dywergencji Kullbacka-Leiblera. |
CTCLoss ([układ, etykieta_layout, waga]) | Służy do koneksjonistycznej utraty klasyfikacji czasowej (TCL). |
HuberLoss ([rho, weight, batch_axis]) | Oblicza wygładzoną stratę L1. Wygładzona strata L1 będzie równa stracie L1, jeśli błąd bezwzględny przekracza rho, ale w przeciwnym razie jest równy stracie L2. |
HingeLoss ([margines, weight, batch_axis]) | Ta metoda oblicza funkcję utraty zawiasów często używaną w maszynach SVM: |
SquaredHingeLoss ([margines, waga, batch_axis]) | Ta metoda oblicza funkcję miękkiej straty używaną w maszynach SVM: |
LogisticLoss ([weight, batch_axis, label_format]) | Ta metoda oblicza stratę logistyczną. |
TripletLoss ([margin, weight, batch_axis]) | Ta metoda oblicza stratę tripletową przy trzech tensorach wejściowych i dodatnim marginesie. |
PoissonNLLLoss ([waga, z_logits,…]) | Funkcja oblicza utratę prawdopodobieństwa logarytmu ujemnego. |
CosineEmbeddingLoss ([waga, oś_ partii, margines]) | Funkcja oblicza odległość cosinusa między wektorami. |
SDMLLoss ([parametr_ wygładzania, waga,…]) | Ta metoda oblicza stratę Batchwise Smoothed Deep Metric Learning (SDML) przy dwóch wejściowych tensorach i wygładzonej utracie SDM. Uczy się podobieństwa między sparowanymi próbkami, używając niesparowanych próbek w minibatch jako potencjalnych negatywnych przykładów. |
Przykład
Jak wiemy mxnet.gluon.loss.lossobliczy MSE (błąd średniokwadratowy) między etykietą a prognozą (pred). Odbywa się to za pomocą następującego wzoru:
gluon.parameter
mxnet.gluon.parameter to pojemnik zawierający parametry tj. wagi Bloczków.
Metody i ich parametry
Poniżej przedstawiono niektóre z ważnych metod i ich parametrów objętych mxnet.gluon.parameter moduł szkoleniowy -
Metody i ich parametry | Definicja |
---|---|
obsada (dtype) | Ta metoda będzie rzutować dane i gradient tego parametru na nowy typ danych. |
dane ([ctx]) | Ta metoda zwróci kopię tego parametru w jednym kontekście. |
grad ([ctx]) | Ta metoda zwróci bufor gradientu dla tego parametru w jednym kontekście. |
zainicjalizuj ([init, ctx, default_init,…]) | Ta metoda zainicjuje tablice parametrów i gradientów. |
list_ctx () | Ta metoda zwróci listę kontekstów, w których ten parametr jest zainicjowany. |
list_data () | Ta metoda zwróci kopie tego parametru we wszystkich kontekstach. Będzie to robione w tej samej kolejności, co tworzenie. |
list_grad () | Ta metoda zwróci bufory gradientu we wszystkich kontekstach. Zostanie to zrobione w tej samej kolejności, covalues(). |
list_row_sparse_data (row_id) | Ta metoda zwróci kopie parametru „row_sparse” we wszystkich kontekstach. Będzie to robione w tej samej kolejności, co tworzenie. |
reset_ctx (ctx) | Ta metoda spowoduje ponowne przypisanie parametru do innych kontekstów. |
row_sparse_data (row_id) | Ta metoda zwróci kopię parametru „row_sparse” w tym samym kontekście, co parametr row_id. |
set_data (dane) | Ta metoda ustawi wartość tego parametru we wszystkich kontekstach. |
var () | Ta metoda zwróci symbol reprezentujący ten parametr. |
zero_grad () | Ta metoda ustawi bufor gradientu we wszystkich kontekstach na 0. |
Przykład implementacji
W poniższym przykładzie zainicjujemy parametry i tablice gradientów za pomocą metody initialize () w następujący sposób -
weight = mx.gluon.Parameter('weight', shape=(2, 2))
weight.initialize(ctx=mx.cpu(0))
weight.data()
Output
Dane wyjściowe są wymienione poniżej -
[[-0.0256899 0.06511251]
[-0.00243821 -0.00123186]]
<NDArray 2x2 @cpu(0)>
Example
weight.grad()
Output
Dane wyjściowe podano poniżej -
[[0. 0.]
[0. 0.]]
<NDArray 2x2 @cpu(0)>
Example
weight.initialize(ctx=[mx.gpu(0), mx.gpu(1)])
weight.data(mx.gpu(0))
Output
Zobaczysz następujący wynik -
[[-0.00873779 -0.02834515]
[ 0.05484822 -0.06206018]]
<NDArray 2x2 @gpu(0)>
Example
weight.data(mx.gpu(1))
Output
Po wykonaniu powyższego kodu powinieneś zobaczyć następujące dane wyjściowe -
[[-0.00873779 -0.02834515]
[ 0.05484822 -0.06206018]]
<NDArray 2x2 @gpu(1)>
gluon.trainer
mxnet.gluon.trainer stosuje Optymalizator do zestawu parametrów. Powinien być używany razem z autogradem.
Metody i ich parametry
Poniżej przedstawiono niektóre z ważnych metod i ich parametrów objętych mxnet.gluon.trainer moduł szkoleniowy -
Metody i ich parametry | Definicja |
---|---|
allreduce_grads () | Ta metoda zmniejszy gradienty z różnych kontekstów dla każdego parametru (wagi). |
load_states (fname) | Jak sama nazwa wskazuje, ta metoda załaduje stany trenera. |
save_states (fname) | Jak sama nazwa wskazuje, ta metoda pozwoli zaoszczędzić stany trenera. |
set_learning_rate (lr) | Ta metoda ustawi nowy współczynnik uczenia się optymalizatora. |
krok (batch_size [, ignore_stale_grad]) | Ta metoda stanowi jeden krok do aktualizacji parametrów. Powinien zostać nazwany późniejautograd.backward() i poza record() zakres. |
aktualizacja (batch_size [, ignore_stale_grad]) | Ta metoda będzie również stanowić jeden krok aktualizacji parametrów. Powinien zostać nazwany późniejautograd.backward() i poza record() scope i po trainer.update (). |
Moduły danych
Moduły danych Gluon są wyjaśnione poniżej -
gluon.data
Gluon zapewnia dużą liczbę wbudowanych narzędzi do zestawów danych w module gluon.data. Z tego powodu nazywany jest modułem danych.
Klasy i ich parametry
Poniżej przedstawiono niektóre z ważnych metod i ich parametrów objętych modułem podstawowym mxnet.gluon.data. Te metody są zwykle powiązane z zestawami danych, próbkowaniem i DataLoader.
Zestaw danychMetody i ich parametry | Definicja |
---|---|
ArrayDataset (* args) | Ta metoda reprezentuje zestaw danych, który łączy dwa lub więcej niż dwa obiekty podobne do zestawu danych. Na przykład zbiory danych, listy, tablice itp. |
BatchSampler (sampler, batch_size [, last_batch]) | Ta metoda zawija się nad inną Sampler. Po zapakowaniu zwraca mini partie próbek. |
DataLoader (dataset [, batch_size, shuffle,…]) | Podobna do BatchSampler, ale ta metoda ładuje dane z zestawu danych. Po załadowaniu zwraca mini partie danych. |
Reprezentuje abstrakcyjną klasę zestawu danych. | |
FilterSampler (fn, zestaw danych) | Ta metoda reprezentuje przykładowe elementy z zestawu danych, dla których funkcja fn (funkcja) zwraca True. |
RandomSampler (długość) | Ta metoda reprezentuje elementy próbek z [0, długość) losowo bez zastępowania. |
RecordFileDataset (nazwa pliku) | Reprezentuje zawijanie zestawu danych w pliku RecordIO. Rozszerzenie pliku to.rec. |
Próbnik | To jest klasa bazowa dla samplerów. |
SequentialSampler (długość [, początek]) | Reprezentuje sekwencyjnie przykładowe elementy z zestawu [początek, początek + długość). |
Reprezentuje sekwencyjnie przykładowe elementy z zestawu [początek, początek + długość). | Reprezentuje to prostą otokę zestawu danych, szczególnie w przypadku list i tablic. |
Przykłady wdrożeń
W poniższym przykładzie użyjemy gluon.data.BatchSampler()API, które otacza inny sampler. Zwraca mini partie próbek.
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
Dane wyjściowe są wymienione poniżej -
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14]]
gluon.data.vision.datasets
Gluon zapewnia dużą liczbę wstępnie zdefiniowanych funkcji zestawu danych wizyjnych w gluon.data.vision.datasets moduł.
Klasy i ich parametry
MXNet dostarcza nam przydatne i ważne zbiory danych, których klasy i parametry podano poniżej -
Klasy i ich parametry | Definicja |
---|---|
MNIST ([root, train, transform]) | Jest to przydatny zbiór danych, który dostarcza nam odręcznych cyfr. Adres URL zestawu danych MNIST to http://yann.lecun.com/exdb/mnist |
FashionMNIST ([root, train, transform]) | Ten zbiór danych składa się z obrazów artykułów Zalando, które zawierają produkty modowe. Jest to bezpośredni zamiennik oryginalnego zbioru danych MNIST. Możesz pobrać ten zestaw danych z https://github.com/zalandoresearch/fashion-mnist |
CIFAR10 ([root, train, transform]) | To jest zbiór danych klasyfikacji obrazów z https://www.cs.toronto.edu/~kriz/cifar.html. W tym zbiorze danych każda próbka jest obrazem z kształtem (32, 32, 3). |
CIFAR100 ([root, fine_label, pociąg, transformacja]) | To jest zbiór danych klasyfikacji obrazu CIFAR100 z https://www.cs.toronto.edu/~kriz/cifar.html. Ma również każda próbka jest obrazem z kształtem (32, 32, 3). |
ImageRecordDataset (nazwa pliku [, flaga, transformacja]) | Ten zestaw danych jest zawijany w pliku RecordIO zawierającym obrazy. W tym przypadku każda próbka jest obrazem z odpowiednią etykietą. |
ImageFolderDataset (root [, flaga, transformacja]) | To jest zestaw danych do ładowania plików obrazów przechowywanych w strukturze folderów. |
ImageListDataset ([root, imglist, flag]) | To jest zbiór danych służący do ładowania plików graficznych określonych przez listę pozycji. |
Przykład
W poniższym przykładzie pokażemy użycie metody ImageListDataset (), która służy do ładowania plików graficznych określonych przez listę wpisów -
# 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]]
Moduły narzędziowe
Moduły narzędziowe w Gluon są następujące -
gluon.utils
Gluon zapewnia dużą liczbę wbudowanych optymalizatorów narzędzi równoległych w module gluon.utils. Zapewnia różnorodne narzędzia do treningu. Z tego powodu nazywa się go modułem narzędziowym.
Funkcje i ich parametry
Poniżej przedstawiono funkcje i ich parametry składające się na ten moduł narzędziowy o nazwie gluon.utils −
Funkcje i ich parametry | Definicja |
---|---|
split_data (data, num_slice [, batch_axis,…]) | Ta funkcja jest zwykle używana do równoległości danych, a każdy segment jest wysyłany do jednego urządzenia, tj. GPU. Dzieli NDArray nanum_slice plasterki wzdłuż batch_axis. |
split_and_load (dane, ctx_list [, batch_axis,…]) | Ta funkcja dzieli NDArray na len(ctx_list) plasterki wzdłuż batch_axis. Jedyną różnicą w stosunku do powyższej funkcji split_data () jest to, że ładuje ona również każdy wycinek do jednego kontekstu ctx_list. |
clip_global_norm (tablice, max_norm [,…]) | Zadaniem tej funkcji jest przeskalowanie tablic NDA w taki sposób, aby suma ich 2-normy była mniejsza niż max_norm. |
check_sha1 (nazwa pliku, sha1_hash) | Ta funkcja sprawdzi, czy hash sha1 zawartości pliku jest zgodny z oczekiwanym hashem, czy nie. |
pobieranie (adres URL [, ścieżka, nadpisanie, sha1_hash,…]) | Jak nazwa wskazuje, funkcja ta pobierze podany adres URL. |
replace_file (src, dst) | Ta funkcja zaimplementuje atomic os.replace. będzie to zrobione z Linuksem i OSX. |