ArgparserとConfigparser
Deep Learning関連のプログラムを試していると、やたらと設定パラメタが多い。 これまではargparseを使ってきたけど、コードが煩雑になるのでconfigファイルの扱い方を調べてみた。
argparse
- まずはargparseの基本的な使い方。
import argparse parser = argparse.ArgumentParser() parser.add_argument('--hoge', action='store', type=int, default=0) args = parser.parse_args() print('hoge:', args.hoge) # python3 xxx.py --map 2 #=> 'hoge: 2'
ConfigParser
- 次のようなconfig.iniファイルがあるとする。
- 基本的にはセクションとパラメタ名を書いていくだけ。
- 注意点として,値がブランクのものは,hoge=Noneではなく,'='を書かずにhogeだけ。
# config.ini [model] ; Section名 type = MLP input_size = 81 output_size = 81 hidden_sizes = 64,32 [learning] data_file = /home/hoge/project/data/xxx.csv train_ratio = 0.8 n_epoch = 30 lr = 0.0001 hoge # Noneの場合は'='を書かない
- 使う側の例
import configparser if __name__ == '__main__': config = configparser.ConfigParser() config.read('./config.ini') # Parameters train_ratio = config.getfloat('learning', 'train_ratio') lr = config.getfloat('learning', 'lr') n_epoch = config.getint('learning', 'n_epoch') file_path = config.get('learning', 'data_file') # Make model and set optimizer if config.get('model','type') == 'MLP': input_size = config.getint('model', 'input_size') output_size = config.getint('model', 'output_size') hidden_sizes = list(map(int, config.get('model', 'hidden_sizes').split(','))) model = models.MLP(input_size, output_size, hidden_sizes) ...