[NNabla] Comment supprimer le niveau intermédiaire d'un réseau prédéfini

introduction

Ceci est le deuxième message de qiita. (article2) Dans la continuité de la dernière fois, alors que j'utilisais nnabla, j'ai réussi à me sentir comme "j'aurais aimé avoir ce genre d'informations dans qiita" Résumé de ce que j'ai trouvé dans la référence nnabla et dir () (fonction python standard, qui renvoie des variables membres et des fonctions d'arguments) Je vais.

1. Exigences

-OS: macOS Catalina (version 10.15.1) ・ Python: 3.5.4 ・ Nnabla: 1.3.0

2. Construire un réseau

L'exemple de réseau est défini ci-dessous. (Identique à Dernière fois jusqu'à présent)

article2_rewire_on.py


import nnabla as nn
import nnabla.functions as F

# [define network]
x = nn.Variable()
y = F.add_scalar(x, 0.5)  # <-- (1)loin
y = F.mul_scalar(y, 2.0)

C'est simplement sous la forme $ y = (x + 0,5) \ times2 $. A ce moment, la variable y est une variable qui a le résultat de la formule ci-dessus, et le résultat de F.add_scalar (x, 0.5), qui est un calcul intermédiaire, est appelé (1).

3. Retirez la couche intermédiaire

Je vais vous expliquer comment supprimer (1) ci-dessus et définir simplement $ y = x \ times2 $. Il utilise la variable membre rewire_on de nnabla.Variable dans la référence nnabla. Ceci est également (relativement) facile à comprendre en référence. Je l'ai pratiqué ci-dessous.

article2_rewire_on.py


h1 = y.parent.inputs[0]   # = (1)
x.rewire_on(h1)

Le contrôle de fonctionnement a été effectué ci-dessous.

article2_rewire_on.py


# [check func for visit]
def get_func_name(f):
    print(f.name)
print('--- before ---')
y.visit(get_func_name)
print('')

# [rewire_on]
h1 = y.parent.inputs[0]   # = (1)
x.rewire_on(h1)

print('--- after ---')
y.visit(get_func_name)
print('')

production

--- before ---
AddScalar
MulScalar

--- after ---
MulScalar

Commentaire

4. Prochain avis (?)

Vous pouvez utiliser rewire_on non seulement pour supprimer le calque intermédiaire, mais aussi pour insérer un nouveau calque. J'ai réussi à le faire moi-même, mais je me suis dit "Je voulais que quelqu'un écrive quelque chose comme qiita", alors je l'écrirai la prochaine fois.

Recommended Posts

[NNabla] Comment supprimer le niveau intermédiaire d'un réseau prédéfini
[NNabla] Comment obtenir la sortie (variable) de la couche intermédiaire du réseau construit
[NNabla] Comment ajouter une nouvelle couche entre les couches intermédiaires d'un réseau pré-construit
[NNabla] Comment ajouter une couche de quantification à la couche intermédiaire d'un modèle entraîné
Bases de PyTorch (2) -Comment créer un réseau de neurones-
[Ubuntu] Comment supprimer tout le contenu du répertoire
Comment trouver le coefficient de mise à l'échelle d'une ondelette bipolaire
Comment connecter le contenu de la liste dans une chaîne de caractères
Comment dessiner facilement la structure d'un réseau de neurones sur Google Colaboratory à l'aide de "convnet-tiroir"
Comment déterminer l'existence d'un élément sélénium en Python
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Une commande pour vérifier facilement la vitesse du réseau sur la console
Comment prendre une capture d'écran de l'écran Chrome (l'empêcher de se couper au milieu)
Comment vérifier la version de Django
J'ai essayé d'améliorer la précision de mon propre réseau neuronal
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Comment mettre un numéro de ligne au début d'un fichier CSV
Comment lire une vidéo tout en regardant le nombre d'images (Mac)
Comment trouver la zone du diagramme de Boronoi
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment mentionner un groupe d'utilisateurs avec une notification de mou, comment vérifier l'ID d'un groupe d'utilisateurs
[Circuit x Python] Comment trouver la fonction de transfert d'un circuit en utilisant Lcapy
Pour générer une valeur au milieu d'une cellule avec Jupyter Notebook
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
[python] Comment trier par le Nth Mth élément d'un tableau multidimensionnel
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
[Numpy, scipy] Comment calculer la racine carrée d'une matrice Elmeet à valeur semi-régulière
Comment faire un Raspberry Pi qui parle les tweets d'un utilisateur spécifié
Comment obtenir une liste de fichiers dans le même répertoire avec python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
[Python] Comment supprimer les valeurs en double de la liste
Comment connaître le numéro de port du service xinetd
Comment écrire une interface graphique à l'aide de la commande maya
Comment afficher la date de modification d'un fichier en langage C jusqu'à nanosecondes
Comment obtenir le nombre de chiffres en Python
Remarques sur l'utilisation d'AIST Spacon ABCI
Un mémo pour comprendre visuellement l'axe des pandas.
L'histoire de la création d'un réseau neuronal de génération musicale
Étapes pour calculer la probabilité d'une distribution normale
[Ruby] Comment remplacer uniquement une partie de la chaîne de caractères correspondant à l'expression régulière?
[Blender] Comment définir dynamiquement les sélections EnumProperty
Comment vérifier en Python si l'un des éléments d'une liste est dans une autre liste
Comment frapper le document de Magic Function (Line Magic)
Comment accéder à la variable globale du module importé
Comment publier un ticket depuis l'API Shogun
Comment changer l'image générée de GAN en une image de haute qualité à votre goût
[Selenium] Comment spécifier le chemin relatif de chromedriver?
Note Python: Le mystère de l'attribution d'une variable à une variable
[Linux] [C / C ++] Comment obtenir la valeur d'adresse de retour d'une fonction et le nom de fonction de l'appelant
[Apprentissage en profondeur] Découvrez comment utiliser chaque fonction du réseau neuronal convolutif [DW jour 3]
Comment afficher le maillage régional du Government Statistics Office (eStat) dans un navigateur Web
Comment compter rapidement la fréquence d'apparition des caractères à partir d'une chaîne de caractères en Python?
Comment trouver la quantité moyenne d'informations (entropie) de la distribution de probabilité d'origine à partir de l'échantillon
Comment représenter la distribution de la composition bactérienne à partir des données d'analyse Qiime2 dans un diagramme de moustaches
Comment tracer beaucoup de légendes en changeant la couleur du graphique en continu avec matplotlib
Comment insérer un processus spécifique au début et à la fin de l'araignée avec la tremblante
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python (version non bloquante)
Une histoire sur le portage du code de "Essayez de comprendre comment fonctionne Linux" sur Rust