RandomizedSearchCVでハイパーパラメータの検索時にRunTimeError
Contents
RandomizedSearchCV
RandomizedSearchCV で Deep Neural Network の最適なハイパーパラメータの検索を行った所、以下のエラーメッセージが表示されて Cannot Clone object の RunTimeError が発生した。
RuntimeError: Cannot clone object <tensorflow.python.keras.wrappers.scikit_learn.KerasRegressor object at 0x000001CEEFBA8550>, as the constructor either does not set or modifies parameter learning_rate

環境
発生した環境は以下の通り。
OS | Windows 10 Home(64 Bit) |
Anacond | conda 4.10.3 |
Python | 3.8.5 |
Keras | Keras 2.4.3 Keras-Applications 1.0.8 Keras-Preprocessing 1.1.2 |
scikit-learn | Ver 0.24.2 |
numpy | 1.20.3 |
対処方法
scikit-learn の不具合なのでバージョンを 0.21.2 にダウングレードすれば解消するとの海外の記事もあったが、解決はしなかった。
Python の sklearnライブラリーの _search.py を修正した。
保存場所は環境によって異なると思うが自分は Anaconda 環境なので以下の Path のファイルを修正した。
C:\Users\ユーザ名\Anaconda3\Lib\site-packages\sklearn\model_selection\_search.py
876ー877 行目を以下の様に修正した。
修正前
self.best_estimator_ = clone(clone(base_estimator).set_params(
**self.best_params_))
↓
修正後
self.best_estimator_ = clone(base_estimator).set_params(
**self.best_params_)

どうやら、より厳密にエラーチェックをするようにした事で RunTimeError が発生するようになってしまっていた模様。
尚、今回の修正はあくまで対処療法に過ぎないと思っているが、とりあえず RunTimeError は解消された。
以上で今回の記事は終了とする。
この記事が何処かで誰かの役に立つことを願っている。
尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。
最近のコメント