Jusqu'à la dernière fois, j'ai écrit sur les objets de base qui composent Chainer. A partir de ce moment, j'aimerais réellement implémenter un réseau de neurones en utilisant ces objets.
Lors de l'écriture d'un programme qui compose un réseau de neurones, la vue d'ensemble se compose à peu près des cinq suivantes.
C'est un programme qui prépare les données pour l'entraînement du modèle. Il existe différents types de données telles que des phrases, des images et des sons, mais nous les traitons sous la forme de données adaptées au réseau de neurones à construire.
Décrivez une classe qui hérite de la classe Chain. Pour plus de détails, consultez ici.
class MyChain(Chain):
def __init__(self):
super(MyChain, self).__init__(
Déclaration de fonction contenant des paramètres
)
def __call__(self, x, y):
Fonction de perte (erreur)
Décrit le processus d'optimisation du modèle (minimisation de l'erreur). Pour plus d'informations, voir ici
model = MyChain()
optimizer = optimizer.Adam()
optimizer.setup(model)
Apprend le nombre de fois spécifié. En fonction de l'item, il peut être terminé tôt, mais cette fois nous allons simplement spécifier l'époque (nombre d'apprentissages). Il semble que le code de l'initialisation du gradient à la mise à jour des paramètres soit presque promis.
for epoch in range(Nombre de répétitions):
model.zerograds() #Initialisation du gradient
loss = model(train, target) #Calcul d'erreur
loss.backward() #Calcul du gradient
optimizer.update() #Mise à jour des paramètres
Enregistrez le modèle du résultat de l'entraînement et effectuez le test.
Je ne veux pas regrouper ces informations dans un seul article, donc à partir de la prochaine fois
J'écrirai à ce sujet par petites parties. Jusqu'à ici pour cette fois
Takayoshi Yamashita Apprentissage profond du Kodansha visible sur l'illustration Hiroyuki Shinno Apprentissage en profondeur pratique avec Chainer-Comment implémenter des NN-Ohm complexes
Recommended Posts