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.
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.
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.
Recommended Posts