| 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 | |