本文小编为大家详细介绍“Pytorch中的torch.distributions库怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Pytorch中的torch.distributions库怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
Pytorch torch.distributions库
包介绍
torch.distributions包包含可参数化的概率分布和采样函数。 这允许构建用于优化的随机计算图和随机梯度估计器。
不可能通过随机样本直接反向传播。 但是,有两种主要方法可以创建可以反向传播的代理函数。
这些是
评分函数估计量 score function estimato
似然比估计量 likelihood ratio estimator
REINFORCE
路径导数估计量 pathwise derivative estimator
REINFORCE 通常被视为强化学习中策略梯度方法的基础,
路径导数估计器常见于变分自编码器的重新参数化技巧中。
虽然评分函数只需要样本 f(x)的值,但路径导数需要导数 f'(x)。
本文重点讲解Pytorch中的 torch.distributions库。
pytorch 的 torch.distributions 中可以定义正态分布:
import torchfrom torch.distributions import Normalmean=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])
读到这里,这篇“Pytorch中的torch.distributions库怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。