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

Activation Functions

Apply sigmoid, ReLU, Leaky ReLU or tanh to every value in a list.

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

  • Implement common activation functions
  • Understand why networks need non-linearity
  • Avoid overflow in the sigmoid

Đề bài

Xem bản dịch

After a neuron adds up its weighted inputs, an activation function decides its output. Without one, a neural network could only learn straight lines.

Implement activate(name, values) and apply the named function to every value:

nameformula
"sigmoid"1 / (1 + e^(-x))
"relu"max(0, x)
"leaky_relu"x if x > 0, otherwise 0.01 × x
"tanh"(e^x - e^(-x)) / (e^x + e^(-x))

Input

name: One of "sigmoid", "relu", "leaky_relu" or "tanh".

values: A list of numbers.

Output

Return a list with the activation applied to each value, in the same order.

Ràng buộc

1 ≤ length of values ≤ 1,000

-50 ≤ each value ≤ 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 and sigmoid(-2) ≈ 0.119203. Sigmoid squeezes any number into the range 0 to 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 keeps positive values and turns negative values into 0: [0, 0, 3].

Hướng tiếp cận

Hãy tự thử trước, sau đó mở từng gợi ý một.

Gợi ý 1

Each activation is applied independently to every number, so focus on one value at a time.

Gợi ý 2

Use the formula matching the given name and build a new list from the results.

Gợi ý 3

Be careful with negative inputs, especially for ReLU and the leaky slope on the nonpositive side.

Độ phức tạp mong đợi

O(n) time, O(n) extra space

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.