Базовые линии OpenAI имеют хороший класс SubprocVecEnv
для распараллеливания сред с использованием подпроцессов. Однако, если я создаю параллельные среды envs
и вызываю envs.step(actions)
, где actions
- это тензор PyTorch, я получаю следующую ошибку:
RuntimeError: Can't call numpy() on Variable that requires grad. Use var.detach().numpy() instead.
Причиной является step_async
код функции, которая распределяет действия: actions = np.array_split(actions, self.nremotes)
https://github.com/openai/baselines/blob/master/baselines/common/vec_env/subproc_vec_env.py#L77
Как я могу передать тензоры PyTorch в функцию шага, чтобы иметь возможность дифференцировать награды за действия?