1

如何生成带有因子 的张tensorflow量?Bernoulli distributionp

例如:

a = tf.bernoulli(shape=[10,10], p)

生成一个10x100-1 的矩阵,其中矩阵的每个元素为 1 概率p和 0 概率1-p.

4

2 回答 2

0

我可以解决我的问题!:D 以下代码生成,我需要什么p=0.7

p = tf.constant([0.7])
r = tf.random.uniform(shape=shape, maxval=1)
b = tf.math.greater(p, r)
f = tf.cast(b, dtype=tf.float32)
于 2020-01-17T09:17:40.043 回答
0

您可以使用Tensorflow 概率库中的伯努利分布,这是基于 TensorFlow 的扩展:

import tensorflow_probability as tfp
x = tfp.distributions.Bernoulli(probs=0.7).sample(sample_shape=(10, 10))
x

这将输出

<tf.Tensor: shape=(10, 10), dtype=int32, numpy=
array([[1, 1, 1, 1, 0, 0, 0, 1, 1, 0],
       [1, 0, 1, 0, 1, 1, 0, 1, 0, 0],
       [1, 1, 1, 1, 0, 1, 1, 1, 1, 0],
       [0, 0, 1, 1, 0, 1, 1, 1, 1, 1],
       [1, 1, 0, 1, 1, 1, 1, 0, 1, 1],
       [1, 0, 1, 1, 1, 0, 0, 1, 0, 1],
       [0, 1, 0, 1, 0, 1, 1, 1, 1, 1],
       [1, 0, 0, 1, 1, 1, 1, 1, 1, 0],
       [1, 1, 1, 1, 1, 0, 1, 1, 1, 1],
       [1, 0, 1, 1, 1, 1, 1, 1, 1, 1]], dtype=int32)>

另一种方法是使用类似的类tf.compat

import tensorflow as tf
x = tf.compat.v1.distributions.Bernoulli(probs=0.7).sample(sample_shape=(10, 10))
x

你会得到x你想要的,但也会出现一堆弃用警告。因此,我建议使用第一个变体。

还要考虑到,当我测试此代码时,tensorflow_probability需要安装最新版本的库 tensoflow>=2.3。

于 2020-10-20T19:36:56.157 回答