Pythonのargparseモジュールは、コマンドラインオプションを簡単に実装できます。特に、大量のパラメータを用意する必要がある実験などで重宝します。一方で、実験結果とともに使用したパラメータを保存したい状況は結構あります。ここでは、argparseに渡された引数を、人間にも読みやすいJSON形式で保存する方法を紹介します。

まず、argparseでパラメータを設定します。

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--param1", type=str, default="test")
parser.add_argument("--param2", type=int, default=100)
parser.add_argument("--param3", type=float, nargs="+", default=[0.1, 0.2, 0.3])

args = parser.parse_args()

次に、これらの引数をJSON形式で保存します。

import json

with open("./params.json", mode="w") as f:
    json.dump(args.__dict__, f, indent=4)

このコードにより、以下のようなJSONファイルが生成されます。

{
    "param1": "test",
    "param2": 100,
    "param3": [0.1, 0.2, 0.3]
}

ただし、注意点として、JSON出力時にシリアライズできない型が含まれているとエラーを吐くことがあります。その場合、以下のような対処法があります。

  1. objectをstr型に変換する
  2. dump時にdefaultまたはclsを指定することでエンコード方式を指定する

以上が、PythonのargparseとJSONを連携させる基本的な方法です。これにより、実験のパラメータ管理が一層容易になります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です