モデルパラメータのチューニング
いよいよ、モデルにさまざまなパラメータを試してパフォーマンスを確認してみましょう。
前の演習で作成した create_model() 関数は、すぐに使える状態です。
RandomizedSearchCV オブジェクトの学習は時間がかかるため、本来得られる結果は show_results() 関数内で表示されるようになっています。
すべて作り終えたあとに、コンソールで自分で random_search.fit(X,y) を試して動作確認しても構いませんが、その場合は演習のタイムアウトになる可能性が高いです(試すときはコードを先にコピーしておくか、進捗を失うおそれがあります)。
KerasClassifier オブジェクトを作成するときに、任意指定の epochs と batch_size を設定する必要はありません。これらは random search に params として渡しており、すでにその方法で動作します。
この演習はコースの一部です
Kerasで学ぶIntroduction to Deep Learning
演習の手順
tensorflow.kerasの scikit_learn ラッパーからKerasClassifierをインポートします。KerasClassifierのインスタンス化には、作成済みのcreate_model関数を使います。activationは 'relu' と 'tanh'、batch_sizeは 32、128、256、epochsは 50、100、200、learning_rateは 0.1、0.01、0.001 を指定します。RandomizedSearchCVを作成するときに、変換したmodelと選んだparamsを渡します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import KerasClassifier from tensorflow.keras scikit learn wrappers
from tensorflow.keras.wrappers.____ import ____
# Create a KerasClassifier
model = KerasClassifier(build_fn = ____)
# Define the parameters to try out
params = {'activation': [____, ____], 'batch_size': [____, ____, ____],
'epochs': [____, ____, ____], 'learning_rate': [____, ____, ____]}
# Create a randomize search cv object passing in the parameters to try
random_search = RandomizedSearchCV(____, param_distributions = ____, cv = KFold(3))
# Running random_search.fit(X,y) would start the search,but it takes too long!
show_results()