Понимание log_prob для нормального распределения в pytorch - PullRequest
2 голосов
/ 19 марта 2020

В настоящее время я пытаюсь решить Pendulum-v0 из среды спортзала openAi, в которой есть пространство непрерывного действия. В результате мне нужно использовать нормальное распределение для проверки моих действий. Что я не понимаю, так это размер log_prob при его использовании:

import torch
from torch.distributions import Normal 

means = torch.tensor([[0.0538],
        [0.0651]])
stds = torch.tensor([[0.7865],
        [0.7792]])

dist = Normal(means, stds)
a = torch.tensor([1.2,3.4])
d = dist.log_prob(a)
print(d.size())

Я ожидал тензор размера 2 (по одному log_prob для каждого действия), но он выдает тензор размера (2, 2).

Однако при использовании Категориального распределения для дискретной среды ожидаемый размер log_prob:

logits = torch.tensor([[-0.0657, -0.0949],
        [-0.0586, -0.1007]])

dist = Categorical(logits = logits)
a = torch.tensor([1, 1])
print(dist.log_prob(a).size())

дает мне тензор размера (2).

Почему log_prob для нормального распределения другого размера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...