[PYTHON] Über das Projektmanagement von Deep Learning (DNN)

Einführung

Ich recherchiere mit DNN.

Nach einem Jahr habe ich das Gefühl, endlich die beste Vorgehensweise für das Projektmanagement gefunden zu haben, also werde ich sie offenlegen.

Umgebung

Da Onedrive eine Versicherung ist, wenn eine Datei plötzlich abbläst, denke ich, dass GitHub im Grunde genug ist.

Verzeichnisaufbau

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/
      ├ ...

Beschreibung jedes Ordners / jeder Datei

DNN-Modellstruktur ausgeben



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

#Exportieren Sie Netzwerkinformationen für das DNN-Modell(.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()
)

Über JSON-Dateien

Lernparametereinstellungen, Modellbewertung und experimentelle Ergebnisse werden in einer JSON-Datei verwaltet. Der Inhalt von jedem ist wie folgt.

training_config.json


{
    "method": "Eine ausführliche Erläuterung der Methode finden Sie hier.",
    "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": "Erläuterung der Methode",
    "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
    }
}

Für die Bewertung der DNN-Leistung wird zuerst "evaluation.json" gelesen, der Zielordner wird aus "target_dir" angegeben und die Parameter usw. werden aus "condition.json" darin erfasst.

das Ende

Nach einigen Drehungen und Wendungen habe ich mich für diese Art von Managementmethode entschieden, aber bitte sagen Sie mir, ob es eine bessere Managementmethode gibt ...

Recommended Posts

Über das Projektmanagement von Deep Learning (DNN)
Tiefes Lernen
Informationen zur Datenerweiterungsverarbeitung für tiefes Lernen
[Deep Learning von Grund auf neu] Über die Optimierung von Hyperparametern
Deep Learning Memorandum
Starten Sie Deep Learning
Python Deep Learning
Deep Learning × Python
Denken Sie über Party-Attack-ähnliche Wachstumstaktiken mit Deep Learning nach
Erstes tiefes Lernen ~ Kampf ~
Eine Geschichte über die Vorhersage des Wechselkurses mit Deep Learning
Deep Learning von Grund auf neu
Deep Learning 1 Übung des Deep Learning
Deep Learning / Cross Entropy
Erstes tiefes Lernen ~ Vorbereitung ~
Erstes tiefes Lernen ~ Lösung ~
[AI] Deep Metric Learning
Ich habe versucht, tief zu lernen
DNN (Deep Learning) Library: Vergleich von Chainer und TensorFlow (1)
Python: Deep Learning Tuning
Learning Deep Forest, ein neues Lerngerät, das mit DNN vergleichbar ist
Deep Learning Großtechnologie
Deep Learning / Softmax-Funktion
Eine Geschichte über einen 40-jährigen Ingenieurmanager, der "Deep Learning for ENGINEER" bestanden hat
Ich habe das Toho-Projekt mit Deep Learning aufgenommen ... ich wollte.
Deep Learning von Grund auf 1-3 Kapitel
Versuchen Sie es mit TensorFlow
<Kurs> Tiefes Lernen: Day2 CNN
Deep Learning Bilderkennung 1 Theorie
Deep Running 2 Tuning von Deep Learning
Über das Lernen mit Google Colab
Deep Learning / LSTM Scratch Code
<Kurs> Tiefes Lernen: Tag 1 NN
Deep Kernel Learning mit Pyro
Versuchen Sie Deep Learning mit FPGA
Deep Learning für die Bildung von Verbindungen?
Einführung in Udacity Deep Learning Nanodegree
Über maschinelles Lernen gemischte Matrix
Themen> Deep Learning: Tag 3 RNN
Einführung in Deep Learning ~ Lernregeln ~
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
Über die Datenverwaltung von Amboss-App-Server
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Generiere Pokemon mit Deep Learning
Einführung in Deep Learning ~ Backpropagation ~
Untersuchung von PYNQ - Machen wir Deep Learning mit FPGA unter Verwendung von Python-