Keras Tuner & Transfer Learning

1 min

このツールを使えば、モデルの学習がもっと速くなりそうです。

Keras Tuner

これは別途インストールが必要で、Python 3.6+とTensorFlow 2.0+が必要です。

pip install keras-tuner --upgrade

クイックスタートの例

from tensorflow import keras
from tensorflow.keras import layers


def build_model(hp):
    model = keras.Sequential()
    model.add(layers.Flatten())
    model.add(
        layers.Dense(
            # Define the hyperparameter.
            units=hp.Int("units", min_value=32, max_value=512, step=32),
            activation="relu",
        )
    )
    model.add(layers.Dense(10, activation="softmax"))
    model.compile(
        optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"],
    )
    return model

次にtunerを定義します

tuner = kt.RandomSearch(
    build_model,
    objective='val_loss',
    max_trials=5)

あとは開始するだけです

tuner.search(x_train, y_train, epochs=5, validation_data=(x_val, y_val))
best_model = tuner.get_best_models()[0]

詳細を見てみましょう

実際、上記の例は私がやりたいこととは少し違います。

私がやりたいのはモデルパラメータの調整であり、ハイパーパラメータではありません。

ハイパーパラメータが不要な場合、やるべきことはおそらく再fitすること、つまり一般的に言われるtransfer learningです。

Transfer Learning

前回の記事で少し書きました。

改めて見直してみると、本当にとてもシンプルでした。

学習させたいパラメータを固定して、再度fitを呼び出すだけです。