Schreiben Sie ein Programm zum Zeichnen von Diagrammen von Schrittfunktionen, Sigmoidfunktionen und ReLU-Funktionen in Python und Ruby. Beziehen Sie sich dabei auf den Code in Kapitel 3 des Buches "Deep Learning von Grund auf neu - Theorie und Implementierung von Deep Learning aus Python".
Eine externe Bibliothek wird für die Berechnungs- und Zeichnungsverarbeitung verwendet. Verwenden Sie NumPy und Matplotlib für Python und Numo :: NArray und Numo :: Gnuplot 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- und Cos-Funktion http://qiita.com/niwasawa/items/6d9aba43f3cdba5ca725
Python
import numpy as np
import matplotlib
matplotlib.use("AGG") #AGG in Zeichnungsbibliothek(Anti-Grain Geometry)verwenden
import matplotlib.pyplot as plt
#Stufenfunktion
def step(x):
return np.array(x > 0, dtype=np.int)
#Sigmaid-Funktion
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# ReLU (Rectified Linear Unit)Funktion
def relu(x):
return np.maximum(0, x)
#Daten erstellen
x = np.arange(-5.0, 5.0, 0.1)
y1 = step(x)
y2 = sigmoid(x)
y3 = relu(x)
#Zeichnen eines Diagramms
plt.figure(figsize=(3, 4), dpi=160) #Bildgröße
plt.plot(x, y1, label="Step")
plt.plot(x, y2, label="Sigmoid")
plt.plot(x, y3, label="ReLU")
plt.title("Step, Sigmoid, ReLU")
plt.xlim(-5.5, 5.5) #x-Achsenbereich
plt.ylim(-0.2, 5.2) #Bereich der y-Achse
plt.legend()
plt.savefig("python_graph.png ")
Ruby
require 'numo/narray'
require 'numo/gnuplot'
#Stufenfunktion
def step(x)
x > 0 # Numo::Gibt Bit zurück
end
#Sigmaid-Funktion
def sigmoid(x)
1 / (1 + Numo::NMath.exp(-x)) # Numo::Gibt DFloat zurück
end
# ReLU (Rectified Linear Unit)Funktion
def relu(x)
y = Numo::DFloat[x] #Kopieren
y[y < 0] = 0 #Ersetzen Sie 0, wenn der Wert kleiner als 0 ist
y
end
#Daten erstellen
x = Numo::DFloat.new(100).seq(-5.0, 0.1)
y1 = step(x)
y2 = sigmoid(x)
y3 = relu(x)
#Zeichnen eines Diagramms
g = Numo::gnuplot do
set term: {png: {size: [480, 640]}} #Bildgröße
set output: 'ruby_graph.png'
set title: 'Step, Sigmoid, ReLU' #Titel
set key: 'box left top'
set xrange: -5.5...5.5 #x-Achsenbereich
set yrange: -0.2...5.2 #Bereich der y-Achse
set offset: [0, 0, 0, 0]
plot x, y1, {w: 'lines', lw: 3, title: 'Step'},
x, y2, {w: 'lines', lw: 3, title: 'Sigmoid'},
x, y3, {w: 'lines', lw: 3, title: 'ReLU'}
end
Python
Ruby
--Python vs Ruby "Deep Learning from Grund" Zusammenfassung --Qiita http://qiita.com/niwasawa/items/b8191f13d6dafbc2fede
Recommended Posts