Ecrivez un programme pour dessiner des graphiques de fonctions pas à pas, de fonctions sigmoïdes et de fonctions ReLU en Python et Ruby, en vous référant au code du chapitre 3 du livre "Deep Learning from scratch-The théorie et implémentation de l'apprentissage profond appris avec Python".
Une bibliothèque externe est utilisée pour le traitement des calculs et le traitement des dessins. Utilisez NumPy et Matplotlib pour Python et Numo :: NArray et Numo :: Gnuplot 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 http://qiita.com/niwasawa/items/6d9aba43f3cdba5ca725
Python
import numpy as np
import matplotlib
matplotlib.use("AGG") #AGG dans la bibliothèque de dessins(Anti-Grain Geometry)utilisation
import matplotlib.pyplot as plt
#Fonction Step
def step(x):
return np.array(x > 0, dtype=np.int)
#Fonction Sigmaid
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# ReLU (Rectified Linear Unit)une fonction
def relu(x):
return np.maximum(0, x)
#Créer des données
x = np.arange(-5.0, 5.0, 0.1)
y1 = step(x)
y2 = sigmoid(x)
y3 = relu(x)
#Dessiner un graphique
plt.figure(figsize=(3, 4), dpi=160) #Taille de l'image
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) #plage de l'axe des x
plt.ylim(-0.2, 5.2) #plage de l'axe y
plt.legend()
plt.savefig("python_graph.png ")
Ruby
require 'numo/narray'
require 'numo/gnuplot'
#Fonction Step
def step(x)
x > 0 # Numo::Bit de retour
end
#Fonction Sigmaid
def sigmoid(x)
1 / (1 + Numo::NMath.exp(-x)) # Numo::Renvoie DFloat
end
# ReLU (Rectified Linear Unit)une fonction
def relu(x)
y = Numo::DFloat[x] #copie
y[y < 0] = 0 #Remplacez 0 si la valeur est inférieure à 0
y
end
#Créer des données
x = Numo::DFloat.new(100).seq(-5.0, 0.1)
y1 = step(x)
y2 = sigmoid(x)
y3 = relu(x)
#Dessiner un graphique
g = Numo::gnuplot do
set term: {png: {size: [480, 640]}} #Taille de l'image
set output: 'ruby_graph.png'
set title: 'Step, Sigmoid, ReLU' #Titre
set key: 'box left top'
set xrange: -5.5...5.5 #plage de l'axe des x
set yrange: -0.2...5.2 #plage de l'axe y
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 scratch" Résumé --Qiita http://qiita.com/niwasawa/items/b8191f13d6dafbc2fede
Recommended Posts