Je pense que le fichier yaml est utilisé pour saisir les informations de configuration lors de l'apprentissage et de la déduction du modèle d'apprentissage automatique.
Cependant, personnellement, le fait que les variables ne puissent pas être utilisées avec yaml est une douleur. Il existe des variables comme les ancres et les alias, mais comme elles contiennent des valeurs pour chaque ligne, elles ne peuvent pas contenir de points communs partiels, par exemple, lorsque les répertoires parents sont communs.
Par exemple
image: "/path/to/dataset_name/data_version/Images"
label: "/path/to/dataset_name/data_version/Csv"
À
shared_dir = "/path/to/dataset_name/data_version/"
image: shared_dir + "Images"
label: shared_dir + "Csv"
Parce que je ne peux pas écrire comme ça, j'ai du mal à modifier et réutiliser.
À ce moment-là, certaines personnes peuvent créer uniquement la clé par défaut et les espaces réservés val, puis créer dynamiquement le fichier yml requis avec le générateur de modèle et le charger. Salut [^ 1]. Pour moi, le nombre d'étapes de traitement est augmenté d'une unité, ce qui est gênant.
[^ 1]: Je ne connais pas l'exemple de yaml, mais je l'ai vu dans le prototxt de caffe. Le fond est que la classe de solveur d'API python de caffe (correspondant à l'optimiseur) n'a pas de méthode de définition, donc je pense que c'était parce que les paramètres devaient être donnés via un fichier.
J'ai donc eu l'idée que je devrais prendre la méthode de manger directement le fichier python. Manger ici n'est pas "from config import cfg", mais
Fichier de configuration écrit en python
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}
Il fait référence à la lecture du contenu de la configuration en le passant au chargeur avec le chemin du fichier. Dans ce cas, vous pouvez changer le fichier de configuration que vous souhaitez lire avec l'argument sans changer la destination de chargement de config avec l'instruction import à chaque fois. En outre, vous pouvez gérer l'évaluation des expressions et les objets gérés par python. Bien sûr, il y a un inconvénient: il ne peut être utilisé que pour python, mais les variables donnent au fichier de configuration un aspect soigné.
Je l'ai écrit, mais j'ai senti que les gens ne modifieraient normalement pas les paramètres du fichier de configuration et expérimenteraient, que ce soit un fichier yaml ou python. Si vous utilisez la ligne de commande, vous ne pouvez modifier que les paramètres que vous souhaitez modifier avec les arguments, ou vous pouvez les modifier via l'interface graphique de la plate-forme AI. Il semble que la plupart le soient, et j'ai l'impression qu'il n'y a presque aucune possibilité de modifier directement le fichier de configuration.
Quant à savoir si la méthode du fichier python peut être utilisée comme dans cet article, le point honnête est: "Bien qu'elle puisse être utilisée, il est préférable de penser à une autre façon de donner." S'il y a un cas utile avec la méthode de cet article, je l'ajouterai plus tard.
Merci pour la lecture.