python - 强化学习的超参数调整
问题描述
我有几种强化学习算法的实现。所有实现都使用 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)
典型的 train step 方法如下所示:
@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 个实验值?
解决方案
推荐阅读
- azure-devops - 如何使用 Azure DevOps 管道表达式检查数组是否包含字符串
- c++ - VC++ 6.0 项目报错“多个操作符”+=" 匹配这些操作数”(已解决)
- java - 大文件处理 - 从故障点恢复
- css - CSS中右括号之前的数字?
- sql - Postgesql 不同计数提高性能
- javascript - nodejs 和 twitter api 错误'错误:错误的 Twitter 流请求:404'
- javascript - WebSocket 握手期间出错意外的响应代码 400
- r - 是否可以在一个盒子内垂直排列两个仪表图?
- linux - 如何使用 avconv 将 ppm 转换为 mp4
- javascript - 使用 setTimeout ( ) 禁用提交按钮,它有效吗?