RandomizedSearchCVでハイパーパラメータの検索時にRunTimeError | そう備忘録

RandomizedSearchCVでハイパーパラメータの検索時にRunTimeError

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
RunTimeErrorメッセージ

環境

発生した環境は以下の通り。

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_)
sklearn _search.py の修正

どうやら、より厳密にエラーチェックをするようにした事で RunTimeError が発生するようになってしまっていた模様。

尚、今回の修正はあくまで対処療法に過ぎないと思っているが、とりあえず RunTimeError は解消された。

以上で今回の記事は終了とする。

最後に

この記事が何処かで誰かの役に立つことを願っている。

尚、当記事中の商品へのリンクはAmazonアソシエイトへのリンクが含まれています。Amazonのアソシエイトとして、当メディアは適格販売により収入を得ていますのでご了承ください。

souichirou

やった事を忘れない為の備忘録 同じような事をやりたい人の参考になればと思ってブログにしてます。 主にレゴ、AWS(Amazon Web Services)、WordPress、Deep Learning、RaspberryPiに関するブログを書いています。 仕事では工場に協働ロボットの導入や中小企業へのAI/IoT導入のアドバイザーをやっています。 2019年7月にJDLA(一般社団法人 日本デイープラーニング協会)Deep Learning for GENERALに合格しました。 質問は記事一番下にあるコメントかメニュー上部の問い合わせからお願いします。

質問やコメントや励ましの言葉などを残す

名前、メール、サイト欄は任意です。
またメールアドレスは公開されません。