我目前正在我的自定义体育馆环境中训练 PPO 算法,目的是进行追逐躲避游戏。然而,在训练过程中,我想定期评估我的策略的进展,并以轨迹的形式可视化结果。 (我的代码基本上遵循这个官方教程,以防你需要更多上下文)
if i % 10 == 0:
with set_exploration_type(ExplorationType.MEAN), torch.no_grad():
eval_rollout = env.rollout(1000, policy_module)
“rollout”方法返回一个张量字典对象,其中包含有关给定轨迹的一些信息,例如代理(逃避者)采取的操作或观察结果。然而,我选择的这些观察结果是相对指标,但我需要逃避者和追捕者的绝对位置,以便能够绘制他们的行为。我希望在这个张量中的某个位置包含绝对位置,类似于如何将信息变量添加到体育馆环境中的步骤方法中:
def _get_info(self):
return {'evader_pos': self.evager.get_position(),
'pursuer-pos': self.pursuer.get_position()
}
def step(self, action):
. . .
return observation, reward, terminated, False, **self.get_info()**
我查看了 torchrl 文档和源代码,但似乎没有找到任何与我的意图相关的内容。 所以我的问题是:有没有我可以尝试的替代方案,或者我是否监督了一些为 rollout-tensordict 提供附加信息的东西?
我尝试了显而易见的方法:从相对指标重建绝对位置,但是这是不可能的,因为我需要引入一些我认为没有好处的新(冗余)信息。
非常感谢您的宝贵时间!
尚不清楚您的健身房环境是否在信息字典中返回这些值,但假设它确实返回,您可以使用
GymWrapper.set_info_dict_reader
。