追記(2017/10/3): このエラーが発生していたのは前提パッケージとなるGPyなんですが、修正版が早速公開されたようです。 以下の記述は筆者がタイミング悪く修正される前のパッケージをインストールしたときのものです。 なので似たような事例があった場合の解決方法として残しておきます。 GPyOptをインストールする際は以下のコマンドを入力してください。
pip install GPy
pip install GPyOpt
余談ですがすでにparamzはバージョン0.8.5になっていて更新が早い……。
みなさん、機械学習楽しんでますか? そろそろ機械学習にも慣れてきてハイパーパラメーターチューニングに手を出そうと考えてる人も多いのでは? さてそんな人なら耳には入っているであろうパラメーターをベイズ推定によりサーチするパッケージの一つGPyOptについて。
まずはGPyをインストール
GPyOptはとても便利なパッケージなためインストールも簡単……ではありません。 まずはGPyというパッケージをインストールしなければなりません。 これは次のコマンドをコマンドプロンプトに打ち込みましょう。
管理者権限が必要な場合は sudo もつけてくださいね?
GPyOptをインストール……できない!
問題はここから。 次に以下のコマンドを実行します。
すると次のエラーが。
Collecting GPyOpt
Using cached GPyOpt-1.0.3.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/setup.py", line 6, in <module>
from GPyOpt.__version__ import __version__
File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/__init__.py", line 7, in <module>
from GPyOpt.core.task.space import Design_space
File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/__init__.py", line 4, in <module>
from .bo import BO
File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/bo.py", line 8, in <module>
from ..core.task.cost import CostModel
File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/task/__init__.py", line 4, in <module>
from .objective import SingleObjective
File "/private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/GPyOpt/core/task/objective.py", line 8, in <module>
import GPy
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/__init__.py", line 6, in <module>
from . import core
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/core/__init__.py", line 4, in <module>
from GPy.core.model import Model
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/core/model.py", line 3, in <module>
from .parameterization.priorizable import Priorizable
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/GPy/core/parameterization/__init__.py", line 9, in <module>
from paramz import ties_and_remappings, ObsAr
ImportError: cannot import name 'ties_and_remappings'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/62/7q4x8lld00d5mb54jglx5nnw0000gn/T/pip-build-5e3ix6yi/GPyOpt/
paramzの中にties_and_remappingsがないよというメッセージが。 あわててparamzの公式ドキュメントをみてみました。 ドキュメントの中にはこの関数はあるようです。
モジュールのバージョンが違った
ふとここでモジュールのバージョン違いでは?と考えバージョンを確認しました。
Name: paramz
Version: 0.8.3
Summary: The Parameterization Framework
Home-page: https://github.com/sods/paramz
Author: Max Zwiessele
Author-email: ibinbei@gmail.com
License: BSD 3-clause
Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages
Requires: scipy, six, decorator, numpy
公式ドキュメントは0.7.4のものでした。 どうやらバージョンアップの際になくなったらしいです。 なのでいったんバージョンを下げて再インストール。
pip install paramz==0.7.4
今度はGPyOptインストール成功
もう一度GPyOptをインストール。
今度はうまくいきました! ちなみにアップグレードオプションをつけるとparamzが0.8.3に戻りますが0.7.4のままにするほうが無難だと思います。
ところで、なぜGPyOptはrequirement.txtをつけていないのだろうか? それがあればさきにpipでGPyを入れなければいけないという面倒なことをしなくて済むと思うのですが。
ちなみにparamz 0.8.3の公開日は2017/09/30だそう。 どおりで色々検索しても出ないわけだ……。
それではまた次の記事でお会いしましょう。最後までご覧くださりありがとうございました。