如何解决强化学习的超参数调整
我有几种强化学习算法的实现。所有实现都使用 tensorflow 2,以及使用 tf.GradientTape
包裹在 tf.function
中的自定义训练循环。每个代理都有一组 5-10 个超参数 + 优化器超参数(学习率、epsilon、beta1、beta2 等)。因此,可以说平均而言,我一次至少要调整 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 个实验值?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。