Activation
Tính giá trị hàm kích hoạt và ghi chúng vào vector/ma trận được truyền vào.
bool vector::Activation(
vector& vect_out, // vector để nhận giá trị
ENUM_ACTIVATION_FUNCTION activation, // hàm kích hoạt
... // tham số bổ sung
);
bool matrix::Activation(
matrix& matrix_out, // ma trận để nhận giá trị
ENUM_ACTIVATION_FUNCTION activation // hàm kích hoạt
);
bool matrix::Activation(
matrix& matrix_out, // ma trận để nhận giá trị
ENUM_ACTIVATION_FUNCTION activation, // hàm kích hoạt
ENUM_MATRIX_AXIS axis, // trục
... // tham số bổ sung
);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Tham số
vect_out/matrix_out
[out] Vector hoặc ma trận để nhận các giá trị đã tính của hàm kích hoạt.
activation
[in] Hàm kích hoạt từ liệt kê ENUM_ACTIVATION_FUNCTION.
axis
[in] Giá trị liệt kê ENUM_MATRIX_AXIS (AXIS_HORZ — trục ngang, AXIS_VERT — trục dọc).
...
[in] Các tham số bổ sung cần thiết cho một số hàm kích hoạt. Nếu không có tham số nào được chỉ định, giá trị mặc định sẽ được sử dụng.
Giá trị trả về
Trả về true nếu thành công, ngược lại - false.
Tham số bổ sung
Một số hàm kích hoạt chấp nhận các tham số bổ sung. Nếu không có tham số nào được chỉ định, giá trị mặc định sẽ được sử dụng.
AF_ELU (Exponential Linear Unit)
double alpha=1.0
Activation function: if(x>=0) f(x) = x
else f(x) = alpha * (exp(x)-1)
AF_LINEAR
double alpha=1.0
double beta=0.0
Activation function: f(x) = alpha*x + beta
AF_LRELU (Leaky REctified Linear Unit)
double alpha=0.3
Activation function: if(x>=0) f(x)=x
else f(x) = alpha*x
AF_RELU (REctified Linear Unit)
double alpha=0.0
double max_value=0.0
double treshold=0.0
Activation function: if(alpha==0) f(x) = max(x,0)
else if(x>max_value) f(x) = x
else f(x) = alpha*(x - treshold)
AF_SWISH
double beta=1.0
Activation function: f(x) = x / (1+exp(-x*beta))
AF_TRELU (Thresholded REctified Linear Unit)
double theta=1.0
Activation function: if(x>theta) f(x) = x
else f(x) = 0
AF_PRELU (Parametric REctified Linear Unit)
double alpha[] - learned array of coeefficients
Activation function: if(x[i]>=0) f(x)[i] = x[i]
else f(x)[i] = alpha[i] * x[i]
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Ghi chú
Trong mạng nơ-ron nhân tạo, hàm kích hoạt của một nơ-ron xác định tín hiệu đầu ra, được định nghĩa bởi tín hiệu đầu vào hoặc một tập hợp tín hiệu đầu vào. Việc lựa chọn hàm kích hoạt có ảnh hưởng lớn đến hiệu suất của mạng nơ-ron. Các phần khác nhau của mô hình (các lớp) có thể sử dụng các hàm kích hoạt khác nhau.
Ví dụ về việc sử dụng tham số bổ sung:
vector x={0.1, 0.4, 0.9, 2.0, -5.0, 0.0, -0.1};
vector y;
x.Activation(y,AF_ELU);
Print(y);
x.Activation(y,AF_ELU,2.0);
Print(y);
Print("");
x.Activation(y,AF_LINEAR);
Print(y);
x.Activation(y,AF_LINEAR,2.0);
Print(y);
x.Activation(y,AF_LINEAR,2.0,5.0);
Print(y);
Print("");
x.Activation(y,AF_LRELU);
Print(y);
x.Activation(y,AF_LRELU,1.0);
Print(y);
x.Activation(y,AF_LRELU,0.1);
Print(y);
Print("");
x.Activation(y,AF_RELU);
Print(y);
x.Activation(y,AF_RELU,2.0,0.5);
Print(y);
x.Activation(y,AF_RELU,2.0,0.5,1.0);
Print(y);
Print("");
x.Activation(y,AF_SWISH);
Print(y);
x.Activation(y,AF_SWISH,2.0);
Print(y);
Print("");
x.Activation(y,AF_TRELU);
Print(y);
x.Activation(y,AF_TRELU,0.3);
Print(y);
Print("");
vector a=vector::Full(x.Size(),2.0);
x.Activation(y,AF_PRELU,a);
Print(y);
/* Kết quả
[0.1,0.4,0.9,2,-0.993262053000915,0,-0.095162581964040]
[0.1,0.4,0.9,2,-1.986524106001829,0,-0.190325163928081]
[0.1,0.4,0.9,2,-5,0,-0.1]
[0.2,0.8,1.8,4,-10,0,-0.2]
[5.2,5.8,6.8,9,-5,5,4.8]
[0.1,0.4,0.9,2,-1.5,0,-0.03]
[0.1,0.4,0.9,2,-5,0,-0.1]
[0.1,0.4,0.9,2,-0.5,0,-0.01]
[0.1,0.4,0.9,2,0,0,0]
[0.2,0.8,0.9,2,-10,0,-0.2]
[-1.8,-1.2,0.9,2,-12,-2,-2.2]
[0.052497918747894,0.239475064044981,0.6398545523625035,1.761594155955765,-0.03346425462142428,0,-0.047502081252106]
[0.054983399731247,0.275989792451045,0.7723340415895611,1.964027580075817,-0.00022698934351217,0,-0.045016600268752]
[0,0,0,2,0,0,0]
[0,0.4,0.9,2,0,0,0]
[0.1,0.4,0.9,2,-10,0,-0.2]
*/
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73