class torch.distributions.multinomial.Multinomial()

class torch.distributions.multinomial.Multinomial()

(1)导入必要的包

%matplotlib inline
import torch
from torch.distributions import multinomial
from d2l import torch as d2l

(2)随机生成一个实验进行尝试

fair_probs=torch.ones([6])/6 #
multinomial.Multinomial(1,fair_probs).sample() #sample()后面可以说明要做多少批次
#其中total_count -int-试验次数(要模拟多少次),probs -Tensor-事件概率(加和会是一),logits -Tensor-事件对数概率

在这里插入图片描述

(3)随机生成10个实验进行尝试

multinomial.Multinomial(10,fair_probs).sample() #这说明进行了十次试验次数,

在这里插入图片描述

(4)为了验证每个点摇到的几率都为1/6,这里分别设置了进行1000次实验,其中每次抽取20次样本,并将试图显示,如图可视,每一个点的取值最终都稳定在0.16≈1/6上

#sum()与cumsum()的区别:
#a.sum()  是将a矩阵中所有的元素都加在一起
#a.sum(dim=0) 列的数量不变,行变化 从上到下加起来
#a.sum(dim=1) 行的数量不变,列变化 从左到右加起来
#a.cumsum(dim=0) 列不变,行变,下一行是本身与上一行的和
#a.cumsum(dim=1) 列变行不变,下一列是本身与上一列的累加
counts=multinomial.Multinomial(20,fair_probs).sample((1000,)) #说明进行了1000次实验,每次挑20个样本
cum_counts=counts.cumsum(dim=0)
estimates=cum_counts/cum_counts.sum(dim=1,keepdims=True)

d2l.set_figsize((6,4.5)) #设置窗口尺寸大小
for i in range(6): #因为有六个取值,所以要分别设置六个折线
    d2l.plt.plot(estimates[:,i].numpy(),label=("P(die="+str(i+1)+")"))
d2l.plt.axhline(y=0.167,color='black',linestyle='dashed')
d2l.plt.gca().set_xlabel('Groups of experiments')  #设置x,y轴的名字
d2l.plt.gca().set_ylabel('Estimated probability')
d2l.plt.legend();

运行试图如下:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值