Tensorflow 访问优化器内部状态
我正在使用Ray/RLLib中的DQN代理。为了更深入地了解培训过程是如何进行的,我想访问Adam优化器的内部状态,例如可视化梯度的运行平均值是如何随时间变化的。请参见下面的最小代码段以获取说明Tensorflow 访问优化器内部状态,tensorflow,optimization,ray,adam,Tensorflow,Optimization,Ray,Adam,我正在使用Ray/RLLib中的DQN代理。为了更深入地了解培训过程是如何进行的,我想访问Adam优化器的内部状态,例如可视化梯度的运行平均值是如何随时间变化的。请参见下面的最小代码段以获取说明 agent = DQNAgent(config=agent_config, env=self.env) episode_results = [] for i in range(int(budget)): # add epoch results to resul
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_图构造函数),因此我的本能是通过
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'
建议使用agent.local\u evaluator
,但是我在其中找不到Adams状态
也许这只是我对Rays架构的误解。有人能帮我吗
谢谢你,祝你今天愉快 TF optimizer对象可通过
代理访问。get_policy()。_optimizer
您以前看到“无属性\u优化器”的原因是\u policy\u graph
是策略类,而不是对象实例,它存在于本地\u求值器.policy\u map
或通过代理.get\u policy()
中