访问优化器内部状态
Access optimizers internal state
我正在使用来自 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' 函数构造的,然后存储在 _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 架构的误解。那么,有人可以帮我吗?
谢谢你,祝你有愉快的一天!
可通过 agent.get_policy()._optimizer
.
访问 TF 优化器对象
您之前看到 "no attribute _optimizer" 的原因是因为 _policy_graph
是策略 class,而不是对象实例,它存在于 local_evaluator.policy_map
中或通过 agent.get_policy()
.
我正在使用来自 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' 函数构造的,然后存储在 _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 架构的误解。那么,有人可以帮我吗?
谢谢你,祝你有愉快的一天!
可通过 agent.get_policy()._optimizer
.
您之前看到 "no attribute _optimizer" 的原因是因为 _policy_graph
是策略 class,而不是对象实例,它存在于 local_evaluator.policy_map
中或通过 agent.get_policy()
.