强化学习教练:保护程序无法还原座席的检查点

时间:2020-10-14 08:08:20

标签: python neural-network reinforcement-learning

我正在通过AWS Sagemaker使用rl coach,并且遇到了我难以理解的问题。

我正在使用AWS Sagemaker进行学习以及针对环境使用AWS Robomaker进行学习,例如DeepRacer中也使用rl教练。实际上,该代码与学习方面的DeepRacer code几乎没有什么不同。但是环境却完全不同。

会发生什么:

  • 图形管理器初始化成功
  • 第一个检查点已生成(并上传到S3)
  • 代理加载第一个检查点
  • 该特工按照第一个策略执行N集
  • 图形管理器获取N集
  • 图形管理器执行1个训练步骤并创建第二个检查点(已上载到S3)
  • 代理无法通过第二个检查点还原模型。

代理程序引发以下异常:Failed to restore agent's checkpoint: 'main_level/agent/main/online/global_step'

回溯指向this rl coach module中发生的错误:

File "/someverylongpath/rl_coach/architectures/tensorflow_components/savers.py", line 93, in <dictcomp>
    for ph, v in zip(self._variable_placeholders, self._variables)
KeyError: 'main_level/agent/main/online/global_step'

我就像Deepracer一样使用patch on rl coach。 补丁中值得注意的一件事是:

-        self._variables = tf.global_variables()
+        self._variables = tf.trainable_variables()

但是它不应该导致'main_level/agent/main/online/global_step' 不在self._variables中吗? 我认为问题在于global_step位于self._variables中,因此不应存在。

因此,对于这个问题,我有些事情不了解,而且我不习惯做教练,所以任何帮助都是有价值的。

  1. 为什么它仅第二次失败? (图管理器是否更改计算图?)
  2. 如何避免global_step出现在self._variables中?

更多信息:

  • 我使用rl-coach-slim 1.0.0tensorflow 1.11.0
  • 请注意,我像Deepracer一样使用patch on rl coach

1 个答案:

答案 0 :(得分:0)

我删除了补丁(从技术上讲,我删除了正在应用它的dockerfile中的patch命令),现在它可以工作了,可以从检查点正确还原模型。