tfp.distributions.Multinomial().sample()用法简介

在李沐的动手学深度学习的概率一章,有一个函数

tfp.distributions.Multinomial(1,fair_probs).sample()

先看一下官方文档的介绍:

tfp.distributions.Categorical(
    logits=None,
    probs=None,
    dtype=tf.int32,
    validate_args=False,
    allow_nan_stats=True,
    name='Categorical'
)

This Multinomial distribution is parameterized by probs, a (batch of) length-K prob (probability) vectors (K > 1) such that tf.reduce_sum(probs, -1) = 1, and a total_count number of trials, i.e., the number of trials per draw from the Multinomial. It is defined over a (batch of) length-K vector counts such that tf.reduce_sum(counts, -1) = total_count. The Multinomial is identically the Binomial distribution when K = 2.

译文:这个多项式分布由probs参数化,probs是一个(批次)长度-K prob(概率)向量(K>1),因此tf。reduce_sum(probs,-1)=1,以及试验的total_count次数,即多项式中每次绘制的试验次数。它是在一(批)长度-K矢量计数上定义的,因此tf。reduce_sum(counts,-1)=总数。当K=2时,多项式为二项式分布。

附上链接:https://tensorflow.google.cn/probability/api_docs/python/tfp/distributions/Multinomial?hl=en

官方说的太官方,我用自己的话简述一下。


fair_probs = tf.ones(6) / 6
print(fair_probs)    #tf.Tensor([0.16666667 0.16666667 0.16666667 0.16666667 0.16666667 0.16666667], shape=(6,), dtype=float32)

print(tfp.distributions.Multinomial(1, fair_probs)).sample()

 fair_probs:存上一个元素和为1的列表,每一个元素都代表一个概率。

举个例子:fair_probs = [0.1,0.2,0.3,0.4]

0.1就代表索引为0的概率是0.1

0.2就代表索引为1的概率是0.2

0.3就代表索引为2的概率是0.3

0.4就代表索引为3的概率是0.4。

tfp.distributions.Multinomial(参数1参数2).sample()

参数1代表进行随机的次数,参数2就是fair_probs。

总和起来就是每次随机都在fair_probs这个列表上进行随机,列表中每个位置被随机到的概率=当前位置的数值大小。总共随机参数1次。

上代码

fair_probs = tf.ones(6) / 6
print(fair_probs)
print(tfp.distributions.Multinomial(1, fair_probs).sample())

上结果: 

 随机了1次,随机倒了第4个位置。

随机100次试试:


fair_probs = tf.ones(6) / 6
print(fair_probs)
print(tfp.distributions.Multinomial(100, fair_probs).sample())

结果:

 大致就是这样,相当于一个摇骰子的功能,其他的参数我也没去了解,太繁琐了。

你可能感兴趣的:(python,开发语言)