小编Sam*_*ant的帖子

理解pytorch中正态分布的log_prob

我目前正在尝试从具有连续动作空间的 openAi 健身房环境中解决 Pendulum-v0。因此,我需要使用正态分布来对我的行为进行采样。我不明白的是 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())
Run Code Online (Sandbox Code Playgroud)

我期待一个大小为 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())
Run Code Online (Sandbox Code Playgroud)

给我一个大小为(2)的张量。

为什么正态分布的 log_prob 大小不同?

reinforcement-learning probability-distribution pytorch

6
推荐指数
1
解决办法
3777
查看次数