Apache MXNet - Python API ndarray

Chương này giải thích thư viện ndarray có sẵn trong Apache MXNet.

Mxnet.ndarray

Thư viện NDArray của Apache MXNet xác định DS (cấu trúc dữ liệu) cốt lõi cho tất cả các phép tính toán học. Hai công việc cơ bản của NDArray như sau:

  • Nó hỗ trợ thực thi nhanh chóng trên nhiều loại cấu hình phần cứng.

  • Nó tự động song song nhiều hoạt động trên phần cứng có sẵn.

Ví dụ dưới đây cho thấy cách người ta có thể tạo NDArray bằng cách sử dụng 'mảng' 1-D và 2-D từ một danh sách Python thông thường -

import mxnet as mx
from mxnet import nd

x = nd.array([1,2,3,4,5,6,7,8,9,10])
print(x)

Output

Đầu ra được đưa ra dưới đây:

[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
<NDArray 10 @cpu(0)>

Example

y = nd.array([[1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10], [1,2,3,4,5,6,7,8,9,10]])
print(y)

Output

Điều này tạo ra kết quả sau:

[[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
 [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
 [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]]
<NDArray 3x10 @cpu(0)>

Bây giờ chúng ta hãy thảo luận chi tiết về các lớp, hàm và tham số của API ndarray của MXNet.

Các lớp học

Bảng sau bao gồm các lớp API ndarray của MXNet:

Lớp học Định nghĩa
CachedOp (sym [, flags]) Nó được sử dụng cho bộ điều khiển được lưu trong bộ nhớ cache.
NDArray (xử lý [, có thể ghi]) Nó được sử dụng như một đối tượng mảng đại diện cho một mảng đa chiều, đồng nhất của các mục có kích thước cố định.

Các chức năng và thông số của chúng

Sau đây là một số hàm quan trọng và các tham số của chúng được bao phủ bởi mxnet.ndarray API -

Chức năng và các thông số của nó Định nghĩa
Activation([data, act_type, out, name]) Nó áp dụng một phần tử chức năng kích hoạt khôn ngoan cho đầu vào. Nó hỗ trợ các chức năng kích hoạt relu, sigmoid, tanh, softrelu, softsign.
BatchNorm([data, gamma, beta, moving_mean,…]) Nó được sử dụng để chuẩn hóa hàng loạt. Hàm này chuẩn hóa một lô dữ liệu theo giá trị trung bình và phương sai. Nó áp dụng gamma quy mô và beta bù đắp.
BilinearSampler([dữ liệu, lưới, cudnn_off,…])

Chức năng này áp dụng lấy mẫu song tuyến cho bản đồ tính năng đầu vào. Thực ra nó là chìa khóa của “Mạng biến áp không gian”.

Nếu bạn đã quen với chức năng remap trong OpenCV thì cách sử dụng chức năng này cũng tương tự như vậy. Sự khác biệt duy nhất là nó có đường chuyền ngược.

BlockGrad ([data, out, name]) Như tên chỉ định, hàm này dừng tính toán gradient. Về cơ bản, nó ngăn không cho gradient tích lũy của các đầu vào chảy qua toán tử này theo hướng ngược lại.
ép kiểu ([data, dtype, out, name]) Hàm này sẽ chuyển tất cả các phần tử của đầu vào sang một kiểu mới.

Ví dụ triển khai

Trong ví dụ dưới đây, chúng ta sẽ sử dụng hàm BilinierSampler () để thu nhỏ dữ liệu hai lần và dịch chuyển dữ liệu theo chiều ngang -1 pixel -

import mxnet as mx
from mxnet import nd
data = nd.array([[[[2, 5, 3, 6],
   [1, 8, 7, 9],
   [0, 4, 1, 8],
   [2, 0, 3, 4]]]])
affine_matrix = nd.array([[2, 0, 0],
   [0, 2, 0]])

affine_matrix = nd.reshape(affine_matrix, shape=(1, 6))

grid = nd.GridGenerator(data=affine_matrix, transform_type='affine', target_shape=(4, 4))

output = nd.BilinearSampler(data, grid)

Output

Khi bạn thực thi đoạn mã trên, bạn sẽ thấy kết quả sau:

[[[[0. 0. 0. 0. ]
   [0. 4.0000005 6.25 0. ]
   [0. 1.5 4. 0. ]
   [0. 0. 0. 0. ]]]]
<NDArray 1x1x4x4 @cpu(0)>

Kết quả trên hiển thị việc thu phóng dữ liệu hai lần.

Ví dụ về việc dịch chuyển dữ liệu theo -1 pixel như sau:

import mxnet as mx
from mxnet import nd
data = nd.array([[[[2, 5, 3, 6],
   [1, 8, 7, 9],
   [0, 4, 1, 8],
   [2, 0, 3, 4]]]])
warp_matrix = nd.array([[[[1, 1, 1, 1],
   [1, 1, 1, 1],
   [1, 1, 1, 1],
   [1, 1, 1, 1]],
   [[0, 0, 0, 0],
   [0, 0, 0, 0],
   [0, 0, 0, 0],
   [0, 0, 0, 0]]]])
grid = nd.GridGenerator(data=warp_matrix, transform_type='warp')
output = nd.BilinearSampler(data, grid)

Output

Đầu ra được nêu dưới đây -

[[[[5. 3. 6. 0.]
[8. 7. 9. 0.]
[4. 1. 8. 0.]
[0. 3. 4. 0.]]]]
<NDArray 1x1x4x4 @cpu(0)>

Tương tự, ví dụ sau cho thấy việc sử dụng hàm cast () -

nd.cast(nd.array([300, 10.1, 15.4, -1, -2]), dtype='uint8')

Output

Khi thực hiện, bạn sẽ nhận được kết quả sau:

[ 44 10 15 255 254]
<NDArray 5 @cpu(0)>

ndarray.contrib

API Contrib NDArray được định nghĩa trong gói ndarray.contrib. Nó thường cung cấp nhiều API thử nghiệm hữu ích cho các tính năng mới. API này hoạt động như một nơi dành cho cộng đồng, nơi họ có thể thử các tính năng mới. Người đóng góp tính năng cũng sẽ nhận được phản hồi.

Các chức năng và thông số của chúng

Sau đây là một số chức năng quan trọng và các tham số của chúng được bao hàm bởi mxnet.ndarray.contrib API -

Chức năng và các thông số của nó Định nghĩa
rand_zipfian(true_classes, num_sampled,…) Hàm này lấy mẫu ngẫu nhiên từ phân phối Zipfian gần đúng. Phân phối cơ sở của chức năng này là phân phối Zipfian. Hàm này lấy mẫu ngẫu nhiên các ứng cử viên num_sampled và các phần tử của mẫu_candidate được lấy từ phân phối cơ sở đã cho ở trên.
foreach(body, data, init_states) Như tên của nó, hàm này chạy một vòng lặp for với tính toán do người dùng xác định qua NDArrays trên thứ nguyên 0. Hàm này mô phỏng một vòng lặp for và nội dung có tính toán cho một lần lặp lại của vòng lặp for.
while_loop (cond, func, loop_vars [,…]) Như tên của nó, hàm này chạy một vòng lặp while với điều kiện tính toán và vòng lặp do người dùng xác định. Hàm này mô phỏng một vòng lặp while thực hiện tính toán tùy chỉnh một cách thành thạo nếu điều kiện được thỏa mãn.
cond(pred, then_func, else_func) Như tên của nó, hàm này chạy if-then-else bằng cách sử dụng tính toán và điều kiện do người dùng xác định. Hàm này mô phỏng một nhánh if-like chọn thực hiện một trong hai phép tính tùy chỉnh theo điều kiện đã chỉ định.
isinf(dữ liệu) Hàm này thực hiện kiểm tra phần tử khôn ngoan để xác định xem NDArray có chứa phần tử vô hạn hay không.
getnnz([dữ liệu, trục, ra, tên]) Hàm này cung cấp cho chúng ta số lượng giá trị được lưu trữ cho một tensor thưa thớt. Nó cũng bao gồm các số không rõ ràng. Nó chỉ hỗ trợ ma trận CSR trên CPU.
yêu cầu ([data, min_range, max_range,…]) Hàm này yêu cầu dữ liệu đã cho được lượng hóa trong int32 và các ngưỡng tương ứng, vào int8 bằng cách sử dụng ngưỡng tối thiểu và tối đa được tính toán trong thời gian chạy hoặc từ hiệu chuẩn.

Ví dụ triển khai

Trong ví dụ dưới đây, chúng tôi sẽ sử dụng hàm rand_zipfian để vẽ các mẫu ngẫu nhiên từ phân phối Zipfian gần đúng -

import mxnet as mx
from mxnet import nd
trueclass = mx.nd.array([2])
samples, exp_count_true, exp_count_sample = mx.nd.contrib.rand_zipfian(trueclass, 3, 4)
samples

Output

Bạn sẽ thấy kết quả sau:

[0 0 1]
<NDArray 3 @cpu(0)>

Example

exp_count_true

Output

Đầu ra được đưa ra dưới đây:

[0.53624076]
<NDArray 1 @cpu(0)>

Example

exp_count_sample

Output

Điều này tạo ra kết quả sau:

[1.29202967 1.29202967 0.75578891]
<NDArray 3 @cpu(0)>

Trong ví dụ dưới đây, chúng ta sẽ sử dụng hàm while_loop để chạy vòng lặp while cho tính toán do người dùng xác định và điều kiện vòng lặp:

cond = lambda i, s: i <= 7
func = lambda i, s: ([i + s], [i + 1, s + i])
loop_var = (mx.nd.array([0], dtype="int64"), mx.nd.array([1], dtype="int64"))
outputs, states = mx.nd.contrib.while_loop(cond, func, loop_vars, max_iterations=10)
outputs

Output

Đầu ra được hiển thị bên dưới -

[
[[       1]
 [      2]
 [      4]
 [      7]
 [     11]
 [     16]
 [     22]
 [     29]
 [3152434450384]
 [     257]]
<NDArray 10x1 @cpu(0)>]

Example

States

Output

Điều này tạo ra kết quả sau:

[
[8]
<NDArray 1 @cpu(0)>,
[29]
<NDArray 1 @cpu(0)>]

ndarray.image

API Image NDArray được định nghĩa trong gói ndarray.image. Như tên của nó, nó thường được sử dụng cho hình ảnh và các tính năng của chúng.

Các chức năng và thông số của chúng

Sau đây là một số chức năng quan trọng và các tham số của chúng được bao hàm bởi mxnet.ndarray.image API-

Chức năng và các thông số của nó Định nghĩa
adjust_lighting([dữ liệu, alpha, out, name]) Như tên của nó, chức năng này điều chỉnh mức độ chiếu sáng của đầu vào. Nó tuân theo phong cách AlexNet.
crop([dữ liệu, x, y, width, height, out, name]) Với sự trợ giúp của chức năng này, chúng ta có thể cắt ảnh NDArray có hình dạng (H x W x C) hoặc (N x H x W x C) theo kích thước do người dùng đưa ra.
normalize([data, mean, std, out, name]) Nó sẽ chuẩn hóa một tensor hình dạng (C x H x W) hoặc (N x C x H x W) với meanstandard deviation(SD).
random_crop ([dữ liệu, xrange, yrange, width,…]) Tương tự như crop (), nó cắt ngẫu nhiên một NDArray hình ảnh có hình dạng (H x W x C) hoặc (N x H x W x C) theo kích thước do người dùng đưa ra. Nó sẽ lấy mẫu kết quả nếu src nhỏ hơn kích thước.
random_lighting([data, alpha_std, out, name]) Như tên của nó, chức năng này thêm nhiễu PCA một cách ngẫu nhiên. Nó cũng tuân theo phong cách AlexNet.
random_resized_crop([dữ liệu, xrange, yrange,…]) Nó cũng cắt ảnh một cách ngẫu nhiên NDArray có hình dạng (H x W x C) hoặc (N x H x W x C) theo kích thước đã cho. Nó sẽ lấy mẫu kết quả, nếu src nhỏ hơn kích thước. Nó cũng sẽ ngẫu nhiên hóa diện tích và khẩu phần.
resize([data, size, keep_ratio, interp,…]) Như tên của nó, chức năng này sẽ thay đổi kích thước NDArray hình ảnh có hình dạng (H x W x C) hoặc (N x H x W x C) thành kích thước do người dùng cung cấp.
to_tensor([dữ liệu, ngoài, tên]) Nó chuyển đổi một NDArray hình ảnh có hình dạng (H x W x C) hoặc (N x H x W x C) với các giá trị trong phạm vi [0, 255] thành một tensor NDArray có hình dạng (C x H x W) hoặc ( N x C x H x W) với các giá trị trong khoảng [0, 1].

Ví dụ triển khai

Trong ví dụ dưới đây, chúng tôi sẽ sử dụng hàm to_tensor để chuyển đổi NDArray hình ảnh có dạng (H x W x C) hoặc (N x H x W x C) với các giá trị trong phạm vi [0, 255] thành tensor NDArray của hình (C x H x W) hoặc (N x C x H x W) với các giá trị trong khoảng [0, 1].

import numpy as np
img = mx.nd.random.uniform(0, 255, (4, 2, 3)).astype(dtype=np.uint8)
mx.nd.image.to_tensor(img)

Output

Bạn sẽ thấy kết quả sau:

[[[0.972549 0.5058824 ]
   [0.6039216 0.01960784]
   [0.28235295 0.35686275]
   [0.11764706 0.8784314 ]]

[[0.8745098 0.9764706 ]
   [0.4509804 0.03529412]
   [0.9764706 0.29411766]
   [0.6862745 0.4117647 ]]

[[0.46666667 0.05490196]
   [0.7372549 0.4392157 ]
   [0.11764706 0.47843137]
   [0.31764707 0.91764706]]]
<NDArray 3x4x2 @cpu(0)>

Example

img = mx.nd.random.uniform(0, 255, (2, 4, 2, 3)).astype(dtype=np.uint8)

mx.nd.image.to_tensor(img)

Output

Khi bạn chạy mã, bạn sẽ thấy kết quả sau:

[[[[0.0627451 0.5647059 ]
[0.2627451 0.9137255 ]
[0.57254905 0.27450982]
[0.6666667 0.64705884]]
[[0.21568628 0.5647059 ]
[0.5058824 0.09019608]
[0.08235294 0.31764707]
[0.8392157 0.7137255 ]]
[[0.6901961 0.8627451 ]
[0.52156866 0.91764706]
[0.9254902 0.00784314]
[0.12941177 0.8392157 ]]]
[[[0.28627452 0.39607844]
[0.01960784 0.36862746]
[0.6745098 0.7019608 ]
[0.9607843 0.7529412 ]]
[[0.2627451 0.58431375]
[0.16470589 0.00392157]
[0.5686275 0.73333335]
[0.43137255 0.57254905]]
[[0.18039216 0.54901963]
[0.827451 0.14509805]
[0.26666668 0.28627452]
[0.24705882 0.39607844]]]]
<NDArgt;ray 2x3x4x2 @cpu(0)>

Trong ví dụ dưới đây, chúng ta sẽ sử dụng hàm normalize để chuẩn hóa một tensor hình dạng (C x H x W) hoặc (N x C x H x W) với meanstandard deviation(SD).

img = mx.nd.random.uniform(0, 1, (3, 4, 2))

mx.nd.image.normalize(img, mean=(0, 1, 2), std=(3, 2, 1))

Output

Điều này tạo ra kết quả sau:

[[[ 0.29391178 0.3218054 ]
[ 0.23084386 0.19615503]
[ 0.24175143 0.21988946]
[ 0.16710812 0.1777354 ]]
[[-0.02195817 -0.3847335 ]
[-0.17800489 -0.30256534]
[-0.28807247 -0.19059572]
[-0.19680339 -0.26256624]]
[[-1.9808068 -1.5298678 ]
[-1.6984252 -1.2839255 ]
[-1.3398265 -1.712009 ]
[-1.7099224 -1.6165378 ]]]
<NDArray 3x4x2 @cpu(0)>

Example

img = mx.nd.random.uniform(0, 1, (2, 3, 4, 2))

mx.nd.image.normalize(img, mean=(0, 1, 2), std=(3, 2, 1))

Output

Khi bạn thực thi đoạn mã trên, bạn sẽ thấy kết quả sau:

[[[[ 2.0600514e-01 2.4972327e-01]
[ 1.4292289e-01 2.9281738e-01]
[ 4.5158025e-02 3.4287784e-02]
[ 9.9427439e-02 3.0791296e-02]]
[[-2.1501756e-01 -3.2297665e-01]
[-2.0456362e-01 -2.2409186e-01]
[-2.1283737e-01 -4.8318747e-01]
[-1.7339960e-01 -1.5519112e-02]]
[[-1.3478968e+00 -1.6790028e+00]
[-1.5685816e+00 -1.7787373e+00]
[-1.1034534e+00 -1.8587360e+00]
[-1.6324382e+00 -1.9027401e+00]]]
[[[ 1.4528830e-01 3.2801408e-01]
[ 2.9730779e-01 8.6780310e-02]
[ 2.6873133e-01 1.7900752e-01]
[ 2.3462953e-01 1.4930873e-01]]
[[-4.4988656e-01 -4.5021546e-01]
[-4.0258706e-02 -3.2384416e-01]
[-1.4287934e-01 -2.6537544e-01]
[-5.7649612e-04 -7.9429924e-02]]
[[-1.8505517e+00 -1.0953522e+00]
[-1.1318740e+00 -1.9624406e+00]
[-1.8375070e+00 -1.4916846e+00]
[-1.3844404e+00 -1.8331525e+00]]]]
<NDArray 2x3x4x2 @cpu(0)>

ndarray.random

API NDArray ngẫu nhiên được định nghĩa trong gói ndarray.random. Như tên của nó, nó là API NDArray của trình tạo phân phối ngẫu nhiên của MXNet.

Các chức năng và thông số của chúng

Sau đây là một số chức năng quan trọng và các tham số của chúng được bao hàm bởi mxnet.ndarray.random API -

Chức năng và các tham số của nó Định nghĩa
đồng nhất ([thấp, cao, hình dạng, loại, ctx, ngoài]) Nó tạo ra các mẫu ngẫu nhiên từ một phân phối đồng đều.
bình thường ([loc, scale, shape, dtype, ctx, out]) Nó tạo ra các mẫu ngẫu nhiên từ phân phối chuẩn (Gaussian).
randn (* hình dạng, ** kwargs) Nó tạo ra các mẫu ngẫu nhiên từ phân phối chuẩn (Gaussian).
mũ ([scale, shape, dtype, ctx, out]) Nó tạo ra các mẫu từ phân phối hàm mũ.
gamma ([alpha, beta, shape, dtype, ctx, out]) Nó tạo ra các mẫu ngẫu nhiên từ phân phối gamma.
đa thức (data [, shape, get_prob, out, dtype]) Nó tạo ra lấy mẫu đồng thời từ nhiều phân phối đa thức.
negative_binomial ([k, p, shape, dtype, ctx, out]) Nó tạo ra các mẫu ngẫu nhiên từ một phân phối nhị thức âm.
general_negative_binomial ([mu, alpha,…]) Nó tạo ra các mẫu ngẫu nhiên từ một phân phối nhị thức âm tổng quát.
xáo trộn (dữ liệu, ** kwargs) Nó xáo trộn các phần tử một cách ngẫu nhiên.
randint (thấp, cao [, shape, dtype, ctx, out]) Nó tạo ra các mẫu ngẫu nhiên từ một phân bố đồng đều rời rạc.
exponential_like ([data, lam, out, name]) Nó tạo ra các mẫu ngẫu nhiên từ phân phối hàm mũ theo hình dạng mảng đầu vào.
gamma_like ([dữ liệu, alpha, beta, out, name]) Nó tạo ra các mẫu ngẫu nhiên từ phân phối gamma theo hình dạng mảng đầu vào.
general_negative_binomial_like ([dữ liệu,…]) Nó tạo ra các mẫu ngẫu nhiên từ một phân phối nhị thức âm tổng quát, theo hình dạng mảng đầu vào.
negative_binomial_like ([data, k, p, out, name]) Nó tạo ra các mẫu ngẫu nhiên từ phân phối nhị thức âm, theo hình dạng mảng đầu vào.
normal_like ([data, loc, scale, out, name]) Nó tạo ra các mẫu ngẫu nhiên từ phân phối chuẩn (Gaussian), theo hình dạng mảng đầu vào.
poisson_like ([data, lam, out, name]) Nó tạo ra các mẫu ngẫu nhiên từ phân phối Poisson, theo hình dạng mảng đầu vào.
Uniform_like ([dữ liệu, thấp, cao, ngoài, tên]) Nó tạo ra các mẫu ngẫu nhiên từ một phân phối đồng nhất, theo hình dạng mảng đầu vào.

Ví dụ triển khai

Trong ví dụ dưới đây, chúng ta sẽ vẽ các mẫu ngẫu nhiên từ một phân phối đồng đều. Đối với điều này sẽ được sử dụng chức nănguniform().

mx.nd.random.uniform(0, 1)

Output

Đầu ra được đề cập bên dưới -

[0.12381998]
<NDArray 1 @cpu(0)>

Example

mx.nd.random.uniform(-1, 1, shape=(2,))

Output

Đầu ra được đưa ra dưới đây -

[0.558102 0.69601643]
<NDArray 2 @cpu(0)>

Example

low = mx.nd.array([1,2,3])
high = mx.nd.array([2,3,4])
mx.nd.random.uniform(low, high, shape=2)

Output

Bạn sẽ thấy kết quả sau:

[[1.8649333 1.8073189]
 [2.4113967 2.5691009]
 [3.1399727 3.4071832]]
<NDArray 3x2 @cpu(0)>

Trong ví dụ dưới đây, chúng ta sẽ vẽ các mẫu ngẫu nhiên từ một phân phối nhị thức âm tổng quát. Đối với điều này, chúng tôi sẽ sử dụng hàmgeneralized_negative_binomial().

mx.nd.random.generalized_negative_binomial(10, 0.5)

Output

Khi bạn thực thi đoạn mã trên, bạn sẽ thấy kết quả sau:

[1.]
<NDArray 1 @cpu(0)>

Example

mx.nd.random.generalized_negative_binomial(10, 0.5, shape=(2,))

Output

Đầu ra được cung cấp kèm theo:

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

Example

mu = mx.nd.array([1,2,3])
alpha = mx.nd.array([0.2,0.4,0.6])
mx.nd.random.generalized_negative_binomial(mu, alpha, shape=2)

Output

Dưới đây là đầu ra của mã:

[[0. 0.]
 [4. 1.]
 [9. 3.]]
<NDArray 3x2 @cpu(0)>

ndarray.utils

API NDArray tiện ích được định nghĩa trong gói ndarray.utils. Như tên của nó, nó cung cấp các chức năng tiện ích cho NDArray và BaseSparseNDArray.

Các chức năng và thông số của chúng

Sau đây là một số chức năng quan trọng và các tham số của chúng được bao hàm bởi mxnet.ndarray.utils API -

Chức năng và các tham số của nó Định nghĩa
số không (shape [, ctx, dtype, stype]) Hàm này sẽ trả về một mảng mới có hình dạng và kiểu đã cho, chứa đầy các số không.
trống (shape [, ctx, dtype, stype]) Nó sẽ trả về một mảng mới có hình dạng và kiểu đã cho mà không cần khởi tạo các mục nhập.
mảng (source_array [, ctx, dtype]) Như tên của nó, hàm này sẽ tạo một mảng từ bất kỳ đối tượng nào có giao diện mảng.
tải (fname) Nó sẽ tải một mảng từ tệp.
load_frombuffer (buf) Như tên của nó, hàm này sẽ tải một từ điển mảng hoặc danh sách từ một bộ đệm
lưu (tên, dữ liệu) Hàm này sẽ lưu danh sách các mảng hoặc một lệnh của mảng str-> vào tệp.

Ví dụ triển khai

Trong ví dụ dưới đây, chúng ta sẽ trả về một mảng mới có hình dạng và kiểu đã cho, chứa đầy các số không. Đối với điều này, chúng tôi sẽ sử dụng hàmzeros().

mx.nd.zeros((1,2), mx.cpu(), stype='csr')

Output

Điều này tạo ra kết quả sau:

<CSRNDArray 1x2 @cpu(0)>

Example

mx.nd.zeros((1,2), mx.cpu(), 'float16', stype='row_sparse').asnumpy()

Output

Bạn sẽ nhận được kết quả sau:

array([[0., 0.]], dtype=float16)

Trong ví dụ dưới đây, chúng ta sẽ lưu một danh sách các mảng và một từ điển các chuỗi. Đối với điều này, chúng tôi sẽ sử dụng hàmsave().

Example

x = mx.nd.zeros((2,3))
y = mx.nd.ones((1,4))
mx.nd.save('list', [x,y])
mx.nd.save('dict', {'x':x, 'y':y})
mx.nd.load('list')

Output

Khi thực hiện, bạn sẽ nhận được kết quả sau:

[
[[0. 0. 0.]
[0. 0. 0.]]
<NDArray 2x3 @cpu(0)>,
[[1. 1. 1. 1.]]
<NDArray 1x4 @cpu(0)>]

Example

mx.nd.load('my_dict')

Output

Đầu ra được hiển thị bên dưới -

{'x':
[[0. 0. 0.]
[0. 0. 0.]]
<NDArray 2x3 @cpu(0)>, 'y':
[[1. 1. 1. 1.]]
<NDArray 1x4 @cpu(0)>}