Apache MXNet - gluon API Python
Seperti yang telah kita bahas di bab sebelumnya bahwa, MXNet Gluon menyediakan API yang jelas, ringkas, dan sederhana untuk proyek DL. Ini memungkinkan Apache MXNet untuk membuat prototipe, membangun, dan melatih model DL tanpa mengorbankan kecepatan pelatihan.
Modul Inti
Mari kita pelajari modul inti gluon antarmuka pemrograman aplikasi (API) Apache MXNet Python.
gluon.nn
Gluon menyediakan sejumlah besar lapisan NN bawaan dalam modul gluon.nn. Itulah alasannya disebut modul inti.
Metode dan parameternya
Berikut adalah beberapa metode penting dan parameternya yang dicakup oleh mxnet.gluon.nn modul inti -
Metode dan Parameternya | Definisi |
---|---|
Aktivasi (aktivasi, ** kwargs) | Sesuai namanya, metode ini menerapkan fungsi aktivasi ke input. |
AvgPool1D ([ukuran_koleksi, langkah, padding,…]) | Ini adalah operasi penggabungan rata-rata untuk data temporal. |
AvgPool2D ([ukuran_koleksi, langkah, padding,…]) | Ini adalah operasi pengumpulan rata-rata untuk data spasial. |
AvgPool3D ([ukuran_koleksi, langkah, padding,…]) | Ini adalah operasi penggabungan rata-rata untuk data 3D. Data tersebut dapat berupa spasial atau spasial-temporal. |
BatchNorm ([sumbu, momentum, epsilon, tengah,…]) | Ini mewakili lapisan normalisasi batch. |
BatchNormReLU ([sumbu, momentum, epsilon,…]) | Ini juga mewakili lapisan normalisasi batch tetapi dengan fungsi aktivasi Relu. |
Blokir ([awalan, params]) | Ini memberikan kelas dasar untuk semua lapisan dan model jaringan saraf. |
Konv1D (saluran, ukuran_kernel [, langkah,…]) | Metode ini digunakan untuk lapisan konvolusi 1-D. Misalnya, konvolusi temporal. |
Conv1DTranspose (saluran, ukuran_kernel [,…]) | Metode ini digunakan untuk lapisan konvolusi 1D yang dialihkan. |
Konv2D (saluran, ukuran_kernel [, langkah,…]) | Metode ini digunakan untuk lapisan konvolusi 2D. Misalnya, konvolusi spasial di atas gambar). |
Conv2DTranspose (saluran, ukuran_kernel [,…]) | Metode ini digunakan untuk lapisan konvolusi 2D yang dialihkan. |
Konv3D (saluran, ukuran_kernel [, langkah,…]) | Metode ini digunakan untuk lapisan konvolusi 3D. Misalnya, konvolusi spasial atas volume. |
Conv3DTranspose (saluran, ukuran_kernel [,…]) | Metode ini digunakan untuk lapisan konvolusi 3D yang dialihkan. |
Padat (unit [, aktivasi, use_bias,…]) | Metode ini mewakili lapisan NN yang terhubung dengan kepadatan biasa. |
Putus sekolah (tingkat [, sumbu]) | Sesuai namanya, metode menerapkan Dropout ke input. |
ELU ([alpha]) | Metode ini digunakan untuk Unit Linear Eksponensial (ELU). |
Menyematkan (input_dim, output_dim [, dtype,…]) | Ini mengubah bilangan bulat non-negatif menjadi vektor padat dengan ukuran tetap. |
Ratakan (** kwargs) | Metode ini meratakan input ke 2-D. |
GELU (** kwargs) | Metode ini digunakan untuk Gaussian Exponential Linear Unit (GELU). |
GlobalAvgPool1D ([tata letak]) | Dengan bantuan metode ini, kita dapat melakukan operasi penggabungan rata-rata global untuk data temporal. |
GlobalAvgPool2D ([tata letak]) | Dengan bantuan metode ini, kita dapat melakukan operasi penggabungan rata-rata global untuk data spasial. |
GlobalAvgPool3D ([tata letak]) | Dengan bantuan metode ini, kita dapat melakukan operasi penggabungan rata-rata global untuk data 3-D. |
GlobalMaxPool1D ([tata letak]) | Dengan bantuan metode ini, kita bisa melakukan operasi global max pooling untuk data 1-D. |
GlobalMaxPool2D ([tata letak]) | Dengan bantuan metode ini, kita bisa melakukan operasi global max pooling untuk data 2-D. |
GlobalMaxPool3D ([tata letak]) | Dengan bantuan metode ini, kita bisa melakukan operasi global max pooling untuk data 3-D. |
GroupNorm ([num_groups, epsilon, center,…]) | Metode ini menerapkan normalisasi grup ke larik masukan nD. |
HybridBlock ([prefix, params]) | Metode ini mendukung penerusan dengan keduanya Symbol dan NDArray. |
HybridLambda(fungsi [, awalan]) | Dengan bantuan metode ini kita dapat membungkus operator atau ekspresi sebagai objek HybridBlock. |
HybridSequential ([prefix, params]) | Ini menumpuk HybridBlocks secara berurutan. |
InstanceNorm ([sumbu, epsilon, tengah, skala,…]) | Metode ini menerapkan normalisasi instance ke larik masukan nD. |
Contoh Implementasi
Dalam contoh di bawah ini, kita akan menggunakan Block () yang memberikan kelas dasar untuk semua lapisan dan model jaringan saraf.
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
Anda akan melihat output berikut -
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 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;
Pada contoh di bawah ini, kita akan menggunakan HybridBlock () yang mendukung penerusan dengan Symbol dan 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
Outputnya disebutkan di bawah ini -
[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 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 menyediakan banyak build-in recurrent neural network(RNN) dalam modul gluon.rnn. Itulah alasannya, disebut modul inti.
Metode dan parameternya
Berikut adalah beberapa metode penting dan parameternya yang dicakup oleh mxnet.gluon.nn modul inti:
Metode dan Parameternya | Definisi |
---|---|
BidirectionalCell (l_cell, r_cell [,…]) | Ini digunakan untuk sel Bidirectional Recurrent Neural Network (RNN). |
DropoutCell (rate [, sumbu, awalan, params]) | Metode ini akan menerapkan putus sekolah pada masukan yang diberikan. |
GRU (hidden_size [, num_layers, layout,…]) | Ini menerapkan multi-layer gated recurrent unit (GRU) RNN ke urutan masukan yang diberikan. |
GRUCell (ukuran_sembunyi [,…]) | Ini digunakan untuk sel jaringan Gated Rectified Unit (GRU). |
HybridRecurrentCell ([prefix, params]) | Metode ini mendukung hibridisasi. |
HybridSequentialRNNCell ([prefix, params]) | Dengan bantuan metode ini kita dapat menumpuk beberapa sel HybridRNN secara berurutan. |
LSTM (hidden_size [, num_layers, layout,…]) 0 | Ini menerapkan RNN memori jangka pendek (LSTM) multi-layer pada urutan input tertentu. |
LSTMCell (hidden_size [,…]) | Ini digunakan untuk sel jaringan Long-Short Term Memory (LSTM). |
ModifierCell (base_cell) | Ini adalah kelas Basis untuk sel pengubah. |
RNN (hidden_size [, num_layers, aktivasi,…]) | Ini menerapkan multi-layer Elman RNN dengan tanh atau ReLU non-linearitas ke urutan masukan tertentu. |
RNNCell (hidden_size [, aktivasi,…]) | Ini digunakan untuk sel jaringan saraf berulang Elman RNN. |
RecurrentCell ([prefix, params]) | Ini mewakili kelas dasar abstrak untuk sel RNN. |
SequentialRNNCell ([prefix, params]) | Dengan bantuan metode ini kita dapat menumpuk beberapa sel RNN secara berurutan. |
ZoneoutCell (base_cell [, zoneout_outputs,…]) | Metode ini menerapkan Zoneout pada sel dasar. |
Contoh Implementasi
Dalam contoh di bawah ini, kita akan menggunakan GRU () yang menerapkan multi-layer gated recurrent unit (GRU) RNN ke urutan masukan yang diberikan.
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
Ini menghasilkan keluaran berikut -
[[[ 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
Ini menghasilkan keluaran berikut -
[[[-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
………………………….
Dalam contoh di bawah ini kita akan menggunakan LSTM () yang menerapkan RNN memori jangka pendek (LSTM) ke urutan input tertentu.
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
Outputnya disebutkan di bawah ini -
[[[ 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
Saat Anda menjalankan kode, Anda akan melihat output berikut -
[
[[[ 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
……………………
Modul Pelatihan
Modul pelatihan di Gluon adalah sebagai berikut -
gluon.loss
Di mxnet.gluon.lossmodul, Gluon menyediakan fungsi kerugian yang telah ditentukan sebelumnya. Pada dasarnya, ini memiliki kerugian untuk melatih jaringan saraf. Itulah alasannya disebut modul pelatihan.
Metode dan parameternya
Berikut adalah beberapa metode penting dan parameternya yang dicakup oleh mxnet.gluon.loss modul pelatihan:
Metode dan Parameternya | Definisi |
---|---|
Rugi (berat, sumbu_batch, ** kwargs) | Ini bertindak sebagai kelas dasar untuk kerugian. |
L2Loss ([berat, sumbu_batch]) | Ini menghitung kesalahan kuadrat rata-rata (MSE) antara label dan prediction(pred). |
L1Loss ([berat, sumbu_batch]) | Ini menghitung kesalahan absolut rata-rata (MAE) antara label dan pred. |
SigmoidBinaryCrossEntropyLoss ([…]) | Metode ini digunakan untuk kerugian cross-entropy untuk klasifikasi biner. |
SigmoidBCELoss | Metode ini digunakan untuk kerugian cross-entropy untuk klasifikasi biner. |
SoftmaxCrossEntropyLoss ([sumbu,…]) | Ini menghitung kerugian softmax cross-entropy (CEL). |
SoftmaxCELoss | Ini juga menghitung kerugian entropi silang softmax. |
KLDivLoss ([from_logits, axis, weight,…]) | Ini digunakan untuk kerugian divergensi Kullback-Leibler. |
CTCLoss ([tata letak, label_layout, bobot]) | Ini digunakan untuk koneksionis Temporal Classification Loss (TCL). |
HuberLoss ([rho, weight, batch_axis]) | Ini menghitung kerugian L1 yang diperhalus. Kerugian L1 yang dihaluskan akan sama dengan kerugian L1 jika kesalahan absolut melebihi rho tetapi sama dengan kerugian L2 sebaliknya. |
HingeLoss ([margin, weight, batch_axis]) | Metode ini menghitung fungsi kerugian engsel yang sering digunakan dalam SVM: |
SquaredHingeLoss ([margin, weight, batch_axis]) | Metode ini menghitung fungsi kerugian margin lunak yang digunakan dalam SVM: |
Kehilangan Logistik ([berat, sumbu_batch, format_label]) | Metode ini menghitung kerugian logistik. |
TripletLoss ([margin, weight, batch_axis]) | Metode ini menghitung kerugian triplet dengan tiga tensor input dan margin positif. |
PoissonNLLLoss ([berat, dari_logit,…]) | Fungsi menghitung kemungkinan kerugian Log Negatif. |
CosineEmbeddingLoss ([weight, batch_axis, margin]) | Fungsi tersebut menghitung jarak kosinus antara vektor. |
SDMLLoss ([smoothing_parameter, weight,…]) | Metode ini menghitung Loss Batchwise Smoothed Deep Metric Learning (SDML) yang diberi dua tensor input dan bobot smoothing SDM Loss. Ia mempelajari kesamaan antara sampel berpasangan dengan menggunakan sampel yang tidak berpasangan di minibatch sebagai contoh negatif potensial. |
Contoh
Seperti yang kita tahu mxnet.gluon.loss.lossakan menghitung MSE (Mean Squared Error) antara label dan prediksi (pred). Itu dilakukan dengan bantuan rumus berikut:
gluon.parameter
mxnet.gluon.parameter adalah wadah yang menampung parameter yaitu bobot dari Blok.
Metode dan parameternya
Berikut adalah beberapa metode penting dan parameternya yang dicakup oleh mxnet.gluon.parameter modul pelatihan -
Metode dan Parameternya | Definisi |
---|---|
cast (dtype) | Metode ini akan mentransmisikan data dan gradien Parameter ini ke tipe data baru. |
data ([ctx]) | Metode ini akan mengembalikan salinan parameter ini pada satu konteks. |
grad ([ctx]) | Metode ini akan mengembalikan buffer gradien untuk parameter ini pada satu konteks. |
menginisialisasi ([init, ctx, default_init,…]) | Metode ini akan menginisialisasi parameter dan array gradien. |
list_ctx () | Metode ini akan mengembalikan daftar konteks tempat parameter ini diinisialisasi. |
list_data () | Metode ini akan mengembalikan salinan parameter ini pada semua konteks. Itu akan dilakukan dalam urutan yang sama seperti penciptaan. |
list_grad () | Metode ini akan mengembalikan buffer gradien pada semua konteks. Ini akan dilakukan dengan urutan yang sama sepertivalues(). |
list_row_sparse_data (row_id) | Metode ini akan mengembalikan salinan parameter 'row_sparse' pada semua konteks. Ini akan dilakukan dalam urutan yang sama seperti pembuatan. |
reset_ctx (ctx) | Metode ini akan menetapkan kembali Parameter ke konteks lain. |
row_sparse_data (row_id) | Metode ini akan mengembalikan salinan parameter 'row_sparse' pada konteks yang sama dengan row_id's. |
set_data (data) | Metode ini akan menetapkan nilai parameter ini pada semua konteks. |
var () | Metode ini akan mengembalikan simbol yang mewakili parameter ini. |
zero_grad () | Metode ini akan menyetel buffer gradien pada semua konteks ke 0. |
Contoh Implementasi
Pada contoh di bawah ini, kita akan menginisialisasi parameter dan array gradien dengan menggunakan metode initialize () sebagai berikut -
weight = mx.gluon.Parameter('weight', shape=(2, 2))
weight.initialize(ctx=mx.cpu(0))
weight.data()
Output
Outputnya disebutkan di bawah ini -
[[-0.0256899 0.06511251]
[-0.00243821 -0.00123186]]
<NDArray 2x2 @cpu(0)>
Example
weight.grad()
Output
Outputnya diberikan di bawah ini -
[[0. 0.]
[0. 0.]]
<NDArray 2x2 @cpu(0)>
Example
weight.initialize(ctx=[mx.gpu(0), mx.gpu(1)])
weight.data(mx.gpu(0))
Output
Anda akan melihat output berikut -
[[-0.00873779 -0.02834515]
[ 0.05484822 -0.06206018]]
<NDArray 2x2 @gpu(0)>
Example
weight.data(mx.gpu(1))
Output
Ketika Anda menjalankan kode di atas, Anda akan melihat output berikut -
[[-0.00873779 -0.02834515]
[ 0.05484822 -0.06206018]]
<NDArray 2x2 @gpu(1)>
gluon.trainer
mxnet.gluon.trainer menerapkan Pengoptimal pada sekumpulan parameter. Ini harus digunakan bersama dengan autograd.
Metode dan parameternya
Berikut adalah beberapa metode penting dan parameternya yang dicakup oleh mxnet.gluon.trainer modul pelatihan -
Metode dan Parameternya | Definisi |
---|---|
allreduce_grads () | Metode ini akan mengurangi gradien dari konteks yang berbeda untuk setiap parameter (bobot). |
load_states (fname) | Sesuai namanya, metode ini akan memuat status pelatih. |
save_states (fname) | Sesuai namanya, metode ini akan menghemat status pelatih. |
set_learning_rate (lr) | Metode ini akan menetapkan kecepatan pemelajaran baru pengoptimal. |
langkah (ukuran_batch [, ignore_stale_grad]) | Metode ini akan membuat satu langkah pembaruan parameter. Ini harus dipanggil setelahnyaautograd.backward() dan di luar record() cakupan. |
perbarui (batch_size [, ignore_stale_grad]) | Metode ini juga akan membuat satu langkah pembaruan parameter. Ini harus dipanggil setelahnyaautograd.backward() dan di luar record() scope dan setelah trainer.update (). |
Modul Data
Modul data Gluon dijelaskan di bawah ini -
gluon.data
Gluon menyediakan sejumlah besar utilitas kumpulan data bawaan dalam modul gluon.data. Itulah alasannya disebut modul data.
Kelas dan parameternya
Berikut adalah beberapa metode penting dan parameternya yang dicakup oleh modul inti mxnet.gluon.data. Metode ini biasanya terkait dengan Kumpulan Data, Pengambilan Sampel, dan DataLoader.
Himpunan dataMetode dan Parameternya | Definisi |
---|---|
ArrayDataset (* args) | Metode ini merepresentasikan kumpulan data yang menggabungkan dua atau lebih dari dua objek mirip kumpulan data. Misalnya, Kumpulan Data, daftar, larik, dll. |
BatchSampler (sampler, batch_size [, last_batch]) | Metode ini membungkus yang lain Sampler. Setelah dibungkus, ia mengembalikan kumpulan sampel mini. |
DataLoader (kumpulan data [, batch_size, shuffle,…]) | Mirip dengan BatchSampler tetapi metode ini memuat data dari set data. Setelah dimuat, ia mengembalikan kumpulan data mini. |
Ini mewakili kelas dataset abstrak. | |
FilterSampler (fn, dataset) | Metode ini merepresentasikan elemen sampel dari Dataset yang dikembalikan oleh fn (function) True. |
RandomSampler (panjang) | Metode ini merepresentasikan elemen sampel dari [0, panjang) secara acak tanpa penggantian. |
RecordFileDataset (nama file) | Ini mewakili kumpulan data yang membungkus file RecordIO. Ekstensi dari file tersebut adalah.rec. |
Sampler | Ini adalah kelas dasar untuk sampler. |
SequentialSampler (panjang [, mulai]) | Ini mewakili elemen sampel dari set [start, start + length) secara berurutan. |
Ini mewakili elemen sampel dari set [start, start + length) secara berurutan. | Ini mewakili pembungkus Set Data sederhana terutama untuk daftar dan array. |
Contoh Implementasi
Pada contoh di bawah ini, kami akan menggunakan gluon.data.BatchSampler()API, yang membungkus sampler lain. Ini mengembalikan batch mini sampel.
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
Outputnya disebutkan di bawah ini -
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14]]
gluon.data.vision.datasets
Gluon menyediakan sejumlah besar fungsi kumpulan data vision yang telah ditentukan sebelumnya di gluon.data.vision.datasets modul.
Kelas dan parameternya
MXNet memberi kami kumpulan data yang berguna dan penting, yang kelas dan parameternya diberikan di bawah ini -
Kelas dan Parameternya | Definisi |
---|---|
MNIST ([root, train, transform]) | Ini adalah set data yang berguna yang memberi kita angka tulisan tangan. Url untuk dataset MNIST adalah http://yann.lecun.com/exdb/mnist |
FashionMNIST ([root, train, transform]) | Dataset ini terdiri dari gambar artikel Zalando yang terdiri dari produk fashion. Ini adalah pengganti drop-in dari set data MNIST asli. Anda bisa mendapatkan kumpulan data ini dari https://github.com/zalandoresearch/fashion-mnist |
CIFAR10 ([root, train, transform]) | Ini adalah kumpulan data klasifikasi gambar dari https://www.cs.toronto.edu/~kriz/cifar.html. Dalam dataset ini setiap sampel merupakan citra dengan bentuk (32, 32, 3). |
CIFAR100 ([root, fine_label, train, transform]) | Ini adalah kumpulan data klasifikasi gambar CIFAR100 dari https://www.cs.toronto.edu/~kriz/cifar.html. Itu juga memiliki setiap sampel adalah gambar dengan bentuk (32, 32, 3). |
ImageRecordDataset (nama file [, bendera, transformasi]) | Dataset ini membungkus file RecordIO yang berisi gambar. Dalam hal ini, setiap sampel adalah gambar dengan labelnya yang sesuai. |
ImageFolderDataset (root [, flag, transform]) | Ini adalah dataset untuk memuat file gambar yang disimpan dalam struktur folder. |
ImageListDataset ([root, imglist, flag]) | Ini adalah kumpulan data untuk memuat file gambar yang ditentukan oleh daftar entri. |
Contoh
Dalam contoh di bawah ini, kami akan menunjukkan penggunaan ImageListDataset (), yang digunakan untuk memuat file gambar yang ditentukan oleh daftar entri -
# 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]]
Modul Utilitas
Modul utilitas di Gluon adalah sebagai berikut -
gluon.utils
Gluon menyediakan sejumlah besar pengoptimal utilitas paralelisasi bawaan dalam modul gluon.utils. Ini menyediakan berbagai utilitas untuk pelatihan. Itulah alasannya disebut modul utilitas.
Fungsi dan parameternya
Berikut adalah fungsi dan parameternya yang terdiri dari modul utilitas bernama gluon.utils −
Fungsi dan Parameternya | Definisi |
---|---|
split_data (data, num_slice [, batch_axis,…]) | Fungsi ini biasanya digunakan untuk paralelisme data dan setiap slice dikirim ke satu perangkat yaitu GPU. Ini membagi NDArray menjadinum_slice irisan bersama batch_axis. |
split_and_load (data, ctx_list [, batch_axis,…]) | Fungsi ini membagi NDArray menjadi len(ctx_list) irisan bersama batch_axis. Satu-satunya perbedaan dari fungsi split_data () di atas adalah, ia juga memuat setiap potongan ke dalam satu konteks ctx_list. |
clip_global_norm (array, max_norm [,…]) | Tugas dari fungsi ini adalah untuk mengubah skala NDArays sedemikian rupa sehingga jumlah 2-norma mereka lebih kecil dari max_norm. |
check_sha1 (nama file, sha1_hash) | Fungsi ini akan memeriksa apakah hash sha1 dari konten file cocok dengan hash yang diharapkan atau tidak. |
unduh (url [, jalur, timpa, sha1_hash,…]) | Seperti yang ditentukan namanya, fungsi ini akan mengunduh URL tertentu. |
ganti_file (src, dst) | Fungsi ini akan mengimplementasikan atomic os.replace. itu akan dilakukan dengan Linux dan OSX. |