[PYTHON] À propos de la gestion de projet de deep learning (DNN)

introduction

Je fais des recherches en utilisant DNN.

Au bout d'un an, je sens que j'ai enfin trouvé la meilleure pratique de gestion de projet, je vais donc l'exposer.

environnement

Depuis Onedrive est une assurance lorsqu'un fichier est soudainement explosé, je pense que GitHub est fondamentalement suffisant.

Structure du répertoire

program/
  ├ dataset/
  │   ├ dev/
  │   └ test/
  └ src/
      ├ common/
      │   ├ hoge.py
      │   ├ fuga.py
      │   ├ ...
      ├ method_xxx/
      │   ├ output/
      │   │   ├ YYYYMMDD_ID/
      │   │   │  ├ loss/
      │   │   │  │   ├ training_loss.npy
      │   │   │  │   └ validation_loss.npy
      │   │   │  ├ prediction/
      │   │   │  │   ├ img/
      │   │   │  │   ├ wav/
      │   │   │  │   ├ ...
      │   │   │  ├ condition.json
      │   │   │  ├ model.pth
      │   │   │  └ network.txt
      │   │   ├ YYYYMMDD_ID/
      │   │   ├ ...
      │   ├ generate_dataset.py
      │   ├ dataset_loader.py
      │   ├ dnn_model.py
      │   ├ dnn_training.py
      │   ├ dnn_evaluation.py
      │   ├ training_config.json
      │   └ evaluation_config.json
      ├ method_zzz/
      ├ ...

Description de chaque dossier / fichier

Structure du modèle DNN de sortie



class Model(nn.Module):
    def __init__(self, in_units, hidden_units, out_units):
        super(Model, self).__init__()
        self.l1 = nn.Linear(in_units, hidden_units)
        self.a1 = nn.ReLU()
        self.l2 = nn.Linear(hidden_units, hidden_units)
        self.a2 = nn.ReLU()

    def forward(self, x):
        x = self.a1(self.l1(x))
        y = self.a2(self.l2(x))

        return y

#Exporter les informations réseau pour le modèle DNN(.txt)
model = Model(in_size, hidden_size, out_size)
with open(OUT_DIR_NAME+'/network.txt', 'w') as f:
    f.write(str(model))

network.txt


Model(
  (l1): Linear(in_features=8546, out_features=682, bias=True)
  (a1): ReLU()
  (l2): Linear(in_features=682, out_features=682, bias=True)
  (a2): ReLU()
)

À propos des fichiers JSON

Les réglages des paramètres d'apprentissage, l'évaluation du modèle et les résultats expérimentaux sont gérés dans un fichier json. Le contenu de chacun est le suivant.

training_config.json


{
    "method": "Une explication détaillée de la méthode est décrite ici.",
    "parameters": {
        "max_epochs": 1000,
        "batch_size": 128,
        "optimizer": "adam",
        "learning_rate": 0.001,
        "patience": 50,
        "norm": true
    },
    "datasets": {
        "data1": "../../dataset/dev/<file1_name>",
        "data2": "../../dataset/dev/<file2_name>"
    }
}

evaluation_config.json


{
    "target_dir": "YYYYMMDD_ID",
    "src_dir": {
        "file1": "../../dataset/test/<file1_name>",
        "file2": "../../dataset/test/<file2_name>"
    },
    "output_dir": "OUTPUT_DIR_NAME"
}

condition.json


{
    "method": "Explication de la méthode",
    "parameters": {
        "max_epochs": 345,
        "batch_size": 128,
        "optimizer": "adam",
        "learning_rate": 0.001,
        "patience": 50,
        "norm": true
    },
    "datasets": {
        "data1": "../../dataset/dev/<file1_name>",
        "data2": "../../dataset/dev/<file1_name>",
    },
    "dnn": {
        "input_size": 8546,
        "output_size": 682
    },
    "loss": {
        "training_loss": 0.087654,
        "validation_loss": 0.152140
    }
}

Pour l'évaluation des performances DNN, ʻevaluation.json est lu en premier, le dossier cible est spécifié à partir de rép_cible, et les paramètres etc. sont acquis à partir de condition.json` qui s'y trouve.

la fin

Après quelques rebondissements, je me suis installé sur ce genre de méthode de gestion, mais dites-moi s'il existe une meilleure méthode de gestion ...

Recommended Posts

À propos de la gestion de projet de deep learning (DNN)
L'apprentissage en profondeur
À propos du traitement d'expansion des données pour l'apprentissage en profondeur
[Deep Learning from scratch] À propos de l'optimisation des hyper paramètres
Mémorandum d'apprentissage profond
Commencer l'apprentissage en profondeur
Apprentissage en profondeur Python
Apprentissage profond × Python
Réflexion sur les tactiques de croissance de type attaque de groupe en utilisant l'apprentissage en profondeur
Premier apprentissage profond ~ Lutte ~
Une histoire de prédiction du taux de change avec Deep Learning
Apprentissage profond à partir de zéro
Deep learning 1 Pratique du deep learning
Apprentissage profond / entropie croisée
Premier apprentissage profond ~ Préparation ~
Première solution d'apprentissage en profondeur ~
[AI] Apprentissage métrique profond
J'ai essayé le deep learning
Bibliothèque DNN (Deep Learning): Comparaison de chainer et TensorFlow (1)
Python: réglage du Deep Learning
Learning Deep Forest, un nouveau dispositif d'apprentissage comparable à DNN
Technologie d'apprentissage en profondeur à grande échelle
Fonction d'apprentissage profond / softmax
L'histoire d'un ingénieur directeur de 40 ans qui réussit "Deep Learning for ENGINEER"
J'ai capturé le projet Toho avec Deep Learning ... je le voulais.
Apprentissage profond à partir de zéro 1 à 3 chapitres
Essayez l'apprentissage en profondeur avec TensorFlow
<Cours> Apprentissage en profondeur: Day2 CNN
Reconnaissance d'image par apprentissage profond 1 théorie
Deep running 2 Réglage de l'apprentissage profond
À propos de l'apprentissage avec Google Colab
Apprentissage profond / code de travail LSTM
<Cours> Apprentissage en profondeur: Jour 1 NN
Apprentissage profond du noyau avec Pyro
Essayez le Deep Learning avec FPGA
Apprentissage profond pour la formation composée?
Présentation d'Udacity Deep Learning Nanodegree
À propos de la matrice mixte d'apprentissage automatique
Sujets> Deep Learning: Day3 RNN
Introduction au Deep Learning ~ Règles d'apprentissage ~
Apprentissage par renforcement profond 1 Introduction au renforcement de l'apprentissage
À propos de la gestion des données d'Anvil-App-Server
Apprentissage par renforcement profond 2 Mise en œuvre de l'apprentissage par renforcement
Générez des Pokémon avec Deep Learning
Introduction au Deep Learning ~ Rétropropagation ~
Enquête sur PYNQ - Faisons du Deep Learning avec FPGA en utilisant Python -