Поскольку динамика среды довольно сложна, у меня есть набор данных, содержащий около 200 траекторий, которые я могу использовать в качестве демонстрации. Моя идея состоит в том, чтобы использовать их во время обучения, чтобы каждые n эпизодов проводилась демонстрация. Когда это происходит, я заставляю метод сброса среды выполнять выборку из набора данных. Однако мне трудно заставить эксперта выполнить действие, которое, как я знаю, должно быть выполнено.
Более или менее, я думаю, что нашел точку, в которой мне следует это реализовать. Следующий метод реализован в классе ActorCriticPolicy(BasePolicy) файла policy.py в SB3.
Код: Выделить всё
def forward(self, obs: th.Tensor, deterministic: bool = False) -> Tuple[th.Tensor, th.Tensor, th.Tensor]:
"""
Forward pass in all the networks (actor and critic)
:param obs: Observation
:param deterministic: Whether to sample or use deterministic actions
:return: action, value and log probability of the action
"""
# Preprocess the observation if needed
features = self.extract_features(obs)
if self.share_features_extractor:
latent_pi, latent_vf = self.mlp_extractor(features)
else:
pi_features, vf_features = features
latent_pi = self.mlp_extractor.forward_actor(pi_features)
latent_vf = self.mlp_extractor.forward_critic(vf_features)
# Evaluate the values for the given observations
values = self.value_net(latent_vf)
distribution = self._get_action_dist_from_latent(latent_pi)
actions = distribution.get_actions(deterministic=deterministic)
log_prob = distribution.log_prob(actions)
actions = actions.reshape((-1, *self.action_space.shape)) # type: ignore[misc]
return actions, values, log_prob
Я знаю о библиотеке имитации, однако я думаю, что То, что я хочу сделать, в нем недоступно.
Есть ли способ сделать это?
Подробнее здесь: https://stackoverflow.com/questions/792 ... iven-state