Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte

Aperçu

Reportez-vous au code du chapitre 4 du livre "Deep Learning from Zero: Theory and Implementation of Deep Learning Learned from Python" en tant que fonction de perte: erreur quadratique moyenne et erreur d'entropie croisée. ) Est implémenté en Python et Ruby.

Une bibliothèque externe est utilisée dans le processus de calcul. Utilisez NumPy pour Python et Numo :: NArray pour Ruby.

Si vous avez besoin de créer un environnement, cliquez ici. → Python vs Ruby "Deep Learning from scratch" Chapitre 1 Graphique de la fonction sin et de la fonction cos \ -Qiita

Implémentation de l'erreur quadratique moyenne et de l'erreur d'entropie croisée

Python

import numpy as np

#Erreur de somme des carrés
def mean_squared_error(y, t):
  #Somme du carré de la différence entre la sortie du réseau neuronal et chaque élément des données de l'enseignant.
  return 0.5 * np.sum((y-t)**2)

#Erreur d'entropie croisée
def cross_entropy_error(y, t):
  delta = 1e-7 #Ajoutez une petite valeur pour ne pas générer moins l'infini
  return -np.sum(t * np.log(y + delta))

#tester
t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0] #La bonne réponse est 1,Tout le reste vaut 0
y1 = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0] #Lorsque la probabilité de 2 est la plus élevée(0.6)
y2 = [0.1, 0.05, 0.1, 0.0, 0.05, 0.1, 0.0, 0.6, 0.0, 0.0] #Si la probabilité de 7 est la plus élevée(0.6)
print(mean_squared_error(np.array(y1), np.array(t)))
print(mean_squared_error(np.array(y2), np.array(t)))
print(cross_entropy_error(np.array(y1), np.array(t)))
print(cross_entropy_error(np.array(y2), np.array(t)))

Ruby

require 'numo/narray'

#Erreur de somme des carrés
def mean_squared_error(y, t)
  #Somme du carré de la différence entre la sortie du réseau neuronal et chaque élément des données de l'enseignant.
  return 0.5 * ((y-t)**2).sum
end

#Erreur d'entropie croisée
def cross_entropy_error(y, t)
  delta = 1e-7 #Ajoutez une petite valeur pour ne pas générer moins l'infini
  return -(t * Numo::NMath.log(y + delta)).sum
end

#tester
t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0] #La bonne réponse est 1,Tout le reste vaut 0
y1 = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0] #Lorsque la probabilité de 2 est la plus élevée(0.6)
y2 = [0.1, 0.05, 0.1, 0.0, 0.05, 0.1, 0.0, 0.6, 0.0, 0.0] #Si la probabilité de 7 est la plus élevée(0.6)
puts mean_squared_error(Numo::DFloat.asarray(y1), Numo::DFloat.asarray(t))
puts mean_squared_error(Numo::DFloat.asarray(y2), Numo::DFloat.asarray(t))
puts cross_entropy_error(Numo::DFloat.asarray(y1), Numo::DFloat.asarray(t))
puts cross_entropy_error(Numo::DFloat.asarray(y2), Numo::DFloat.asarray(t))

Résultat d'exécution

Python

0.0975
0.5975
0.510825457099
2.30258409299

Ruby

0.09750000000000003
0.5974999999999999
0.510825457099338
2.302584092994546

Matériel de référence

--Python vs Ruby "Deep Learning from scratch" Résumé --Qiita http://qiita.com/niwasawa/items/b8191f13d6dafbc2fede

Recommended Posts

Python vs Ruby "Deep Learning from scratch" Chapitre 4 Implémentation de la fonction de perte
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Graphique de la fonction step, fonction sigmoid, fonction ReLU
Résumé Python vs Ruby "Deep Learning from scratch"
Python vs Ruby "Deep Learning from scratch" Chapitre 1 Graphique de la fonction sin et de la fonction cos
Python vs Ruby «Deep Learning from scratch» Chapitre 2 Circuit logique par Perceptron
Deep Learning from scratch La théorie et la mise en œuvre de l'apprentissage profond appris avec Python Chapitre 3
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Deep learning / Deep learning made from scratch Chapitre 6 Mémo
[Mémo d'apprentissage] Deep Learning fait de zéro [Chapitre 5]
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 6]
Deep learning / Deep learning made from scratch Chapitre 7 Mémo
Enregistrement d'apprentissage de la lecture "Deep Learning from scratch"
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
Chapitre 2 Implémentation de Perceptron Ne découpez que les bons points de Deeplearning à partir de zéro
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Apprentissage profond à partir de zéro
Chapitre 1 Introduction à Python Découpez uniquement les bons points de Deeplearning à partir de zéro
[Deep Learning from scratch] Implémentation de couche de la fonction softmax à l'erreur d'entropie croisée
[Deep Learning from scratch] Valeur initiale du poids du réseau neuronal utilisant la fonction sigmoïde
Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
Apprentissage profond à partir de zéro 1 à 3 chapitres
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
[Deep Learning from scratch] Poids initial du réseau neuronal lors de l'utilisation de la fonction Relu
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 1
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 5
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 2
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 7
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 5
[Avec une explication simple] Implémentation Scratch d'une machine Boltsman profonde avec Python ②
Un amateur a trébuché dans le Deep Learning ❷ fait à partir de zéro Note: Chapitre 4
[Avec une explication simple] Implémentation Scratch d'une machine Boltzmann profonde avec Python ①
Un amateur a trébuché dans le Deep Learning à partir de zéro.
Deep learning / Deep learning from scratch 2 Chapitre 4 Mémo
Deep learning / Deep learning made from scratch Chapitre 3 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 5 Mémo
Chapitre 3 Réseau de neurones Ne découpez que les bons points de Deeplearning à partir de zéro
Apprentissage profond à partir de zéro (calcul des coûts)
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 7 Mémo
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 8 Mémo
Deep learning / Deep learning made from scratch Chapitre 5 Mémo
Deep learning / Deep learning made from scratch Chapitre 4 Mémo
Deep learning / Deep learning from scratch 2 Chapitre 3 Mémo
Mémo d'apprentissage profond créé à partir de zéro
Deep Learning / Deep Learning à partir de Zero 2 Chapitre 6 Mémo
Écrivez vos impressions sur l'édition du framework Deep Learning 3 créée à partir de zéro
Mémo d'auto-apprentissage «Deep Learning from scratch» (n ° 10-2) Valeur initiale du poids
Note récapitulative sur le Deep Learning -4.2 Fonction de perte-
Apprentissage profond à partir de zéro (propagation vers l'avant)
Othello-De la troisième ligne de "Implementation Deep Learning" (3)
Notes d'apprentissage depuis le début de Python 1
Apprentissage profond / Apprentissage profond à partir de zéro 2-Essayez de déplacer GRU
"Deep Learning from scratch" avec Haskell (inachevé)
[Windows 10] Construction de l'environnement "Deep Learning from scratch"
Notes d'apprentissage depuis le début de Python 2
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Mémo d'auto-apprentissage "Deep Learning from scratch" (partie 12) Deep learning