L'idée d'alimenter le fichier de configuration avec un fichier python au lieu de yaml

n3215e416cf319a3a.jpg

Entrée de la configuration dans le fichier yml

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.

Entrée de configuration dans un fichier python

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é.

Pouvez-vous vraiment l'utiliser?

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.

Les références

Recommended Posts

L'idée d'alimenter le fichier de configuration avec un fichier python au lieu de yaml
Vérifier l'existence du fichier avec python
Convertir le code de caractère du fichier avec Python3
[Note] Importation de fichiers dans le répertoire parent en Python
Python> Lire à partir d'une chaîne multiligne au lieu d'un fichier> io.StringIO ()
Extraire le fichier xz avec python
Traitez le contenu du fichier dans l'ordre avec un script shell
L'histoire de la création d'un pilote standard pour db avec python.
Lisez le fichier en Python avec un chemin relatif depuis le programme
L'histoire de la création d'un module qui ignore le courrier avec python
Créez un programme de jugement de compatibilité avec le module aléatoire de python.
Créer un fichier power simple avec Python
Rechercher le labyrinthe avec l'algorithme python A *
Lisons le fichier RINEX avec Python ①
Créer une machine virtuelle avec un fichier YAML (KVM)
[python] [meta] Le type de python est-il un type?
[Python] Récupère le code de caractère du fichier
L'histoire du traitement A du blackjack (python)
J'ai créé un fichier de configuration avec Python
[Python3] Comprendre les bases des opérations sur les fichiers
L'histoire de la création d'un robot LINE pour le petit-déjeuner d'une université de 100 yens avec Python
[Explication AtCoder] Contrôlez les problèmes A, B, C d'ABC182 avec Python!
Quel est le fichier XX à la racine d'un projet Python populaire?
Calculer l'itinéraire le plus court d'un graphe avec la méthode Dyxtra et Python
Un mémo organisé en renommant les noms de fichiers dans le dossier avec python
[Introduction à Python] Comment trier efficacement le contenu d'une liste avec le tri par liste
Calculez la probabilité d'être une pièce de calmar avec le théorème de Bayes [python]
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
[Explication AtCoder] Contrôle ABC184 Problèmes A, B, C avec Python!
nginxparser: essayez d'analyser le fichier de configuration nginx avec Python
[AtCoder] Résoudre un problème de ABC101 ~ 169 avec Python
Comment lire un fichier CSV avec Python 2/3
[Python] Récupérez les fichiers dans le dossier avec Python
Préparer l'environnement d'exécution de Python3 avec Docker
Mathématiques Todai 2016 résolues avec Python
[Note] Exportez le html du site avec python.
Récupérer l'appelant d'une fonction en Python
Vérifiez la date du devoir de drapeau avec Python
Résolvez A ~ D du codeur yuki 247 avec python
Écrire une note sur la version python de python virtualenv
[Python] Résumé des opérations sur les fichiers S3 avec boto3
Enregistrer l'objet dans un fichier avec pickle
Sortie sous la forme d'un tableau python
Créer un fichier au format Photoshop (.psd) avec python
Lire ligne par ligne à partir d'un fichier avec Python
Prise en compte des forces et faiblesses de Python
Je veux écrire dans un fichier avec Python
Ouvrir la boîte de dialogue de fichier avec l'interface graphique Python (tkinter.filedialog)
[Python] Déterminez le type d'iris avec SVM
Obtenez la date de mise à jour du fichier de mémorandum Python.
Différentes façons de lire la dernière ligne d'un fichier csv en Python
[Explication AtCoder] Contrôlez les problèmes A, B, (C), D de ABC165 avec Python!
[Explication AtCoder] Contrôlez les problèmes A, B, C, D d'ABC183 avec Python!
Autour de l'authentification de PyDrive2, un package pour faire fonctionner Google Drive avec Python
Dessinez une ligne de pliage / diagramme de dispersion avec python matplotlib pour fichier CSV (2 colonnes)