我想使用kerastuner框架进行超参数训练。
我该如何选择一个优化器和不同的学习率,并将这些学习率传递给优化器。这是我的model.compile()
方法。
model.compile( loss=BinaryCrossentropy(from_logits=True), optimizer=hp.Choice('optimizer', values=['adam', 'adagrad', 'SGD']), metrics=['accuracy'] )
这段代码一次只能选择一个优化器,并且使用默认的学习率。我想使用hp.Float('lrate', min_value=1e-4, max_value=1e-2, sampling='LOG')
为每个优化器传递学习率。我该如何嵌套它们?
回答:
试试这个方法:
# 选择优化器 optimizer=hp.Choice('optimizer', values=['adam', 'adagrad', 'SGD'])# 对每个优化器的条件判断if optimizer == 'adam': .....elif optimizer == 'adagrad': .....elif optimizer == 'SGD': .....# 现在使用之前的参数编译你的模型model.compile( loss=BinaryCrossentropy(from_logits=True), optimizer=optimizer, metrics=['accuracy'] )