我正在使用来自 Ray/RLLib 的 DQN 代理。为了更深入地了解训练过程的进展情况,我想访问 Adam-Optimizer 的内部状态,例如可视化梯度的运行平均值如何随时间变化。请参阅下面的最小代码片段以进行说明。
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
找不到 Adams 状态。
可能这只是我对 Rays 架构的误解。那么,任何人都可以帮助我吗?
谢谢你,祝你有美好的一天!