Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 4 Implementierung der Verlustfunktion

Überblick

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

Implementierung des mittleren quadratischen Fehlers und des Kreuzentropiefehlers

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))

Ausführungsergebnis

Python

0.0975
0.5975
0.510825457099
2.30258409299

Ruby

0.09750000000000003
0.5974999999999999
0.510825457099338
2.302584092994546

Referenzmaterial

--Python vs Ruby "Deep Learning from Grund" Zusammenfassung --Qiita http://qiita.com/niwasawa/items/b8191f13d6dafbc2fede

Recommended Posts

Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 4 Implementierung der Verlustfunktion
Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 3 Implementierung eines dreischichtigen neuronalen Netzwerks
Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 3 Diagramm der Schrittfunktion, Sigmoidfunktion, ReLU-Funktion
Python vs Ruby "Deep Learning von Grund auf neu" Zusammenfassung
Python vs Ruby "Deep Learning from Grund" Kapitel 1 Diagramm der Sin-Funktion und der Cos-Funktion
Python vs Ruby "Deep Learning von Grund auf neu" Kapitel 2 Logikschaltung von Perceptron
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
[Lernnotiz] Deep Learning von Grund auf ~ Implementierung von Dropout ~
[Deep Learning von Grund auf neu] Implementierung der Momentum-Methode und der AdaGrad-Methode
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 7]
Deep Learning / Deep Learning von Grund auf neu Kapitel 6 Memo
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 5]
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 6]
Deep Learning / Deep Learning von Grund auf neu Kapitel 7 Memo
Lernbericht über das Lesen von "Deep Learning von Grund auf neu"
[Lernnotiz] Deep Learning von Grund auf neu gemacht [~ Kapitel 4]
Kapitel 2 Implementierung von Perceptron Schneiden Sie nur die guten Punkte des Deeplearning aus, die von Grund auf neu erstellt wurden
Deep Learning von Grund auf neu ① Kapitel 6 "Lerntechniken"
Deep Learning von Grund auf neu
Kapitel 1 Einführung in Python Schneiden Sie nur die guten Punkte des Deeplearning aus, die von Grund auf neu erstellt wurden
[Deep Learning von Grund auf neu] Layer-Implementierung von der Softmax-Funktion zum Überkreuzen von Entropiefehlern
[Deep Learning von Grund auf neu] Anfangswert des Gewichts des neuronalen Netzwerks unter Verwendung der Sigmoid-Funktion
Othello ~ Aus der dritten Zeile von "Implementation Deep Learning" (4) [Ende]
Deep Learning von Grund auf 1-3 Kapitel
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
[Deep Learning von Grund auf neu] Anfangsgewicht des neuronalen Netzwerks bei Verwendung der Relu-Funktion
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 1
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 5
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 2
Ein Amateur stolperte in Deep Learning von Grund auf neu. Hinweis: Kapitel 7
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 5
[Mit einfacher Erklärung] Scratch-Implementierung einer Deep Boltsman-Maschine mit Python ②
Ein Amateur stolperte über Deep Learning ❷ von Grund auf neu Hinweis: Kapitel 4
[Mit einfacher Erklärung] Scratch-Implementierung einer tiefen Boltzmann-Maschine mit Python ①
Ein Amateur stolperte in Deep Learning von Grund auf neu Hinweis: Kapitel 4
Deep Learning / Deep Learning von Grund auf neu 2 Kapitel 4 Memo
Deep Learning / Deep Learning von Grund auf neu Kapitel 3 Memo
Deep Learning / Deep Learning von Null 2 Kapitel 5 Memo
Kapitel 3 Neuronales Netz Schneiden Sie nur die guten Punkte des Deeplearning aus, die von Grund auf neu erstellt wurden
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Deep Learning / Deep Learning von Null 2 Kapitel 7 Memo
Deep Learning / Deep Learning von Null 2 Kapitel 8 Memo
Deep Learning / Deep Learning von Grund auf neu Kapitel 5 Memo
Deep Learning / Deep Learning von Grund auf neu Kapitel 4 Memo
Deep Learning / Deep Learning von Grund auf neu 2 Kapitel 3 Memo
Deep Learning Memo von Grund auf neu gemacht
Deep Learning / Deep Learning von Null 2 Kapitel 6 Memo
Schreiben Sie Ihre Eindrücke von der Deep Learning 3 Framework Edition, die von Grund auf neu erstellt wurde
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 10-2) Anfangswert des Gewichts
Zusammenfassender Hinweis zu Deep Learning -4.2 Verlustfunktion-
Tiefes Lernen von Grund auf neu (Vorwärtsausbreitung)
Othello-Aus der dritten Zeile von "Implementation Deep Learning" (3)
Notizen vom Anfang von Python 1 lernen
Tiefes Lernen / Tiefes Lernen von Grund auf 2-Versuchen Sie, GRU zu bewegen
"Deep Learning von Grund auf neu" mit Haskell (unvollendet)
[Windows 10] Aufbau einer "Deep Learning from Scratch" -Umgebung
Notizen vom Anfang von Python 2 lernen
[Deep Learning von Grund auf neu] Über die Optimierung von Hyperparametern
"Deep Learning from Grund" Memo zum Selbststudium (Teil 12) Deep Learning