Lors de la rédaction d'un article / d'une présentation sur un sujet concernant les réseaux de neurones, on visualise généralement l'architecture du réseau.
Quels sont les moyens bons / simples de visualiser automatiquement les architectures communes?
machine-learning
neural-network
deep-learning
visualization
Martin Thoma
la source
la source
Réponses:
Tensorflow, Keras, MXNet, PyTorch
Si le réseau de neurones est présenté sous forme de graphique Tensorflow, vous pouvez visualiser ce graphique avec TensorBoard .
Voici à quoi ressemble le MNIST CNN:
Vous pouvez ajouter des noms / champs (comme "dropout", "softmax", "fc1", "conv1", "conv2") vous-même.
Interprétation
Ce qui suit concerne uniquement le graphique de gauche. J'ignore les 4 petits graphiques sur la moitié droite.
Chaque case est une couche avec des paramètres qui peuvent être appris. Pour inférence, l'information circule de bas en haut. Les ellipses sont des couches qui ne contiennent pas de paramètres appris.
La couleur des cases n'a pas de sens.
Je ne suis pas sûr de la valeur des petites boîtes en pointillés ("gradients", "Adam", "enregistrer").
la source
J'ai récemment créé un outil de dessin d'architectures NN et d'exportation SVG, appelé NN-SVG.
la source
Dans Caffe, vous pouvez utiliser caffe / draw.py pour dessiner le protobuffer NetParameter:
Dans Matlab, vous pouvez utiliser la vue (net)
Keras.js :
la source
J'ajouterais des visualisations ASCII à l'aide de keras-sequential-ascii (disclaimer: je suis l'auteur).
Un petit réseau pour CIFAR-10 (tiré de ce tutoriel ) serait:
Pour VGG16, ce serait:
la source
Il y a un projet open source appelé Netron
la source
Voici un autre moyen: dotnets , en utilisant Graphviz , fortement inspiré de cet article de Thiago G. Martins.
la source
Keras
Le module keras.utils.vis_utils fournit des fonctions utilitaires permettant de tracer un modèle de Keras (à l'aide de graphviz).
Ce qui suit montre un modèle de réseau selon lequel la première couche cachée contient 50 neurones et attend 104 variables d'entrée.
la source
Le paquet Python
conx
peut visualiser des réseaux avec des activations avec la fonctionnet.picture()
pour produire des images SVG, PNG ou PIL comme ceci:Conx est construit sur Keras et peut lire dans les modèles de Keras. La palette de couleurs de chaque banque peut être modifiée et peut afficher tous les types de banque.
Plus d'informations peuvent être trouvées sur: http://conx.readthedocs.io/en/latest/
la source
J'ai travaillé sur un visualiseur de réseau neuronal à glisser et déposer (et plus encore). Voici un exemple de visualisation pour une architecture de type LeNet. Les modèles avec fan-out et fan-in sont également assez faciles à modéliser. Vous pouvez visiter le site Web à l' adresse https://math.mit.edu/ennui/
la source
En R,
nnet
ne vient pas avec une fonction de tracé, mais le code pour cela est fourni ici .Alternativement, vous pouvez utiliser le meilleur paquet plus récent et meilleur IMHO appelé
neuralnet
qui comporte uneplot.neuralnet
fonction, de sorte que vous pouvez simplement faire:neuralnet
n'est pas utilisé autant quennet
parce qu'ilnnet
est beaucoup plus vieux et est livré avec r-cran. Maisneuralnet
a plus d'algorithmes de formation, y compris la rétropropagation résiliente qui fait défaut, même dans des packages comme Tensorflow, et est beaucoup plus robuste pour les choix d'hyperparamètre, et possède davantage de fonctionnalités.la source
Il existe quelques nouveaux efforts alternatifs sur la visualisation de réseaux neuronaux.
S'il vous plaît voir ces articles:
De superbes 'analyses du cerveau de l'IA' révèlent ce que les machines voient lorsqu'elles acquièrent de nouvelles compétences
Dans un cerveau d'intelligence artificielle - À quoi ressemble l'apprentissage automatique?
Ces approches sont davantage orientées vers la visualisation du fonctionnement du réseau neuronal. Cependant, l'architecture NN est également visible sur les diagrammes résultants.
Exemples:
la source
Non utile en soi pour les articles, mais très utile pour montrer à des personnes qui ne connaissent pas beaucoup les réseaux de neurones à quoi ressemble leur topologie. Cette bibliothèque Javascript (Neataptic) vous permet de visualiser votre réseau:
la source
Vous pouvez lire le document populaire Comprendre les réseaux de neurones par la visualisation profonde, qui traite de la visualisation des réseaux de convolution. Son implémentation affiche non seulement chaque couche, mais également les activations, les pondérations, les déconvolutions et de nombreuses autres choses discutées en profondeur dans le document. Son code est en
caffe'
. La partie intéressante est que vous pouvez remplacer le modèle pré-formé par le vôtre.la source
Tensorspace-JS est un outil fantastique pour la visualisation 3D de l'architecture de réseau:
https://tensorspace.org/
et voici un post intéressant sur la rédaction d'un programme:
https://medium.freecodecamp.org/tensorspace-js-a-way-to-3d-visualize-neural-networks-in-browsers-2c0afd7648a8
la source
Netscope est mon outil quotidien pour les modèles Caffe.
la source