Sigmora
Flux de travail

Créer un réseau neuronal en Python, étape par étape

03
Débogage de l'entraînement

Déboguer un script d'entraînement qui échoue

Votre fichier Python devrait entraîner un petit réseau, mais il s'arrête sur une erreur ou affiche des valeurs étranges. Sigmora ouvre le fichier, repère les lignes clés, lance votre commande d'entraînement avec Shell et affiche le résultat réel dans une carte, pour que vous voyiez ce qui s'est passé au lieu de deviner. Commencez avec un seul fichier. L'agent n'entraîne rien lui-même, car c'est votre code qui le fait, et cela peut prendre autant de temps que nécessaire. La boucle est courte : lire, exécuter, comparer, modifier. Vous choisissez le dossier, vous choisissez le mode et vous décidez quelle modification accepter. N'utilisez que du code, des données et des ordinateurs qui vous appartiennent ou que vous avez le droit d'utiliser, et gardez chaque expérience suffisamment petite pour être répétée.

01

Ouvrir le dossier

Choisissez le dossier de travail qui contient votre script d'entraînement, votre fichier de configuration et vos journaux. Les outils de fichiers fonctionnent dans ce dossier, et list_dir affiche ce qu'il contient. Conservez les données que vous avez le droit d'utiliser au même endroit, afin que chaque chemin dans votre script reste court. Les outils de fichiers utilisent ce dossier.

02

Demander une lecture

Demandez à Sigmora de lire le script d'entraînement et d'expliquer les couches, la fonction de perte et la boucle. read_file et grep citent les lignes concernées, afin que vous puissiez vérifier l'explication par rapport à votre propre code. Le mode Plan only ne change rien. Demandez à nouveau si un bloc reste peu clair.

03

Exécuter la commande

Nommez votre commande d'entraînement et choisissez un mode. Shell l'exécute sous Windows, dans WSL ou via SSH sur votre propre serveur, et la carte affiche le résultat réel et le code de sortie. Python doit être installé à l'endroit où la commande s'exécute. L'entraînement peut prendre beaucoup de temps sur votre matériel.

04

Vérifier le résultat

Développez la carte et lisez l'erreur imprimée ou les valeurs de perte. Un code de sortie nul signifie uniquement que le script s'est terminé sans erreur, jugez donc les nombres vous-même, sur des données de validation que le modèle n'a pas vues, et notez ce que vous avez observé. Puis décidez de la prochaine petite modification.

Exemple : un neurone apprend la porte AND en Python pur

perceptron_and.py
# AND gate: one neuron (perceptron) learns the table
rows = [((0,0),0), ((0,1),0), ((1,0),0), ((1,1),1)]
w = [0.0, 0.0]
b = 0.0
rate = 0.1
for epoch in range(20):
    for x, target in rows:
        total = w[0] * x[0] + w[1] * x[1] + b
        out = 1 if total > 0 else 0
        err = target - out
        w[0] += rate * err * x[0]
        w[1] += rate * err * x[1]
        b += rate * err
print("weights:", w, "bias:", b)

Ce fichier entraîne un seul neurone à apprendre la porte AND avec un taux d'apprentissage et une courte boucle de mise à jour des poids, puis affiche les poids et le biais. Il utilise du Python pur, sans bibliothèques ni nombres aléatoires, donc chaque exécution donne le même résultat. Exécutez-le avec Shell, modifiez le nombre d'epochs et relancez-le pour voir ce qui change dans les poids affichés.

Parcours : suivi d'une expérience de réseau neuronal convolutif en Python

Lire le code d'entraînement

Avant toute modification, Sigmora lit. read_file ouvre votre script d'entraînement, list_dir affiche le dossier de données et grep repère les lignes qui définissent les couches, la fonction de perte et la boucle. Vous voyez le texte du fichier dans la carte, afin de comparer les tailles des couches avec la forme de vos données. L'agent ne modifie rien à ce stade. Les modèles de réseaux neuronaux pour les portes logiques, comme le fichier AND ci-dessus, sont l'exercice classique de début, et la même étape de lecture convient à un réseau neuronal en Python pur que vous avez écrit le mois dernier et dont vous ne vous souvenez plus. Demandez n'importe quel bloc en termes simples, ou passez en mode Plan only si vous souhaitez une explication écrite et aucune action. Lisez chaque explication à côté du code et vérifiez qu'elle correspond à ce que vous avez écrit.

Exécuter la commande d'entraînement

Choisissez Auto-run pour une exécution en laquelle vous avez confiance, ou Ask first si vous souhaitez approuver les actions qui modifient quelque chose. Shell lance votre commande d'entraînement, par exemple python perceptron_and.py, dans l'environnement que vous avez choisi, et la carte affiche le résultat réel et le code de sortie. Développez la carte pour lire le journal complet de votre script de réseau neuronal convolutif en Python ligne par ligne. L'entraînement peut prendre autant de temps que nécessaire, et Sigmora ne l'accélère pas. Lorsque la fonction de perte ne converge pas dans un réseau neuronal, le journal est le premier endroit où vous le voyez. Regardez les nombres, pas seulement le code de sortie, car un code de sortie nul signifie uniquement que le script est terminé. Puis décidez si le code doit être modifié, et demandez le diff uniquement si c'est le cas.

Corriger une erreur de forme ou une perte lente

edit_file modifie le script et affiche un diff. En mode Ask first, rien n'est écrit jusqu'à ce que vous acceptiez le diff, tandis qu'Auto-run applique la modification immédiatement. Une erreur de forme signifie généralement que les données et la première couche ne correspondent pas, donc la correction consiste souvent en un seul nombre. Une perte qui bouge à peine peut indiquer le taux d'apprentissage, des étiquettes qui ne correspondent pas aux données, ou un modèle qui ne peut pas encore surajuster un petit lot. Essayez d'abord ce petit lot. Le surajustement et le sous-ajustement sont des problèmes différents, donc regardez la perte d'entraînement et de validation avant de modifier quoi que ce soit de majeur. Construire un réseau neuronal pour les échecs est un projet plus vaste, mais il commence de la même manière. Après la modification, relancez la commande avec Shell et comparez les nouveaux nombres avec les anciens.

Journaliser les résultats dans un fichier CSV

Pour comparer les exécutions, vous avez besoin de nombres dans un fichier. write_file crée un fichier CSV dans votre dossier de travail, ou append_file ajoute une ligne par epoch, et read_file le charge à nouveau afin que l'agent puisse placer 2 exécutions côte à côte. Sigmora n'analyse pas les données pour vous ; il sauvegarde les nombres et les affiche, et vous décidez de ce qu'elles signifient. Séparez les données de validation des données d'entraînement et laissez l'ensemble de test intact jusqu'à la fin. Le mode Plan only peut écrire la prochaine expérience comme un plan sans rien exécuter. Lorsque vous êtes prêt, changez de mode et laissez l'agent le réaliser. Avant de conserver un résultat, ouvrez le fichier CSV et vérifiez que les lignes correspondent à ce que la carte a imprimé et que chaque colonne est étiquetée.

Sigmora pour Windows

Essayez le flux de travail sur votre propre projet

Télécharger Sigmora ↗