-
Vorverarbeitung der Audiodaten: Bevor Sie die Audiodaten in Ihre RL-Umgebung einspeisen, müssen Sie sie wahrscheinlich vorverarbeiten. Dies könnte die Normalisierung der Lautstärke, die Umwandlung in ein geeignetes Format wie ein Spektrogramm und möglicherweise die Anwendung von Audiomerkmalen wie MFCCs oder Chroma-Features umfassen.
-
Nachbearbeitung der Aktionen: Je nachdem, wie Sie Ihren Aktionsraum definiert haben, müssen Sie möglicherweise die von Ihrem Agenten ausgewählten Aktionen nachbearbeiten, bevor Sie sie anwenden. Dies könnte beinhalten, die Aktionen auf einen gültigen Bereich zu beschränken oder sie in eine Form zu konvertieren, die von Ihren Audiobearbeitungstools akzeptiert wird.
-
Speichern und Laden von Modellen: Sie werden wahrscheinlich die Fähigkeit haben wollen, trainierte Modelle zu speichern und zu laden, so dass Sie nicht jedes Mal von vorne beginnen müssen, wenn Sie Ihr Programm ausführen.
-
Überwachung des Trainings: Es ist oft nützlich, das Training zu überwachen, um zu sehen, wie sich die Leistung Ihres Agenten im Laufe der Zeit verbessert. Dies könnte das Protokollieren von Metriken wie der durchschnittlichen Belohnung pro Episode, der Verlustfunktion des Modells und der Ausführung von Testläufen mit Ihrem trainierten Modell umfassen.
-
Experimente und Hyperparameter-Tuning: Schließlich werden Sie wahrscheinlich viele Experimente durchführen und die Hyperparameter Ihres RL-Agenten abstimmen müssen, um die besten Ergebnisse zu erzielen. Dies könnte die Wahl der Lernrate, die Wahl der Discount-Rate, die Größe Ihres neuronalen Netzwerks und viele andere Faktoren umfassen.
root/
│
├── configs/ # Verzeichnis für Konfigurationsdateien
│ ├── dqn_config.yaml # Konfigurationsdatei für DQN-Experimente
│ └── future_configs/ # Platz für weitere Konfigurationsdateien
├── src/
│ ├── environment/ # Alles, was mit der Umgebung zu tun hat
│ │ └── music_mastering_env.py # Definiert die MusicMasteringEnv-Klasse
│ │
│ ├── agents/ # Alles, was mit den RL-Agenten zu tun hat
│ │ ├── base_agent.py # Basis-Agent-Klasse, von der andere Agenten erben können
│ │ ├── dqn_agent.py # Definiert die DQNAgent-Klasse
│ │ └── future_agents/ # Platz für weitere Agenten-Implementierungen
│ │
│ ├── networks/ # Neuronale Netzwerke, die von den Agenten verwendet werden
│ │ └── dqn_network.py # Definiert das Neuronale Netzwerk Modell für DQNAgent
│ │
│ ├── processing/
│ │ ├── preprocessing.py # Vorverarbeitungsfunktionen
│ │ ├── postprocessing.py # Nachbearbeitungsfunktionen
│ │
│ ├── utils/ # Hilfsfunktionen, die im gesamten Projekt genutzt werden können
│ │ ├── save_load.py # Funktionen zum Speichern und Laden von Modellen
│ │ └── monitoring.py # Funktionen zur Überwachung des Trainings
│ │ └── tensorboard_logger.py # Funktionen für die Protokollierung mit TensorBoard
│ │
│ └── experiments/ # Skripte für das Ausführen von Experimenten und Hyperparametersuche
│ ├── hyperparameter_tuning.py # Skript zur Durchführung der Hyperparametersuche
│ # └── train.py # Haupt-Trainings-Skript
│
├── data/ # Verzeichnis für Daten wie Audiodateien, trainierte Modelle, etc.
│
├── results/ # Verzeichnis für die Ausgabe von Experimenten, z.B. Trainingsergebnisse, Grafiken etc.
├── tests/
│ ├── unit/
│ │ ├── test_dqn_agent.py
│ │ ├── test_environment.py
│ │ └── ...
│ ├── integration/
│ │ └── test_agent_environment_interaction.py
│ └── system/
│ └── test_training_script.py
│
└── README.md # Dokumentation zum Projekt und dessen Verwendung
environment: Hier definieren wir die Umgebung, mit der unser Agent interagieren wird. In unserem Fall ist es das Music Mastering, also wird unser Agent versuchen, Musik so gut wie möglich zu mastern.
agents: Dieses Verzeichnis enthält verschiedene Agentenklassen. Ein Basisagent ist definiert, von dem spezifische Agenten (wie DQN) erben können, um Code-Reuse zu fördern und die Implementierung neuer Agenten zu erleichtern. Zukünftige Agenten können hier auch hinzugefügt werden.
networks: Dieses Verzeichnis enthält verschiedene neuronale Netzwerkmodelle, die von unseren Agenten verwendet werden. Im Moment haben wir ein Netzwerk für unseren DQN-Agenten.
processing: Dieses Verzeichnis enthält Funktionen für die Vor- und Nachbearbeitung unserer Daten. Das kann die Skalierung der Input-Daten, das Feature Engineering oder die Normalisierung der Ausgaben beinhalten.
utils: Hier finden wir hilfreiche Funktionen, die in verschiedenen Teilen des Projekts verwendet werden können, wie das Speichern und Laden von Modellen oder die Überwachung des Trainingsprozesses.
experiments: Dieser Ordner enthält Skripte für die Durchführung von Experimenten und die Suche nach Hyperparametern. Es ist auch der Ort für unser Haupt-Trainingsskript.
data: In diesem Verzeichnis werden die für das Training benötigten Daten gespeichert.
results: Hier speichern wir die Ausgabe unserer Experimente, wie z.B. Trainingsergebnisse, Graphen usw.