2つ以上の設定を一度に実行する
train_configをリスト形式で書く¶
train_config
は、リスト形式にすることもできます。
config.py
として、以下を保存してください。
train_config_1 = { 'dataset_config': { 'loader_config': { 'name': 'iris', }, }, 'model_config': { 'name': 'SklearnLogisticRegression', 'init_kwargs': { 'penalty': 'l2', }, 'evaluate_kwargs': { 'cross_val_iterator': 'KFold@sklearn.model_selection', 'cross_val_iterator_kwargs': { 'shuffle': True, 'random_state': 0, 'n_splits': 10, }, }, 'model_type': 'multiple_classifier', }, 'evaluate_enabled': True, 'fit_model_enabled': True, 'dump_result_enabled': True, } train_config_2 = { 'dataset_config': { 'loader_config': { 'name': 'iris', }, }, 'model_config': { 'name': 'SklearnLogisticRegression', 'init_kwargs': { 'penalty': 'l1', }, 'evaluate_kwargs': { 'cross_val_iterator': 'KFold@sklearn.model_selection', 'cross_val_iterator_kwargs': { 'shuffle': True, 'random_state': 0, 'n_splits': 10, }, }, 'model_type': 'multiple_classifier', }, 'evaluate_enabled': True, 'fit_model_enabled': True, 'dump_result_enabled': True, } train_config = [train_config_1, train_config_2]
train_config_1
がL2正則化項付きロジスティック回帰のiris分類器、train_config_2
がL1正則化項付きロジスティック回帰のiris分類器です。
最後に、train_config
をtrain_config_1
,train_config_2
を要素に持つリストにしています。
trainとinspectを実行すると以下のようになります。
$ akebono train $ akebono inspect ### 実行結果 ### trainのログは省略 === scenario summary .. tag: default === ------------------------------------------------------------ train_id: 0 accuracy 0.94667 ------------------------------------------------------------ train_id: 1 accuracy 0.96000
train_id
は、train_config
のインデックス順に自動で振られるidで、各オペレーションを区別するために割り当てられます。
可読性を高める¶
2つ以上を一度に実行したくなる典型的なユースケースとしてパラメータチューニングがあります。
その場合、config.py
には各設定の差分をわかりやすく書いたほうが可読性は高いでしょう。例えば次のように書きます。
import copy train_config_template = { 'dataset_config': { 'loader_config': { 'name': 'iris', }, }, 'model_config': { 'name': 'SklearnLogisticRegression', 'init_kwargs': {}, 'evaluate_kwargs': { 'cross_val_iterator': 'KFold@sklearn.model_selection', 'cross_val_iterator_kwargs': { 'shuffle': True, 'random_state': 0, 'n_splits': 10, }, }, 'model_type': 'multiple_classifier', }, 'evaluate_enabled': True, 'fit_model_enabled': True, 'dump_result_enabled': True, } train_config_1 = copy.deepcopy(train_config_template) train_config_2 = copy.deepcopy(train_config_template) train_config_1['model_config']['init_kwargs']['penalty'] = 'l2' train_config_2['model_config']['init_kwargs']['penalty'] = 'l1' train_config = [train_config_1, train_config_2]
共通の設定をtrain_config_template
と定義しておき、差分を書き換えるコードになっています。
train_config_1
とtrain_config_2
に別オブジェクトを参照させるため、copyモジュールを使っている点に注意してください。
train,inspectの実行結果は最初と同じになります。