我很难弄清楚如何通过keras调谐器函数传递多个参数。我找遍了所有available documentation和与此相关的问题,我找不到任何关于这个特定问题的东西。
我只想通过这个函数传递额外的参数:
def build_model(hp, some_val_1, some_val_2)
总体代码(简化):
import kerastuner as kt
def build_model(hp, some_val_1, some_val_2):
print(some_val_1)
print(some_val_2)
conv1d_val_1 = hp.Int("1-input_units", min_value=32, max_value=1028, step=64)
conv1d_filt_1 = hp.Int("1b-filter_units", min_value=2, max_value=10, step=1)
model.add(Conv1D(conv1d_val_1, conv1d_filt_1, activation='relu', input_shape=input_shape, padding='SAME'))
model.add(Dense(1))
model.compile(loss='mae', optimizer='adam')
return model
model = kt.Hyperband(build_model, objective="val_loss", max_epochs = 10, factor = 3, directory=os.path.normpath(path_save_dir))
model.search(x=x_train, y=y_train, epochs=10, batch_size=500, validation_data=(x_test, y_test), shuffle=True)
尝试#1(我尝试了许多变化)-不起作用:
model = kt.Hyperband(build_model(kt.HyperParameters(), some_val_1, some_val_2), objective="val_loss", max_epochs = 10, factor = 3, directory=os.path.normpath(path_save_dir))
尝试#2(我尝试了许多变化)-不起作用:
model = kt.Hyperband(build_model, some_val_1='1', some_val_2='2',objective="val_loss", max_epochs = 10, factor = 3, directory=os.path.normpath(path_save_dir))
尝试#3(我尝试了许多变化)-不起作用:
model = kt.Hyperband(build_model, args=(some_val_1, some_val_2,),objective="val_loss", max_epochs = 10, factor = 3, directory=os.path.normpath(path_save_dir))
请发送帮助
2条答案
按热度按时间neskvpey1#
您可以创建自己的HyperModel子类来实现这一点,请查看此链接。
示例实现,它将做你正在尝试做的事情:-
swvgeqrz2#
添加一个调整了HyperModel的完整示例(我使用
input_shape
和output_shape
表示some_val_1
和some_val_2
)。