用于强化学习的超参数调优

jjhzyzn0  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(244)

我有几个强化学习算法的实现。所有的实现都使用tensorflow 2,自定义的训练循环使用 tf.GradientTape 裹着 tf.function . 每个代理都有一组5-10个超参数+优化器超参数(学习率、ε、β1、β2等)。所以可以说,平均而言,我一次至少要调整9个超参数。下面是一个使用a2c代理类的示例:

hparams = {
    'learning_rate': 3e-4,
    'epsilon': 1e-5,
    'beta_1': 0.9,
    'beta_2': 0.99,
    'entropy_coefficient': 0.01,
    'value_loss_coefficient': 0.5,
    'clip_norm': 0.5,
    'n_steps': 5,
}
agent = A2C(**hparams)

典型的列车步进法如下所示:

@tf.function
def train_step(self):
    batch = states, actions, rewards, dones = self.get_batch()
    with tf.GradientTape() as tape:
        model_outputs = self.model(states)
        loss = self.calculate_loss(batch, model_outputs)
    self.model.optimizer.minimize(loss, self.model.trainable_variables, tape=tape)

我检查了hparams api和keras tuner,它们只有在我使用函数api进行培训时才兼容 tf.keras.Model.fit() 但事实并非如此。通过查看tensorflow文档,我没有发现任何有用的信息。
问题是
哪种调优api可用于内部的自定义tensorflow循环 tf.function 没有典型的不兼容错误 failed to convert object <incompatible tuner object> to tensor ... ?
如果有,在我提供的示例中使用它的最小演示是什么,每个示例都有10个实验值?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题