Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Activation Functions

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

Das lernst du

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

Problem

Übersetzung anzeigen

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.

Einschränkungen

1 ≤ length of values ≤ 1,000

-50 ≤ each value ≤ 50

Beispiele

Beispiel 1
Eingabe:
name = "sigmoid"
values = [0.0, 2.0, -2.0]

Erwartete Ausgabe:
expected = [0.5, 0.880797, 0.119203]
Eingabe:
std::string name = "sigmoid";
std::vector<double> values = {0.0, 2.0, -2.0};

Erwartete Ausgabe:
std::vector<double> expected = {0.5, 0.880797, 0.119203};
Eingabe:
string name = "sigmoid";
double[] values = new double[] {0.0, 2.0, -2.0};

Erwartete Ausgabe:
double[] expected = new double[] {0.5, 0.880797, 0.119203};

Erläuterung

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.

Beispiel 2
Eingabe:
name = "relu"
values = [-1.5, 0.0, 3.0]

Erwartete Ausgabe:
expected = [0.0, 0.0, 3.0]
Eingabe:
std::string name = "relu";
std::vector<double> values = {-1.5, 0.0, 3.0};

Erwartete Ausgabe:
std::vector<double> expected = {0.0, 0.0, 3.0};
Eingabe:
string name = "relu";
double[] values = new double[] {-1.5, 0.0, 3.0};

Erwartete Ausgabe:
double[] expected = new double[] {0.0, 0.0, 3.0};

Erläuterung

ReLU keeps positive values and turns negative values into 0: [0, 0, 3].

So gehst du vor

Versuch es zuerst allein und öffne dann einen Hinweis nach dem anderen.

Hinweis 1

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

Hinweis 2

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

Hinweis 3

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

Erwartete Komplexität

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

Referenzen

Diese Aufgabe wurde für CodeUtility angepasst. Beachte die oben genannten Vorgaben und Einschränkungen.

Von anderen lernen

Community-Lösungen

Noch keine veröffentlichten Lösungen. Löse die Aufgabe und teile als Erster eine Lösung.