Я использую DQN Agent от Ray / RLLib.Чтобы получить более полное представление о том, как проходит процесс обучения, я хотел бы получить доступ к внутреннему состоянию 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'
Документы рекомендую использовать agent.local_evaluator
, однако я не могу найти там состояние Адамса.
Вероятно, это только я неправильно понимаю архитектуру Rays.Итак, кто-нибудь может мне помочь с этим?
Спасибо и хорошего дня!