Keras tunerの使い方

Keras Tunerは、TensorFlowのモデルハイパーパラメータの最適化ライブラリです。以下は、Keras Tunerを使用してモデルを構築し、ハイパーパラメータの最適化を行う一般的な手順です。

  1. ライブラリをインストールする
pip install keras-tuner

2. ライブラリをインポートする

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
from kerastuner.tuners import RandomSearch

3. モデルを定義する

def build_model(hp):
    model = keras.Sequential()
    model.add(layers.Dense(units=hp.Int('units', min_value=32, max_value=512, step=32), activation='relu'))
    model.add(layers.Dense(10, activation='softmax'))
    model.compile(optimizer=keras.optimizers.Adam(hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
    return model

4. ハイパーパラメータの探索範囲を設定する

tuner = RandomSearch(
    build_model,
    objective='val_accuracy',
    max_trials=5,
    executions_per_trial=3,
    directory='my_dir',
    project_name='helloworld')

上記の例では、最適化対象のモデルとして、build_model関数が定義されています。hp.Int関数により、unitsというパラメータについて、32から512までの範囲で、32単位で探索するように設定しています。また、hp.Choice関数により、learning_rateというパラメータについて、[1e-2, 1e-3, 1e-4]のいずれかを採用するように設定しています。RandomSearchクラスは、ランダムにハイパーパラメータの値を選択し、探索を行います。objective引数には、最適化の対象となる指標を指定します。この例では、検証データのaccuracyを最大化するように指定しています。

5. 探索を実行する

tuner.search(x_train, y_train, epochs=5, validation_data=(x_val, y_val))

上記の例では、searchメソッドにより、探索を実行しています。x_trainおよびy_trainは、トレーニングデータの入力と出力を指定します。epochs引数には、トレーニングのエポック数を指定します。validation_data引数には、検証データの入力と出力を指定します。探索が完了すると、最適なハイパーパラメータの組み合わせを出力することができます。

tuner.results_summary()

最適なハイパーパラメータを含む情報が表示されます。

以上が、Keras Tunerの一般的な使用方法です。ハイパーパラメータの探索方法や探索範囲は、問題に応じて適宜設定する必要があります。

Keras

Posted by vastee