Apache MXNet - Biểu tượng API Python

Trong chương này, chúng ta sẽ tìm hiểu về một giao diện trong MXNet được gọi là Symbol.

Mxnet.ndarray

API ký hiệu của Apache MXNet là một giao diện để lập trình tượng trưng. API biểu tượng có các tính năng sử dụng sau:

  • Đồ thị tính toán

  • Giảm sử dụng bộ nhớ

  • Tối ưu hóa chức năng trước khi sử dụng

Ví dụ dưới đây cho thấy cách người ta có thể tạo một biểu thức đơn giản bằng cách sử dụng API ký hiệu của MXNet -

Một NDArray bằng cách sử dụng 'mảng' 1-D và 2-D từ danh sách Python thông thường -

import mxnet as mx
# Two placeholders namely x and y will be created with mx.sym.variable
x = mx.sym.Variable('x')
y = mx.sym.Variable('y')
# The symbol here is constructed using the plus ‘+’ operator.
z = x + y

Output

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

<Symbol _plus0>

Example

(x, y, z)

Output

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

(<Symbol x>, <Symbol y>, <Symbol _plus0>)

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 Symbol của MXNet:

Lớp học Định nghĩa
Biểu tượng (tay cầm) Biểu tượng cụ thể của lớp này là biểu đồ tượng trưng của Apache MXNet.

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.

Chức năng và các tham số của nó Định nghĩa
Kích hoạt ([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ợrelu, sigmoid, tanh, softrelu, softsign các chức năng kích hoạt.
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 một thang điểmgamma và bù đắp beta.
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.
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. Hàm này, như tên đã chỉ định, trả về một biểu tượng mới có hình dạng và kiểu đã cho, chứa đầy các số không.
những cái (shape [, dtype]) Hàm này, như tên đã chỉ định trả về một biểu tượng mới có hình dạng và kiểu đã cho, chứa đầy các ký hiệu.
đầy đủ (shape, val [, dtype]) Hàm này, như tên đã chỉ định trả về một mảng mới có hình dạng và kiểu đã cho, chứa đầy giá trị đã cho val.
arange (bắt đầu [, dừng, bước, lặp lại,…]) Nó sẽ trả về các giá trị cách đều nhau trong một khoảng thời gian nhất định. Các giá trị được tạo trong khoảng thời gian nửa mở [bắt đầu, dừng) có nghĩa là khoảng đó bao gồmstart nhưng loại trừ stop.
linspace (bắt đầu, dừng, num [, điểm cuối, tên,…]) Nó sẽ trả về các số cách đều nhau trong một khoảng thời gian xác định. Tương tự như hàm sắp xếp (), các giá trị được tạo ra trong khoảng thời gian nửa mở [bắt đầu, dừng) có nghĩa là khoảng đó bao gồmstart nhưng loại trừ stop.
biểu đồ (a [, thùng, dải]) Như tên của nó, hàm này sẽ tính toán biểu đồ của dữ liệu đầu vào.
sức mạnh (cơ sở, điểm kinh nghiệm) Như tên của nó, hàm này sẽ trả về kết quả theo phần tử của base phần tử được nâng lên thành quyền lực từ expthành phần. Cả hai đầu vào tức là cơ sở và điểm kinh nghiệm, có thể là Biểu tượng hoặc vô hướng. Ở đây lưu ý rằng không được phép phát sóng. Bạn có thể dùngbroadcast_pow nếu bạn muốn sử dụng tính năng phát sóng.
SoftmaxActivation ([data, mode, name, attr, out]) Chức năng này áp dụng kích hoạt softmax cho đầu vào. Nó dành cho các lớp bên trong. Nó thực sự không được dùng nữa, chúng ta có thể sử dụngsoftmax() thay thế.

Ví dụ triển khai

Trong ví dụ dưới đây, chúng tôi sẽ sử dụng hàm power() sẽ trả về kết quả theo phần tử khôn ngoan của phần tử cơ sở được nâng lên thành lũy thừa từ phần tử exp:

import mxnet as mx
mx.sym.power(3, 5)

Output

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

243

Example

x = mx.sym.Variable('x')
y = mx.sym.Variable('y')
z = mx.sym.power(x, 3)
z.eval(x=mx.nd.array([1,2]))[0].asnumpy()

Output

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

array([1., 8.], dtype=float32)

Example

z = mx.sym.power(4, y)
z.eval(y=mx.nd.array([2,3]))[0].asnumpy()

Output

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

array([16., 64.], dtype=float32)

Example

z = mx.sym.power(x, y)
z.eval(x=mx.nd.array([4,5]), y=mx.nd.array([2,3]))[0].asnumpy()

Output

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

array([ 16., 125.], dtype=float32)

Trong ví dụ dưới đây, chúng ta sẽ sử dụng hàm SoftmaxActivation() (or softmax()) sẽ được áp dụng cho đầu vào và dành cho các lớp bên trong.

input_data = mx.nd.array([[2., 0.9, -0.5, 4., 8.], [4., -.7, 9., 2., 0.9]])
soft_max_act = mx.nd.softmax(input_data)
print (soft_max_act.asnumpy())

Output

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

[[2.4258138e-03 8.0748333e-04 1.9912292e-04 1.7924475e-02 9.7864312e-01]
[6.6843745e-03 6.0796250e-05 9.9204916e-01 9.0463174e-04 3.0112563e-04]]

Symbol.contrib

API Contrib NDArray được định nghĩa trong gói Symbol.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.symbol.contrib API -

Chức năng và các tham 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 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à phần thân 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.
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 tử hóa trong int32 và các ngưỡng tương ứng, thành 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.
index_copy ([old_tensor, index_vector,…]) Hàm này sao chép các phần tử của một new_tensor into the old_tensor by selecting the indices in the order given in index. The output of this operator will be a new tensor that contains the rest elements of old tensor and the copied elements of new tensor.
interleaved_matmul_encdec_qk ([truy vấn,…]) Toán tử này tính toán phép nhân ma trận giữa các phép chiếu của truy vấn và khóa trong việc sử dụng sự chú ý nhiều đầu làm bộ mã hóa-giải mã. Điều kiện là các đầu vào phải là một hàng chục phép chiếu của các truy vấn tuân theo bố cục: (seq_length, batch_size, num_heads *, head_dim).

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
true_cls = mx.sym.Variable('true_cls')
samples, exp_count_true, exp_count_sample = mx.sym.contrib.rand_zipfian(true_cls, 5, 6)
samples.eval(true_cls=mx.nd.array([3]))[0].asnumpy()

Output

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

array([4, 0, 2, 1, 5], dtype=int64)

Example

exp_count_true.eval(true_cls=mx.nd.array([3]))[0].asnumpy()

Output

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

array([0.57336551])

Example

exp_count_sample.eval(true_cls=mx.nd.array([3]))[0].asnumpy()

Output

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

array([1.78103594, 0.46847373, 1.04183923, 0.57336551, 1.04183923])

Trong ví dụ dưới đây, chúng tôi 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_vars = (mx.sym.var('i'), mx.sym.var('s'))
outputs, states = mx.sym.contrib.while_loop(cond, func, loop_vars, max_iterations=10)
print(outputs)

Output

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

[<Symbol _while_loop0>]

Example

Print(States)

Output

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

[<Symbol _while_loop0>, <Symbol _while_loop0>]

Trong ví dụ dưới đây, chúng tôi sẽ sử dụng hàm index_copy sao chép các phần tử của new_tensor vào old_tensor.

import mxnet as mx
a = mx.nd.zeros((6,3))
b = mx.nd.array([[1,2,3],[4,5,6],[7,8,9]])
index = mx.nd.array([0,4,2])
mx.nd.contrib.index_copy(a, index, b)

Output

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

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

biểu tượng.image

API biểu tượng hình ảnh được định nghĩa trong gói biểu tượng.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.symbol.image API -

Chức năng và các tham 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 mà người dùng đưa ra.
chuẩn hóa ([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àm mẫu kết quả nếusrc nhỏ hơn size.
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 khu vực và khẩu phần.
thay đổi kích thước ([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 ([data, out, name]) 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.sym.random.uniform(0, 255, (4, 2, 3)).astype(dtype=np.uint8)

mx.sym.image.to_tensor(img)

Output

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

<Symbol to_tensor4>

Example

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

mx.sym.image.to_tensor(img)

Output

Đầu ra được đề cập dưới đây:

<Symbol to_tensor5>

Trong ví dụ dưới đây, chúng ta sẽ sử dụng hàm normalize () để chuẩn hóa một tensor của 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.sym.random.uniform(0, 1, (3, 4, 2))

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

Output

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

<Symbol normalize0>

Example

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

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

Output

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

<Symbol normalize1>

Symbol.random

API ký hiệu ngẫu nhiên được định nghĩa trong gói Symbol.random. Như tên của nó, nó là API Symbol 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.symbol.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).
poisson ([lam, shape, dtype, ctx, out]) Nó tạo ra các mẫu ngẫu nhiên từ một phân phối Poisson.
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ừ mộ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 đều 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ẽ xáo trộn các phần tử một cách ngẫu nhiên bằng cách sử dụng hàm shuffle (). Nó sẽ xáo trộn mảng dọc theo trục đầu tiên.

data = mx.nd.array([[0, 1, 2], [3, 4, 5], [6, 7, 8],[9,10,11]])
x = mx.sym.Variable('x')
y = mx.sym.random.shuffle(x)
y.eval(x=data)

Output

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

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

Example

y.eval(x=data)

Output

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

[
[[ 6. 7. 8.]
[ 0. 1. 2.]
[ 3. 4. 5.]
[ 9. 10. 11.]]
<NDArray 4x3 @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 sẽ được sử dụng chức nănggeneralized_negative_binomial().

mx.sym.random.generalized_negative_binomial(10, 0.1)

Output

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

<Symbol _random_generalized_negative_binomial0>

Symbol.sparse

API biểu tượng thưa thớt được định nghĩa trong gói mxnet.symbol.sparse. Như tên của nó, nó cung cấp đồ thị mạng nơ-ron thưa thớt và tự động phân biệt trên CPU.

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 (bao gồm quy trình tạo biểu tượng, quy trình thao tác ký hiệu, hàm toán học, hàm lượng giác, hàm Hyberbolic, hàm rút gọn, làm tròn, quyền hạn, mạng nơ ron) và các tham số của chúng được bao hàm bởi mxnet.symbol.sparse API -

Chức năng và các tham số của nó Định nghĩa
ElementWiseSum (* args, ** kwargs) Hàm này sẽ thêm tất cả các phần tử đối số đầu vào một cách khôn ngoan. Ví dụ, _ (1,2,… = 1 + 2 + ⋯ +). Ở đây, chúng ta có thể thấy rằng add_n có khả năng hiệu quả hơn việc gọi add gấp n lần.
Nhúng ([data, weight, input_dim,…]) Nó sẽ ánh xạ các chỉ số nguyên thành các biểu diễn vectơ tức là các phép nhúng. Nó thực sự ánh xạ các từ sang các vectơ có giá trị thực trong không gian chiều cao được gọi là nhúng từ.
LinearRegressionOutput ([dữ liệu, nhãn,…]) Nó tính toán và tối ưu hóa tổn thất bình phương trong quá trình truyền ngược cung cấp dữ liệu đầu ra chỉ trong quá trình truyền ngược.
LogisticRegressionOutput ([dữ liệu, nhãn,…]) Áp dụng một hàm logistic còn được gọi là hàm sigmoid cho đầu vào. Hàm được tính là 1/1 + exp (−x).
MAERegressionOutput ([dữ liệu, nhãn,…]) Toán tử này tính toán sai số tuyệt đối trung bình của đầu vào. MAE thực chất là một thước đo rủi ro tương ứng với giá trị kỳ vọng của sai số tuyệt đối.
abs ([data, name, attr, out]) Như tên của nó, hàm này sẽ trả về giá trị tuyệt đối theo phần tử của đầu vào.
adagrad_update ([trọng lượng, điểm, lịch sử, lr,…]) Nó là một chức năng cập nhật cho AdaGrad optimizer.
adam_update ([weight, grad, mean, var, lr,…]) Nó là một chức năng cập nhật cho Adam optimizer.
add_n (* args, ** kwargs) Như tên của nó, nó sẽ thêm tất cả các đối số đầu vào theo phần tử.
arccos ([data, name, attr, out]) Hàm này sẽ trả về cosin nghịch đảo của phần tử của mảng đầu vào.
dấu chấm ([lhs, rhs, transpose_a, transpose_b,…]) Như tên của nó, nó sẽ cung cấp tích số chấm của hai mảng. Nó sẽ phụ thuộc vào kích thước mảng đầu vào: 1-D: tích bên trong của vectơ 2-D: phép nhân ma trận ND: Tích tổng trên trục cuối cùng của đầu vào đầu tiên và trục đầu tiên của đầu vào thứ hai.
elemwise_add ([lhs, rhs, name, attr, out]) Như tên của nó, nó sẽ add yếu tố lập luận khôn ngoan.
elemwise_div ([lhs, rhs, name, attr, out]) Như tên của nó, nó sẽ divide yếu tố lập luận khôn ngoan.
elemwise_mul ([lhs, rhs, name, attr, out]) Như tên của nó, nó sẽ Multiply yếu tố lập luận khôn ngoan.
elemwise_sub ([lhs, rhs, name, attr, out]) Như tên của nó, nó sẽ khôn ngoan Trừ phần tử đối số.
exp ([data, name, attr, out]) Hàm này sẽ trả về giá trị hàm mũ khôn ngoan của phần tử của đầu vào đã cho.
sgd_update ([trọng lượng, grad, lr, wd,…]) Nó hoạt động như một chức năng cập nhật cho trình tối ưu hóa Stochastic Gradient Descent.
sigmoid ([data, name, attr, out]) Như tên của nó, nó sẽ tính toán sigmoid của x phần tử khôn ngoan.
dấu ([data, name, attr, out]) Nó sẽ trả về dấu hiệu khôn ngoan của phần tử của đầu vào đã cho.
sin ([data, name, attr, out]) Như tên của nó, hàm này sẽ tính toán sin của phần tử của mảng đầu vào đã cho.

Ví dụ triển khai

Trong ví dụ dưới đây, chúng tôi sẽ trộn ngẫu nhiên các phần tử bằng cách sử dụng ElementWiseSum()chức năng. Nó sẽ ánh xạ các chỉ số số nguyên thành các biểu diễn vectơ tức là nhúng từ.

input_dim = 4
output_dim = 5

Example

/* Here every row in weight matrix y represents a word. So, y = (w0,w1,w2,w3)
y = [[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.]]
/* Here input array x represents n-grams(2-gram). So, x = [(w1,w3), (w0,w2)]
x = [[ 1., 3.],
[ 0., 2.]]
/* Now, Mapped input x to its vector representation y.
Embedding(x, y, 4, 5) = [[[ 5., 6., 7., 8., 9.],
[ 15., 16., 17., 18., 19.]],
[[ 0., 1., 2., 3., 4.],
[ 10., 11., 12., 13., 14.]]]