467 | | 次にPyTorchを入れていく。やはり公式サイトからスタート |
| 467 | 最初に venv 環境を設定する。上の作業と続けるには deactivate してからおこなうこと。 |
| 468 | |
| 469 | どのpythonを使っているのかを確認してから。ベースとなるpythonは /opt/python 以下のものであること確認してから venv を作成する。 |
| 470 | {{{ |
| 471 | obina@notepc:~$ which python3 |
| 472 | /opt/python/3.10.11/bin/python3 |
| 473 | obina@notepc:~$ python3 -m venv ~/.venv/torch2.0 |
| 474 | obina@notepc:~$ source ~/.venv/torch2.0/bin/activate |
| 475 | (torch2.0) obina@notepc:~$ |
| 476 | }}} |
| 477 | |
| 478 | 次に、venv環境内にPyTorchをインストールする。やはり公式サイトからスタート |
| 601 | 先ほどと同様に、~/.venv/gpyopt を作成してく方針とする。 |
| 602 | {{{ |
| 603 | obina@notepc:~$ which python3 |
| 604 | /opt/python/3.10.11/bin/python3 |
| 605 | obina@notepc:~$ python3 -m venv ~/.venv/gpyopt |
| 606 | obina@notepc:~$ source ~/.venv/gpyopt/bin/activate |
| 607 | (gpyopt) obina@npc:~$ |
| 608 | }}} |
| 609 | pipをupdateした後で、GPyOptを入れる |
| 610 | {{{ |
| 611 | (gpyopt) obina@notepc:~$ pip install --upgrade pip |
| 612 | ... |
| 613 | (gpyopt) obina@notepc:~$ pip install GPyOpt numpy==1.23.1 notebook matplotlib==3.1.3 |
| 614 | ... |
| 615 | }}} |
| 616 | |
| 617 | notebookのエンジンをブラウザ無しで起動する |
| 618 | {{{ |
| 619 | (gpyopt) obina@npc:~$ jupyter notebook --no-browser |
| 620 | .... |
| 621 | Or copy and paste one of these URLs: |
| 622 | http://localhost:8888/?token=91bde12e208d9c0fc57a9e23ee78264f5da132cee93f0d09 |
| 623 | }}} |
| 624 | 最後に出てくる{{{ http://... }}} URLをPCのブラウザで開く。 |
| 625 | |
| 626 | ここではサンプルとして、加速器学会の例 https://www.pasj.jp/web_publish/pasj2021/proceedings/PDF/WEOB/WEOB03_oral.pdf をそのまま実行する。 |
| 627 | |
| 628 | {{{ |
| 629 | import numpy as np |
| 630 | import GPy |
| 631 | import GPyOpt |
| 632 | |
| 633 | def targ_func(x): |
| 634 | val = np.cos(2.3*x) + 0.5*x |
| 635 | return val |
| 636 | |
| 637 | #__main__ |
| 638 | bounds = [{'name': 'x', 'type': 'continuous', 'domain': (0,10)}] |
| 639 | |
| 640 | # ベイズ推定用のオブジェクト作成 |
| 641 | myBopt = GPyOpt.methods.BayesianOptimization(f=targ_func, |
| 642 | domain=bounds, |
| 643 | initial_design_numdata=5, |
| 644 | acquisition_type='LCB') |
| 645 | |
| 646 | # 最適化実行 |
| 647 | myBopt.run_optimization(max_iter=15) |
| 648 | |
| 649 | # 結果表示 |
| 650 | print(myBopt.x_opt, myBopt.fx_opt) |
| 651 | |
| 652 | # プロット |
| 653 | myBopt.plot_acquisition() |
| 654 | myBopt.plot_convergence() |
| 655 | }}} |
| 656 | |
| 657 | |
| 658 | Notebookの様子はこんな感じ |
| 659 | |
| 660 | [[Image(GPyOpt_LCB3.png, 50%)]] |
| 661 | |
| 662 | |
| 663 | LCBを使った場合の結果 |
| 664 | |
| 665 | [[Image(GPyOpt_LCB1.png, 30%)]] |
| 666 | [[Image(GPyOpt_LCB2.png, 30%)]] |
| 667 | |
| 668 | |
| 669 | EIを使った場合の結果 |
| 670 | |
| 671 | [[Image(GPyOpt_EI1.png, 30%)]] |
| 672 | [[Image(GPyOpt_EI2.png, 30%)]] |
| 673 | |
| 674 | |