Implémentation d'un réseau de neurones convolutifs utilisant uniquement Numpy

introduction

Pour comprendre le réseau de neurones convolutifs, j'ai implémenté l'algorithme en Python en utilisant uniquement Numpy, sans compter sur la bibliothèque pour l'apprentissage en profondeur. À l'avenir, je voudrais l'améliorer pour qu'il soit compatible avec le GPU. De plus, comme il n'a pas été vérifié si l'erreur inverse est correctement propagée, celles encore en développement sont affichées.

GitHub https://github.com/NaotoMasuzawa/Deep_Learning/tree/master/Python_CNN

Code référencé et livre technique

En implémentant le code, j'ai fait référence au GitHub et aux livres techniques de Yusuke Sugomori. Je suis très reconnaissant.

GitHub https://github.com/yusugomori Livre technique https://www.amazon.co.jp/Java-Learning-Essentials-Yusuke-Sugomori-ebook/dp/B01956B5RQ

Contour

En plus du réseau neuronal convolutif normal, un abandon est implémenté dans la couche cachée qui réduit probabilistiquement certains des neurones à zéro. De plus, ReLU est utilisé comme fonction d'activation.

Structure du code et annotation

Build.py Définissez ici la configuration et les paramètres de la couche. Aussi, lors de l'exécution de code Vous devriez pouvoir définir les paramètres ici et l'exécuter avec python Build.py.

Convolutional_Neural_Network.py Chaque classe monte ici en fonction de la structure de la couche.

Conv_Pool_Layer.py Une couche de pliage et une couche de regroupement sont mises en œuvre. Car la phrase est souvent utilisée pour le calque de pliage, Puisque la relation entre les index se complique, j'ai donné à chacun un sens. Par conséquent, la largeur d'une partie du code est plus longue.

Hidden_Layer.py Abandons sur le perceptron multicouche régulier utilisé dans les couches entièrement connectées Il est mis en œuvre.

Logistic_Regression.py La régression logistique est mise en œuvre.

utils.py La fonction d'activation (ReLU) est implémentée. Si vous souhaitez le comparer avec d'autres fonctions d'activation (comme la fonction sigmoïde), écrivez-le ici.

finalement

Puisque ce code n'est utilisé pour aucun traitement lourd, il peut contenir des bogues. Dans ce cas, je vous serais reconnaissant si vous pouviez le signaler.

Recommended Posts

Implémentation d'un réseau de neurones convolutifs utilisant uniquement Numpy
Implémentation de réseau neuronal (NumPy uniquement)
Implémentation de réseaux neuronaux "flous" avec Chainer
Implémentation simple d'un réseau neuronal à l'aide de Chainer
Qu'est-ce que le réseau neuronal convolutif?
Apprentissage des classements à l'aide d'un réseau neuronal (implémentation RankNet par Chainer)
Implémentation d'un réseau neuronal à 3 couches (pas d'apprentissage)
Implémentation de réseau neuronal simple à l'aide de la préparation Chainer-Data-
Implémentation de réseau neuronal simple à l'aide de la description du modèle Chainer-
Comprendre le nombre de paramètres d'entrée / sortie du réseau neuronal convolutif
Créez un classificateur avec un taux de reconnaissance de l'écriture manuscrite de 99,2% à l'aide du réseau neuronal convolutif TensorFlow
Création d'un modèle de discrimination d'image (cifar10) à l'aide d'un réseau neuronal convolutif
Implémentation simple d'un réseau de neurones à l'aide de Chainer ~ Définition d'un algorithme d'optimisation ~
Apprentissage par renforcement 10 Essayez d'utiliser un réseau neuronal formé.
Une autre méthode de conversion de style utilisant le réseau neuronal convolutif
Visualisez la couche interne du réseau neuronal
Implémenter un réseau neuronal convolutif
Expérience de réseau de neurones pliable
[Python] Implémentation du clustering à l'aide d'un modèle gaussien mixte
Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel
L'histoire de la création d'un réseau neuronal de génération musicale
Mise en œuvre de l'optimisation bayésienne des hyper paramètres du réseau de neurones (Chainer + GPyOpt)
Bases de PyTorch (2) -Comment créer un réseau de neurones-
Implémenter un réseau neuronal à 3 couches
Implémentation de TF-IDF à l'aide de gensim
Implémentation de réseau neuronal en python
Un mémorandum d'utilisation de eigen3
Implémentation de VGG16 à l'aide de Keras créé sans utiliser de modèle entraîné
Essayez de créer un réseau de neurones en Python sans utiliser de bibliothèque
Construction d'un réseau neuronal qui reproduit XOR par Z3
Série d'accélération CNN ~ FCNN: Introduction du réseau neuronal convolutif de Fourier ~
Comment dessiner facilement la structure d'un réseau de neurones sur Google Colaboratory à l'aide de "convnet-tiroir"
J'ai essayé un réseau de neurones convolutifs (CNN) avec un tutoriel TensorFlow sur Cloud9-Classification des images manuscrites-
Mise en place d'un filtre à particules simple
PRML Chapitre 5 Implémentation Python du réseau neuronal
J'ai essayé de mettre en œuvre un réseau de neurones à deux couches
Comment enregistrer une partie d'une longue vidéo en utilisant OpenCV
Théorie et implémentation simples des réseaux neuronaux
Implémentation des notifications de bureau à l'aide de Python
Touchez l'objet du réseau neuronal
Obtenir une combinaison d'éléments à l'aide d'itertools
Prédiction des survivants à l'aide du réseau neuronal titanesque de Kaggle [80,8%]
Composez avec un réseau neuronal! Run Magenta
Un mémorandum sur l'utilisation de la fonction d'entrée de Python
Implémentation d'un système de dialogue utilisant Chainer [seq2seq]
Impressions d'utilisation de Flask pendant un mois
[Python] Obtenir une liste de dossiers uniquement
[Chainer] Classification des documents par réseau de neurones convolutifs
Python vs Ruby "Deep Learning from scratch" Chapitre 3 Implémentation d'un réseau neuronal à 3 couches
Enregistrez le tableau numpy dans un fichier wav à l'aide du module wave
[Deep Learning from scratch] Valeur initiale du poids du réseau neuronal utilisant la fonction sigmoïde
Extraire des éléments (en utilisant une liste d'index) comme NumPy d'une liste / taple Python
Expérimentez avec divers algorithmes d'optimisation sur le réseau neuronal
Vérification de la normalisation des lots avec un réseau neuronal multicouche
Reconnaissance des nombres manuscrits par un réseau neuronal multicouche
[Deep Learning from scratch] Poids initial du réseau neuronal lors de l'utilisation de la fonction Relu