在这里,您可以找到通过 keras 训练 LSTM 并通过 keras 调谐器、贝叶斯选项对其进行调整的代码:
#2 epoch con 20 max_trials
from kerastuner import BayesianOptimization
def build_model(hp):
model = keras.Sequential()
model.add(keras.layers.LSTM(units=hp.Int('units',min_value=8,
max_value=64,
step=8),
activation='relu', input_shape=x_train_uni.shape[-2:]))
model.add(keras.layers.Dense(1))
model.compile(loss='mae', optimizer=keras.optimizers.Adam(
hp.Choice('learning_rate',
values=[1e-2, 1e-3, 1e-4])),
metrics=['mae'])
return model
# define model
bayesian_opt_tuner = BayesianOptimization(
build_model,
objective='mae',
max_trials=20,
executions_per_trial=1,
directory=os.path.normpath('C:/keras_tuning'),
project_name='timeseries_temp_ts_test_from_TF_ex',
overwrite=True)
EVALUATION_INTERVAL = 200
EPOCHS = 2
bayesian_opt_tuner.search(train_univariate, #X_train, y_train,
epochs=EPOCHS,
validation_data=val_univariate,
validation_steps=50,
steps_per_epoch=EVALUATION_INTERVAL
#batch_size=int(len(X_train)/2)
#validation_split=0.2,verbose=1)
)
我使用温度数据集完成了它,同时更改了时期和超参数组合。我认为这也取决于您正在使用的数据集,对于我快速尝试过的数据集(没有代表性结果,因为它应该重复足够多次以获得每种情况的结果分布),我没有发现太大差异(我们应该检查一下通过假设检验器得出可靠的结论),但您可以在那里玩它。我的快速结果:
20 个 epoch,2 个超参数组合:
2 个 epoch,20 个超参数组合:
