Coffee Break Script

いわゆる息抜き。

ハイパーパラメータを管理したい

機械学習ディープラーニングを実験していると、どうしても避けられないのがハイパーパラメータ周りの処理。

ちゃんとグローバル変数とかを書いて処理したいものの、Pythonは変数の名前空間が比較的ふわふわしているので、そのあたりをサポートする関数を用意しました。

概略としては、グローバル変数として持っておきたいものをYAMLまたはJSON形式で準備し、そのファイルを読み込み、グローバルな辞書型の変数として持っておくことで、プログラム中のどこからでも呼び出せるようにするというものです。デフォルトの値はload_params関数の中で直接定義できるようにしていて、もしこれらと同じ名前の変数がyaml/jsonで与えられた場合には、デフォルト値を上書き更新するようになっています。つまり、yaml/jsonファイル自体が実験条件の履歴になります。(なお、yamlファイルはコメントアウトが可能なので、jsonよりもyaml推奨です。)

自分は、実行日時をパラメータとして辞書型変数に格納しておくようにして、main関数の一番最後でパラメータを格納した辞書変数をjson/yamlでファイルに出力するようにしています。こうしておけば、いつ、どのパラメータで実験を実行したか後から見返すことができるようになるので。

具体的なimportの方法、呼び出し方、yaml/jsonの書き方は以下を参照してください。

Utility function to manage global variables such …