Die Idee, die Konfigurationsdatei mit einer Python-Datei anstelle von yaml zu füttern

n3215e416cf319a3a.jpg

Eingabe der Konfiguration in die yml-Datei

Ich denke, dass die yaml-Datei verwendet wird, um die Konfigurationsinformationen beim Lernen und Ableiten des maschinellen Lernmodells einzugeben.

Persönlich ist die Tatsache, dass Variablen nicht mit Yaml verwendet werden können, ein Schmerz. Es gibt Variablen wie Anker und Aliase, aber da sie Werte für jede Zeile enthalten, können sie keine partiellen Gemeinsamkeiten enthalten, beispielsweise wenn die übergeordneten Verzeichnisse gemeinsam sind.

Zum Beispiel

image: "/path/to/dataset_name/data_version/Images"
label: "/path/to/dataset_name/data_version/Csv"

Zu

shared_dir = "/path/to/dataset_name/data_version/"

image: shared_dir + "Images"
label: shared_dir + "Csv"

Da ich so nicht schreiben kann, fällt es mir schwer, sie zu bearbeiten und wiederzuverwenden.

Zu diesem Zeitpunkt erstellen einige Benutzer möglicherweise nur die Standardschlüssel- und Wertplatzhalter und erstellen dann dynamisch die erforderliche XML-Datei mit dem Vorlagengenerator und laden sie. Hey [^ 1]. Für mich erhöht sich die Anzahl der Verarbeitungsschritte um eins, was problematisch ist.

[^ 1]: Ich kenne das Beispiel von Yaml nicht, aber ich habe es in Kaffees Prototxt gesehen. Der Hintergrund ist, dass die Python-API-Solver-Klasse von caffe (entsprechend dem Optimierer) keine Setter-Methode hat. Ich denke, das lag daran, dass die Parameter über eine Datei angegeben werden mussten.

Konfigurationseingabe in Python-Datei

Also kam mir die Idee, die Python-Datei direkt zu essen. Hier zu essen ist nicht "von config import cfg", sondern

Konfigurationsdatei in Python geschrieben

config.py


# config.py

path_root = '/path/to/'

cfg = {
    'key1': path_root + 'val1',
    'key2':path_root + 'val2',
    'some_number': 1+ 3,
}

,

import importlib

cfg_filepath = './config.py'
hoge = importlib.machinery.SourceFileLoader('hoge_module_name', cfg_filepath).load_module()
cfg = hoge.cfg

print(cfg)  # {'key1': '/path/to/val1', 'key2': '/path/to/val2', 'some_number': 4}

Es bezieht sich auf das Lesen des Inhalts der Konfiguration, indem diese mit dem Dateipfad an den Loader übergeben wird. In diesem Fall können Sie die zu lesende Konfigurationsdatei mit dem Argument wechseln, ohne das Ladeziel von config jedes Mal mit der import-Anweisung zu ändern. Sie können auch die Auswertung von Ausdrücken und Objekte verwalten, die von Python verarbeitet werden. Natürlich gibt es einen Nachteil, dass es nur für Python verwendet werden kann, aber die Variablen lassen die Konfigurationsdatei ordentlich aussehen.

Kannst du es wirklich benutzen?

Ich habe es aufgeschrieben, aber ich hatte das Gefühl, dass die Leute die Parameter in der Konfigurationsdatei normalerweise nicht bearbeiten und experimentieren würden, egal ob es sich um eine Yaml- oder eine Python-Datei handelt. Wenn Sie die Befehlszeile durchlaufen, können Sie nur die Parameter ändern, die Sie mit den Argumenten ändern möchten, oder Sie können sie über die GUI der AI-Plattform ändern, oder Sie führen das Experiment mit jupyter durch und sammeln die Parameter in einer Zelle (spucken yaml zur Laufzeit als Protokoll). Es scheint, dass die meisten von ihnen es sind, und ich habe den Eindruck, dass es fast keine Möglichkeit gibt, die Konfigurationsdatei direkt zu ändern.

In Bezug darauf, ob die Python-Dateimethode wie in diesem Artikel verwendet werden kann, lautet der ehrliche Punkt: "Obwohl sie verwendet werden kann, ist es besser, sich eine andere Art des Gebens auszudenken." Wenn es einen nützlichen Fall mit der Methode in diesem Artikel gibt, werde ich ihn später hinzufügen.

Danke fürs Lesen.

Verweise

Recommended Posts

Die Idee, die Konfigurationsdatei mit einer Python-Datei anstelle von yaml zu füttern
Überprüfen Sie die Existenz der Datei mit Python
Konvertieren Sie den Zeichencode der Datei mit Python3
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
Python> Aus einer mehrzeiligen Zeichenfolge anstelle einer Datei lesen> io.StringIO ()
Extrahieren Sie die xz-Datei mit Python
Verarbeiten Sie den Inhalt der Datei der Reihe nach mit einem Shell-Skript
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Lesen Sie die Datei in Python mit einem relativen Pfad aus dem Programm
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Erstellen Sie ein Kompatibilitätsbewertungsprogramm mit dem Zufallsmodul von Python.
Erstellen einer einfachen Power-Datei mit Python
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Lesen wir die RINEX-Datei mit Python ①
VM mit YAML-Datei (KVM) erstellen
[Python] [Meta] Ist der Python-Typ ein Typ?
[Python] Ruft den Zeichencode der Datei ab
Die Geschichte der Verarbeitung A von Blackjack (Python)
Ich habe mit Python eine Einstellungsdatei erstellt
[Python3] Grundlegendes zu Dateivorgängen
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B- und C-Probleme von ABC182 mit Python!
Was ist die XX-Datei im Stammverzeichnis eines beliebten Python-Projekts?
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
Ein Memo, das durch Umbenennen der Dateinamen im Ordner mit Python organisiert wird
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Berechnen Sie die Wahrscheinlichkeit, eine Tintenfischmünze zu sein, mit dem Bayes-Theorem [Python]
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
[AtCoder Erklärung] Kontrollieren Sie ABC184 A, B, C Probleme mit Python!
nginxparser: Versuchen Sie, die nginx-Konfigurationsdatei mit Python zu analysieren
[AtCoder] Lösen Sie ein Problem von ABC101 ~ 169 mit Python
Lesen einer CSV-Datei mit Python 2/3
[Python] Holen Sie sich die Dateien mit Python in den Ordner
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
2016 Todai Mathematik mit Python gelöst
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Holen Sie sich den Aufrufer einer Funktion in Python
Überprüfen Sie das Datum der Flaggenpflicht mit Python
Löse A ~ D des Yuki-Codierers 247 mit Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
[Python] Zusammenfassung der S3-Dateivorgänge mit boto3
Speichern Sie das Objekt in einer Datei mit pickle
Ausgabe in Form eines Python-Arrays
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Lesen Sie mit Python Zeile für Zeile aus der Datei
Berücksichtigung der Stärken und Schwächen von Python
Ich möchte mit Python in eine Datei schreiben
Dateidialog mit Python-GUI öffnen (tkinter.filedialog)
[Python] Bestimmen Sie den Typ der Iris mit SVM
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
[Erklärung zum AtCoder] Kontrollieren Sie die A-, B-, (C), D-Probleme von ABC165 mit Python!
[AtCoder-Erklärung] Kontrollieren Sie die A-, B-, C- und D-Probleme von ABC183 mit Python!
Rund um die Authentifizierung von PyDrive2, einem Paket zum Betreiben von Google Drive mit Python
Zeichnen Sie ein Faltlinien- / Streudiagramm mit Python Matplotlib für die CSV-Datei (2 Spalten).