Pytorch: torch.distributions库

pytorch 的 torch.distributions 中可以定义正态分布:

import torch
from torch.distributions import  Normal
mean=torch.Tensor([0,2])
normal=Normal(mean,1)

sample()就是直接在定义的正太分布(均值为mean,标准差std是1)上采样:

result = normal.sample()
print("sample():",result)

输出:

sample(): tensor([-1.3362,  3.1730])

rsample()不是在定义的正太分布上采样,而是先对标准正太分布 N(0,1) 进行采样,然后输出: mean + std × 采样值

result = normal.rsample()
print("rsample():",result)

输出:

rsample: tensor([ 0.0530,  2.8396])

log_prob(value) 是计算value在定义的正态分布(mean,1)中对应的概率的对数,正太分布概率密度函数是:
在这里插入图片描述
对其取对数可得:
在这里插入图片描述
这里我们通过对数概率还原其对应的真实概率:

print("result log_prob:",normal.log_prob(result).exp())

输出:

result log_prob: tensor([ 0.1634,  0.2005])
  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值