Tous les défis
Facile 0 résolus 0 % de réussite

Fonctions d'activation

Appliquez sigmoïde, ReLU, Leaky ReLU ou tanh à chaque valeur d'une liste.

Ce que vous allez apprendre

  • Implémenter les fonctions d'activation courantes
  • Comprendre pourquoi les réseaux ont besoin de non-linéarité
  • Éviter le dépassement dans la sigmoïde

Problème

Une fois qu'un neurone a additionné ses entrées pondérées, une fonction d'activation décide de sa sortie. Sans elle, un réseau de neurones ne pourrait apprendre que des droites.

Implémentez activate(name, values) et appliquez la fonction indiquée à chaque valeur :

nameformule
"sigmoid"1 / (1 + e^(-x))
"relu"max(0, x)
"leaky_relu"x si x > 0, sinon 0.01 × x
"tanh"(e^x - e^(-x)) / (e^x + e^(-x))

Entrée

name : l'une des valeurs "sigmoid", "relu", "leaky_relu" ou "tanh".

values : une liste de nombres.

Sortie

Renvoyez une liste où l'activation est appliquée à chaque valeur, dans le même ordre.

Contraintes

1 ≤ longueur de values ≤ 1 000

-50 ≤ chaque valeur ≤ 50

Exemples

Exemple 1
Entrée :
name = "sigmoid"
values = [0.0, 2.0, -2.0]

Sortie attendue :
expected = [0.5, 0.880797, 0.119203]
Entrée :
std::string name = "sigmoid";
std::vector<double> values = {0.0, 2.0, -2.0};

Sortie attendue :
std::vector<double> expected = {0.5, 0.880797, 0.119203};
Entrée :
string name = "sigmoid";
double[] values = new double[] {0.0, 2.0, -2.0};

Sortie attendue :
double[] expected = new double[] {0.5, 0.880797, 0.119203};

Explication

sigmoid(0) = 1 / (1 + 1) = 0.5, sigmoid(2) ≈ 0.880797 et sigmoid(-2) ≈ 0.119203. La sigmoïde ramène n'importe quel nombre entre 0 et 1.

Exemple 2
Entrée :
name = "relu"
values = [-1.5, 0.0, 3.0]

Sortie attendue :
expected = [0.0, 0.0, 3.0]
Entrée :
std::string name = "relu";
std::vector<double> values = {-1.5, 0.0, 3.0};

Sortie attendue :
std::vector<double> expected = {0.0, 0.0, 3.0};
Entrée :
string name = "relu";
double[] values = new double[] {-1.5, 0.0, 3.0};

Sortie attendue :
double[] expected = new double[] {0.0, 0.0, 3.0};

Explication

ReLU garde les valeurs positives et remplace les valeurs négatives par 0 : [0, 0, 3].

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.