我正在使用keras tuner训练我的LSTM模型。我得到一个错误
当HyperModel.fitobjective
未指定时,www.example.com()的返回值应为单个浮点数。收到的返回值:〈tensorflow.python.keras.callbacks.History object at 0x7fa3e80be710〉of type〈class 'tensorflow.python.keras.callbacks. History'〉.
我不熟悉这个错误,也搜索了一下。我也不是那么熟悉keras调谐器。
我的密码是
x_test = x_test[FeaturesSelected]
totalColumns = len(FeaturesSelected)
callback = EarlyStopping(monitor='val_loss', patience=3)
def build_model(hp):
model=keras.Sequential()
model.add(layers.Flatten(input_shape=(totalColumns,1)))
for i in range(hp.Int('layers',2,8)):
model.add(layers.Dense(units=hp.Int('units_'+str(i),50,100,step = 10),
activation=hp.Choice('act_'+str(i),['relu','sigmoid'])))
model.add(layers.Dense(10,activation='softmax'))
model.compile(optimizer =keras.optimizers.Adam(hp.Choice('learning_rate',values=[1e-2,1e-4])),
loss='mean_absolute_error')
return model
tuner = RandomSearch(build_model,max_trials = 20,executions_per_trial=5)
tuner.search(x_train,y_train,epochs = 10,validation_data=(x_test,y_test),callbacks=[callback])
best_hps=tuner.get_best_hyperparameters(num_trials=1)[0]
best_model = tuner.hypermodel.build(best_hps)
history = best_model.fit(img_train, label_train, epochs=50, validation_split=0.2)
val_acc_per_epoch = history.history['val_accuracy']
best_epoch = val_acc_per_epoch.index(max(val_acc_per_epoch)) + 1
hypermodel = tuner.hypermodel.build(best_hps)
hypermodel.fit(x_train,y_train, epochs=best_epoch, validation_split=0.2)
test_pred = hypermodel.predict(x_test)
1条答案
按热度按时间byqmnocz1#
Randomsearch对象(以及所有其他kerastuner.Tuner对象)利用www.example.com()返回的History对象model.fit来比较不同的试验结果。如果没有为RandomSearch对象指定目标,则假定您通过compile()'metrics'参数指定了感兴趣的指标。但是,如果你没有指定一个指标参数- model.fit()将返回一个默认指标列表。要解决这个问题,你可以指定模型的指标和Randomsearch调优器的目标,如下所示:
并且,为了最大化验证步骤的准确度结果:
或者,为了在训练期间最大化准确性:
目标参数可以是任何单个指标,也可以是一个指标列表。如果您提供了一个指标列表,则调优器将引用所提供的所有指标的总和。