Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches

Aperçu

Implémentez un réseau de neurones à trois couches en Python et Ruby en vous référant au code du chapitre 3 du livre "Deep Learning from scratch - La théorie et l'implémentation du deep learning appris avec Python".

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 http://qiita.com/niwasawa/items/6d9aba43f3cdba5ca725

Implémentation d'un réseau neuronal à 3 couches (code source)

Python

import numpy as np

#Initialisation du poids et du biais
def init_network():
  network = {}
  network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]])
  network['b1'] = np.array([0.1, 0.2, 0.3])
  network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]])
  network['b2'] = np.array([0.1, 0.2])
  network['W3'] = np.array([[0.1, 0.3], [0.2, 0.4]])
  network['b3'] = np.array([0.1, 0.2])
  return network

#Convertir le signal d'entrée en sortie
def forword(network, x):
  W1, W2, W3 = network['W1'], network['W2'], network['W3']
  b1, b2, b3 = network['b1'], network['b2'], network['b3']
  a1 = np.dot(x, W1) + b1
  z1 = sigmoid(a1)
  a2 = np.dot(z1, W2) + b2
  z2 = sigmoid(a2)
  a3 = np.dot(z2, W3) + b3
  y = identity_function(a3)
  return y

#Fonction égale
def identity_function(x):
  return x

#Fonction Sigmaid
def sigmoid(x):
  return 1 / (1 + np.exp(-x))

#Courir
network = init_network()
x = np.array([1.0, 0.5]) #Couche d'entrée
y = forword(network, x)
print(y)

Ruby

require 'numo/narray'

#Initialisation du poids et du biais
def init_network()
  network = {}
  network['W1'] = Numo::DFloat[[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]
  network['b1'] = Numo::DFloat[0.1, 0.2, 0.3]
  network['W2'] = Numo::DFloat[[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]]
  network['b2'] = Numo::DFloat[0.1, 0.2]
  network['W3'] = Numo::DFloat[[0.1, 0.3], [0.2, 0.4]]
  network['b3'] = Numo::DFloat[0.1, 0.2]
  network
end

#Convertir le signal d'entrée en sortie
def forword(network, x)
  w1 = network['W1']; w2 = network['W2']; w3 = network['W3']
  b1 = network['b1']; b2 = network['b2']; b3 = network['b3']
  a1 = x.dot(w1) + b1
  z1 = sigmoid(a1)
  a2 = z1.dot(w2) + b2
  z2 = sigmoid(a2)
  a3 = z2.dot(w3) + b3
  identity_function(a3)
end

#Fonction égale
def identity_function(x)
  x
end

#Fonction Sigmaid
def sigmoid(x)
  1 / (1 + Numo::NMath.exp(-x)) # Numo::Renvoie DFloat
end

#Courir
network = init_network()
x = Numo::DFloat[1.0, 0.5] #Couche d'entrée
y = forword(network, x)
puts y.to_a.join(' ')

Résultat d'exécution

Python

[ 0.31682708  0.69627909]

Ruby

0.3168270764110298 0.6962790898619668

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 3 Implémentation d'un réseau neuronal à 3 couches
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 Graphique de la fonction step, fonction sigmoid, fonction ReLU
Python vs Ruby "Deep Learning from scratch" Chapitre 1 Graphique de la fonction sin et de la fonction cos
Résumé Python vs Ruby "Deep Learning from scratch"
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
Implémentation d'un réseau neuronal à 3 couches (pas d'apprentissage)
Chapitre 3 Réseau de neurones Ne découpez que les bons points de Deeplearning à partir de zéro
[Mémo d'apprentissage] Apprentissage profond à partir de zéro ~ Mise en œuvre de l'abandon ~
[Deep Learning from scratch] Valeur initiale du poids du réseau neuronal utilisant la fonction sigmoïde
PRML Chapitre 5 Implémentation Python du réseau neuronal
[Deep Learning from scratch] Implémentation de la méthode Momentum et de la méthode AdaGrad
[Deep Learning from scratch] Poids initial du réseau neuronal lors de l'utilisation de la fonction Relu
[Mémo d'apprentissage] Le Deep Learning fait de zéro [Chapitre 7]
Version Lua Apprentissage profond à partir de zéro Partie 6 [Traitement d'inférence de réseau neuronal]
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"
Chapitre 2 Implémentation de Perceptron Ne découpez que les bons points de Deeplearning à partir de zéro
[Mémo d'apprentissage] Deep Learning fait de zéro [~ Chapitre 4]
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
[Python / Machine Learning] Pourquoi le Deep Learning # 1 Perceptron Neural Network
Deep Learning from scratch ① Chapitre 6 "Techniques liées à l'apprentissage"
Deep Learning from scratch Chapter 2 Perceptron (lecture du mémo)
Apprentissage profond à partir de zéro
[Deep Learning from scratch] J'ai implémenté la couche Affine
Application de Deep Learning 2 à partir de zéro Filtre anti-spam
Othello ~ De la troisième ligne de "Implementation Deep Learning" (4) [Fin]
[Deep Learning] Exécuter la console de réseau neuronal SONY à partir de CUI
Apprentissage profond à partir de zéro 1 à 3 chapitres
Implémentation de réseau neuronal en python
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Apprentissage des classements à l'aide d'un réseau neuronal (implémentation RankNet par Chainer)
Essayez de créer un réseau de neurones / d'apprentissage en profondeur avec scratch
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 3
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
Un amateur a trébuché dans le Deep Learning ❷ fait de zéro Note: Chapitre 1
[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.
Un amateur a trébuché dans le Deep Learning à partir de zéro Note: Chapitre 2
[Deep Learning from scratch] Implémentez le traitement de rétropropagation dans le réseau neuronal par la méthode de propagation de retour d'erreur
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
Implémentation d'un réseau de neurones à deux couches 2
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