首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras Tuner -调整多个相同的参数

Keras Tuner -调整多个相同的参数
EN

Stack Overflow用户
提问于 2021-04-22 05:06:56
回答 2查看 302关注 0票数 0

我已经构建了我的模型,如果我只调优一个变量,并且不在其他层上重复它,它就可以工作。例如,仅在一个层中调整unit。就像我下面的代码一样,我试图调优多个units,但它不起作用。

代码语言:javascript
复制
def model_builder(hp):
  model = keras.Sequential()

  # Tune the number of units in the first Dense layer
  hp_units_1 = hp.Int('units_1', min_value=32, max_value=512, step=32)
  model.add(keras.layers.Dense(
      units=hp_units_1, 
      input_dim=7,
      activation='relu'))


  hp_units_2 = hp.Int('units_2', min_value=32, max_value=512, step=32)
  model.add(keras.layers.Dense(units=hp_units_2 , activation='relu'))
  model.add(keras.layers.Dense(4, activation='sigmoid'))

  # Tune the learning rate for the optimizer
  # Choose an optimal value from 0.01, 0.001, or 0.0001
  hp_learning_rate = hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])

  model.compile(optimizer=keras.optimizers.Adam(learning_rate=hp_learning_rate),
                loss=keras.losses.MeanSquaredError(),
                metrics=['mse'])

  return model

尽管我使用_1 so不重复键,但它抛出了一个错误。

代码语言:javascript
复制
Invalid model 0/5
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/dist-packages/kerastuner/engine/hypermodel.py", line 104, in build
    model = self.hypermodel.build(hp)
  File "<ipython-input-19-f964baafcc40>", line 5, in model_builder
    hp_units = hp.Int('units_1', min_value=32, max_value=512, step=32)
  File "/usr/local/lib/python3.7/dist-packages/kerastuner/engine/hyperparameters.py", line 744, in Int
    return self._retrieve(hp)
  File "/usr/local/lib/python3.7/dist-packages/kerastuner/engine/hyperparameters.py", line 625, in _retrieve
    return self.values[hp.name]
KeyError: 'units_1'
EN

回答 2

Stack Overflow用户

发布于 2021-04-22 19:11:53

最后,可能由于Colab保存运行时的方式,它在某种程度上使用了带有新关键字的旧关键字(虽然听起来很奇怪)。

因此,为了解决这个问题,我不得不在我的调谐器中添加参数overwrite=True

代码语言:javascript
复制
tuner = kt.Hyperband(model_builder,
                     objective='val_loss',
                     max_epochs=10,
                     factor=3,
                     overwrite=True)
票数 1
EN

Stack Overflow用户

发布于 2021-04-22 09:23:28

错误可能是由于在构建模型时定义的变量造成的。您可能可以在开始构建模型之前定义变量,如下所示并检查结果:

代码语言:javascript
复制
def model_builder(hp):
  hp_units_1 = hp.Int('units_1', min_value=32, max_value=512, step=32)
  hp_units_2 = hp.Int('units_2', min_value=32, max_value=512, step=32)
  # Tune the learning rate for the optimizer
  # Choose an optimal value from 0.01, 0.001, or 0.0001
  hp_learning_rate = hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])
  model = keras.Sequential()      
  model.add(keras.layers.Dense(units=hp_units_1, input_dim=7, activation='relu'))     
  model.add(keras.layers.Dense(units=hp_units_2 , activation='relu'))
  model.add(keras.layers.Dense(4, activation='sigmoid'))
  model.compile(optimizer=keras.optimizers.Adam(learning_rate=hp_learning_rate),
                loss=keras.losses.MeanSquaredError(),
                metrics=['mse'])

  return model
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67203504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档