{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 既存の計算結果を読み込んで実行する\n", "\n", "以下の流れで、既存のaction ID(パラメータ)とその評価値を読み込み、PHYSBO を実行することができます。\n", "\n", "1. 外部ファイルを読み込み、既存のaction ID(パラメータ)と評価値を読み込む。\n", "2. action ID(パラメータ)と評価値をPHYSBOに登録する。\n", "3. PHYSBO から次に実行するパラメータを得る。\n", "\n", "時間制限の関係上、PHYSBO をずっと開いたままにできないため、インタラクティブに実行できないといった場合に、利用することができます。\n", "\n", "## 探索候補データの準備\n", "\n", "これまでのチュートリアルと同様、データセットファイル [s5-210.csv](https://raw.githubusercontent.com/issp-center-dev/PHYSBO/master/examples/grain_bound/data/s5-210.csv) を `data` ディレクトリ以下に保存し、次のように読み出します。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2020-12-04T06:17:28.657314Z", "start_time": "2020-12-04T06:17:27.967614Z" } }, "outputs": [], "source": [ "import physbo\n", "\n", "import numpy as np\n", "\n", "\n", "def load_data():\n", " A = np.asarray(np.loadtxt('data/s5-210.csv',skiprows=1, delimiter=',') )\n", " X = A[:,0:3]\n", " t = -A[:,3]\n", " return X, t\n", "\n", "X, t = load_data()\n", "X = physbo.misc.centering(X)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 事前に計算したデータの用意\n", "\n", "上述の `load_data` 関数では全てのXとtが格納されています。ここでは事前に計算したとして、actoin IDのリストをランダムに20個取得し、その評価値を得ます。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[12623, 13781, 1326, 8484, 16753, 15922, 13268, 9938, 15617, 11732, 7157, 16537, 4563, 9235, 4579, 3107, 8208, 17451, 4815, 10162]\n" ] } ], "source": [ "import random\n", "random.seed(0)\n", "calculated_ids = random.sample(range(t.size), 20)\n", "print(calculated_ids)\n", "t_initial = t[calculated_ids]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## action ID(パラメータ)と評価値をPHYSBOに登録\n", "\n", "policyの初期変数 `initial_data` に `calculated_ids` と `t[calculated_ids]` をリストとして登録します。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# policy のセット \n", "policy = physbo.search.discrete.policy(test_X=X, initial_data=[calculated_ids, t_initial])\n", "\n", "# シード値のセット \n", "policy.set_seed( 0 )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PHYSBO から次に実行するパラメータを取得\n", "\n", "ベイズ最適化を行い、次の候補点を得ます。" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2020-12-04T06:17:28.674407Z", "start_time": "2020-12-04T06:17:28.669875Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Start the initial hyper parameter searching ...\n", "Done\n", "\n", "Start the hyper parameter learning ...\n", "0 -th epoch marginal likelihood -20.09302189053099\n", "50 -th epoch marginal likelihood -23.11964735598211\n", "100 -th epoch marginal likelihood -24.83020118385076\n", "150 -th epoch marginal likelihood -25.817906570042602\n", "200 -th epoch marginal likelihood -26.42342027124426\n", "250 -th epoch marginal likelihood -26.822598600211865\n", "300 -th epoch marginal likelihood -27.10872736571494\n", "350 -th epoch marginal likelihood -27.331572599126865\n", "400 -th epoch marginal likelihood -27.517235815448124\n", "450 -th epoch marginal likelihood -27.67892333553869\n", "500 -th epoch marginal likelihood -27.82299469827059\n", "Done\n", "\n", "[73] [[-1.6680279 -1.46385011 1.68585446]]\n" ] } ], "source": [ "actions = policy.bayes_search(max_num_probes=1, simulator=None, score=\"TS\", interval=0, num_rand_basis = 5000)\n", "print(actions, X[actions])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "得られた候補点について外部で計算を行い、ファイルにactionsとそのスコアを登録する。再びファイルを読み込み、ベイズ最適化を実行し次の候補点を得るというプロセスを繰り返すことで、ベイズ最適化を進めることができます。" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 1 }