【问题标题】:Access optimizers internal state访问优化器内部状态
【发布时间】:2019-02-12 14:48:06
【问题描述】:

我正在使用来自 Ray/RLLib 的 DQN 代理。为了更深入地了解训练过程的进展情况,我想访问 Adam-Optimizer 的内部状态,例如可视化梯度的运行平均值如何随时间变化。请参阅下面的最小代码 sn-p 进行说明。

    agent = DQNAgent(config=agent_config, env=self.env)

    episode_results = []

    for i in range(int(budget)):
        # add epoch results to result list
        episode_results.append(agent.train())
        # add internal values of the optimizer
        episode_results[-1]['g_avg'] = None
        episode_results[-1]['g_square_avg'] = None

但是,我无法访问 Adam 优化器。由于它是使用代理策略图的“优化器”函数构建的,然后存储在 _optimizer 成员变量中(根据 TFPolicy_Graph 构造函数),我的直觉是通过

agent._policy_graph._optimizer

。 来自 dqn 代理策略图:

@override(TFPolicyGraph)
def optimizer(self):
       return tf.train.AdamOptimizer(
            learning_rate=self.config["lr"],
            epsilon=self.config["adam_epsilon"])  

来自 TFPolicyGraph 构造函数:

self._optimizer = self.optimizer()

这只是给了我:

AttributeError: type object 'DQNPolicyGraph' has no attribute '_optimizer'

Docs 建议使用agent.local_evaluator,但是我在其中找不到亚当斯州。

可能这只是我对 Rays 架构的误解。那么,谁能帮我解决这个问题?

谢谢你,祝你有美好的一天!

【问题讨论】:

    标签: tensorflow optimization ray adam


    【解决方案1】:

    TF 优化器对象可通过agent.get_policy()._optimizer 访问。

    您之前看到“无属性_优化器”的原因是因为_policy_graph 是策略类,而不是对象实例,它存在于local_evaluator.policy_map 或通过agent.get_policy() 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-20
      • 1970-01-01
      • 2019-03-24
      • 2020-05-20
      • 2021-07-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      相关资源
      最近更新 更多