Lesen Sie den Code in Kapitel 4 des Buches "Deep Learning from Zero: Theorie und Implementierung von Deep Learning Learned from Python" als Verlustfunktion: mittlerer quadratischer Fehler und Kreuzentropiefehler. ) Ist in Python und Ruby implementiert.
Bei der Berechnung wird eine externe Bibliothek verwendet. Verwenden Sie NumPy für Python und Numo :: NArray für Ruby.
Wenn Sie eine Umgebung erstellen müssen, lesen Sie hier. → Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 1 Diagramm der Sin-Funktion und der Cos-Funktion \ -Qiita
Python
import numpy as np
#Summe der Fehlerquadrate
def mean_squared_error(y, t):
#Summe des Quadrats der Differenz zwischen der Ausgabe des neuronalen Netzwerks und jedem Element der Lehrerdaten
return 0.5 * np.sum((y-t)**2)
#Kreuzentropiefehler
def cross_entropy_error(y, t):
delta = 1e-7 #Fügen Sie einen kleinen Wert hinzu, um keine Minus-Unendlichkeit zu erzeugen
return -np.sum(t * np.log(y + delta))
#Prüfung
t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0] #Die richtige Antwort ist 1,Alles andere ist 0
y1 = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0] #Wenn die Wahrscheinlichkeit von 2 am höchsten ist(0.6)
y2 = [0.1, 0.05, 0.1, 0.0, 0.05, 0.1, 0.0, 0.6, 0.0, 0.0] #Wenn die Wahrscheinlichkeit von 7 am höchsten ist(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'
#Summe der Fehlerquadrate
def mean_squared_error(y, t)
#Summe des Quadrats der Differenz zwischen der Ausgabe des neuronalen Netzwerks und jedem Element der Lehrerdaten
return 0.5 * ((y-t)**2).sum
end
#Kreuzentropiefehler
def cross_entropy_error(y, t)
delta = 1e-7 #Fügen Sie einen kleinen Wert hinzu, um keine Minus-Unendlichkeit zu erzeugen
return -(t * Numo::NMath.log(y + delta)).sum
end
#Prüfung
t = [0, 0, 1, 0, 0, 0, 0, 0, 0, 0] #Die richtige Antwort ist 1,Alles andere ist 0
y1 = [0.1, 0.05, 0.6, 0.0, 0.05, 0.1, 0.0, 0.1, 0.0, 0.0] #Wenn die Wahrscheinlichkeit von 2 am höchsten ist(0.6)
y2 = [0.1, 0.05, 0.1, 0.0, 0.05, 0.1, 0.0, 0.6, 0.0, 0.0] #Wenn die Wahrscheinlichkeit von 7 am höchsten ist(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))
Python
0.0975
0.5975
0.510825457099
2.30258409299
Ruby
0.09750000000000003
0.5974999999999999
0.510825457099338
2.302584092994546
--Python vs Ruby "Deep Learning from Grund" Zusammenfassung --Qiita http://qiita.com/niwasawa/items/b8191f13d6dafbc2fede
Recommended Posts