如何评估kerastuner.search的模型性能?

问题描述 投票:0回答:2

我目前正在尝试通过显示每个时期的 val_mse 来可视化我的预测模型的性能。过去适用于

model.fit()
的代码不适用于
tuner.search()
。谁能给我提供一些这方面的指导。谢谢你。

之前的代码:

import matplotlib.pyplot as plt

def plot_model(history):
    hist = pd.DataFrame (history.history)
    hist['epoch'] = history.epoch
    
    plt.figure()
    plt.xlabel('Epoch')
    plt.ylabel('Mean Absolute Error')
    plt.plot(hist['epoch'], hist['mae'],
           label='Train Error')
    plt.plot(hist['epoch'], hist['val_mae'],
           label = 'Val Error')
    plt.legend()
    plt.ylim([0,20])
    plt.figure()
    plt.xlabel('Epoch')
    plt.ylabel('Mean Square Error')
    plt.plot (hist['epoch'], hist['mse'],
           label='Train Error')
    plt.plot (hist['epoch'], hist['val_mse'],
           label = 'Val Error')
    plt.legend()
    plt.ylim([0,400])
    
plot_model(history)

keras.tuner 代码:

history = tuner.search(x = normed_train_data,
             y = y_train,
             epochs = 200,
             batch_size=64,
             validation_data=(normed_test_data, y_test),
             callbacks = [early_stopping])
python tensorflow keras deep-learning
2个回答
0
投票

在使用

tuner.search
搜索最佳型号之前,您需要安装并导入
keras_tuner
:

!pip install keras-tuner --upgrade
import keras_tuner as kt
from tensorflow import keras

然后,在模型定义中定义超参数(hp),例如如下:

def build_model(hp):
  model = keras.Sequential()
  model.add(keras.layers.Dense(
      hp.Choice('units', [8, 16, 32]),  # define the hyperparameter
      activation='relu'))
  model.add(keras.layers.Dense(1, activation='relu'))
  model.compile(loss='mse')
  return model

初始化调谐器:

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

现在,开始搜索并使用

tuner.search
:

获得最佳模型
tuner.search(x = normed_train_data,
             y = y_train,
             epochs = 200,
             batch_size=64,
             validation_data=(normed_test_data, y_test),
             callbacks = [early_stopping])

best_model = tuner.get_best_models()[0]

因此,现在您可以使用此

best_model
来使用您的数据集训练和评估模型,并且损失将显着减少。

请检查this链接作为更多详细信息的参考。


0
投票

Keras Tuner 不是这样工作的!

还有更多“KerasTuner”友好的方式通过使用 Tensorboard 回调来可视化训练曲线。

像这样定义张量板回调。

tensorboard_callback = keras.callbacks.TensorBoard("/content/tb_logs") # The logs will be written to "/content/tb_logs".

像这样修改你的tuner.search()方法。

tuner.search(
    x = normed_train_data,
    y = y_train,
    epochs = 200,
    batch_size=64,
    validation_data=(normed_test_data, y_test),
    callbacks = [early_stopping, tensorboard_callback]
)

用于在 Python Notebook (.ipynb) 中运行此代码。

%load_ext tensorboard
%tensorboard --logdir /content/tb_logs

欲了解更多信息,请访问:https://keras.io/guides/keras_tuner/visualize_tuning/

© www.soinside.com 2019 - 2024. All rights reserved.