如何生成带有因子 的张tensorflow
量?Bernoulli distribution
p
例如:
a = tf.bernoulli(shape=[10,10], p)
生成一个10x10
0-1 的矩阵,其中矩阵的每个元素为 1 概率p
和 0 概率1-p
.
如何生成带有因子 的张tensorflow
量?Bernoulli distribution
p
例如:
a = tf.bernoulli(shape=[10,10], p)
生成一个10x10
0-1 的矩阵,其中矩阵的每个元素为 1 概率p
和 0 概率1-p
.
我可以解决我的问题!: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)
您可以使用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。