【发布时间】:2021-12-06 19:57:51
【问题描述】:
尽管我的模型应该有效地使用相同的参数,但我的超调结果却完全不同,这取决于我是使用 hp.Fixed(key, value) 还是仅使用 value(其中 value 是一个 Int)。我已经验证了每个测试的重复运行在instructions for reproducibility 之后产生了相同的结果,并为所有适用的层/初始化器/等设置了种子。即使说明书上说没有必要。
使用hp.Fixed(key, value)
使用value
查看所有超参数表,hp.Fixed 似乎根本没有做任何事情。正在测试所有超参数。
编辑:HyperbandTuner 忽略了我的自定义超模型的超参数,无论其状态如何。
这是有问题的代码:
class MyModel(kt.HyperModel):
def __init__(self, **config):
self.config = config
self.seed = config.get('seed')
def build_model(self):
model = Sequential(name=self.name)
model.add(LSTM(self.units, name='LSTM'))
model.add(Dense(1, name='Output', kernel_initializer=GlorotUniform(seed=self.seed)))
model.compile(loss='mean_squared_error', metrics='mean_squared_error', sample_weight_mode='temporal')
return model
# If the user has supplied the parameter manually, use hp.Fixed()
# Otherwise, use the provided hyperparameter (default)
def _param(self, key, default=None):
value = self.config.get(key)
if value is not None:
return self.hp.Fixed(key, value)
else:
return default
def build(self, hp):
self.hp = hp
self.units = self._param('units', hp.Int('units', 1, 200, step=5))
return self.build_model()
【问题讨论】:
标签: tensorflow keras hyperparameters