Alle Herausforderungen
Einfach 0 gelöst 0% Erfolgsquote

Aktivierungsfunktionen

Wende Sigmoid, ReLU, Leaky ReLU oder tanh auf jeden Wert einer Liste an.

Das lernst du

  • Gängige Aktivierungsfunktionen implementieren
  • Verstehen, warum Netze Nichtlinearität brauchen
  • Überlauf in der Sigmoidfunktion vermeiden

Problem

Nachdem ein Neuron seine gewichteten Eingaben addiert hat, entscheidet eine Aktivierungsfunktion über seine Ausgabe. Ohne sie könnte ein neuronales Netz nur Geraden lernen.

Implementiere activate(name, values) und wende die genannte Funktion auf jeden Wert an:

nameFormel
"sigmoid"1 / (1 + e^(-x))
"relu"max(0, x)
"leaky_relu"x, wenn x > 0, sonst 0.01 × x
"tanh"(e^x - e^(-x)) / (e^x + e^(-x))

Eingabe

name: Einer der Werte "sigmoid", "relu", "leaky_relu" oder "tanh".

values: Eine Liste von Zahlen.

Ausgabe

Gib eine Liste zurück, in der die Aktivierung auf jeden Wert angewendet wurde, in derselben Reihenfolge.

Einschränkungen

1 ≤ Länge von values ≤ 1.000

-50 ≤ jeder Wert ≤ 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 und sigmoid(-2) ≈ 0.119203. Sigmoid drückt jede Zahl in den Bereich von 0 bis 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 behält positive Werte und macht negative Werte zu 0: [0, 0, 3].

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.