Dễ 0 đã giải Tỷ lệ chấp nhận 0%

Các hàm kích hoạt

Áp dụng sigmoid, ReLU, Leaky ReLU hoặc tanh cho từng giá trị trong danh sách.

Bạn sẽ học được gì

  • Cài đặt các hàm kích hoạt phổ biến
  • Hiểu vì sao mạng cần tính phi tuyến
  • Tránh tràn số trong hàm sigmoid

Đề bài

Xem bản gốc (English)

Sau khi nơ-ron cộng các đầu vào đã nhân trọng số, hàm kích hoạt quyết định đầu ra của nó. Nếu không có hàm kích hoạt, mạng nơ-ron chỉ học được các đường thẳng.

Hãy cài đặt activate(name, values) và áp dụng hàm có tên tương ứng cho từng giá trị:

namecông thức
"sigmoid"1 / (1 + e^(-x))
"relu"max(0, x)
"leaky_relu"x nếu x > 0, ngược lại 0.01 × x
"tanh"(e^x - e^(-x)) / (e^x + e^(-x))

Đầu vào

name: Một trong "sigmoid", "relu", "leaky_relu" hoặc "tanh".

values: Một danh sách số.

Đầu ra

Trả về danh sách đã áp dụng hàm kích hoạt cho từng giá trị, giữ nguyên thứ tự.

Ràng buộc

1 ≤ độ dài của values ≤ 1.000

-50 ≤ mỗi giá trị ≤ 50

Ví dụ

Ví dụ 1
Đầu vào:
name = "sigmoid"
values = [0.0, 2.0, -2.0]

Kết quả mong đợi:
expected = [0.5, 0.880797, 0.119203]
Đầu vào:
std::string name = "sigmoid";
std::vector<double> values = {0.0, 2.0, -2.0};

Kết quả mong đợi:
std::vector<double> expected = {0.5, 0.880797, 0.119203};
Đầu vào:
string name = "sigmoid";
double[] values = new double[] {0.0, 2.0, -2.0};

Kết quả mong đợi:
double[] expected = new double[] {0.5, 0.880797, 0.119203};

Giải thích

sigmoid(0) = 1 / (1 + 1) = 0.5, sigmoid(2) ≈ 0.880797 và sigmoid(-2) ≈ 0.119203. Sigmoid ép mọi số vào khoảng từ 0 đến 1.

Ví dụ 2
Đầu vào:
name = "relu"
values = [-1.5, 0.0, 3.0]

Kết quả mong đợi:
expected = [0.0, 0.0, 3.0]
Đầu vào:
std::string name = "relu";
std::vector<double> values = {-1.5, 0.0, 3.0};

Kết quả mong đợi:
std::vector<double> expected = {0.0, 0.0, 3.0};
Đầu vào:
string name = "relu";
double[] values = new double[] {-1.5, 0.0, 3.0};

Kết quả mong đợi:
double[] expected = new double[] {0.0, 0.0, 3.0};

Giải thích

ReLU giữ nguyên giá trị dương và biến giá trị âm thành 0: [0, 0, 3].

Tham khảo

Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.

Học hỏi từ người khác

Giải pháp cộng đồng

Chưa có giải pháp nào được chia sẻ. Hãy giải thử thách này để đăng giải pháp đầu tiên.