【问题标题】:How can I initialize variables with Bernoulli distribution in TensorFlow?如何在 TensorFlow 中使用伯努利分布初始化变量?
【发布时间】:2023-03-16 19:46:01
【问题描述】:

如何在 TensorFlow 中初始化变量?

我想将每个权重与伯努利分布相关联:

  • 以 p 的概率得到某个值 x1,并且
  • 以 1-p 的概率获得某个值 x2。

我应该如何初始化这个矩阵?

我写了这段代码:

logits_y = tf.get_variable("logits", [n_input*n_hidden,2],
                           initializer=tf.constant_initializer(1.))

[n_input*n_hidden, 2] 中的2 表示[p, 1-p]

【问题讨论】:

  • 您打算如何使用logits_y?在损失函数中还是用于生成摘要?
  • @musically_ut 我想使用 logits_y 绘制样本,现在权重来自不同的伯努利分布。我想以某种方式优化每个权重的 p。

标签: python tensorflow probability bernoulli-probability


【解决方案1】:

我不确定你打算用你的矩阵做什么,但这里是你如何在 tensorflow 中生成Bernoulli distribution

>>> distrib = tf.contrib.distributions.Bernoulli(probs=[0.3])
>>> sample = distrib.sample([10])
>>> sample
<tf.Tensor 'Bernoulli/sample/Reshape:0' shape=(10, 1) dtype=int32>
>>> sample.eval()
array([[0],
       [0],
       [1],
       [1],
       [0],
       [0],
       [0],
       [1],
       [0],
       [0]], dtype=int32)

【讨论】:

  • 感谢您的回复。我遇到的问题是我想通过抽取样本来优化每个权重的伯努利分布。所以我必须把每一个p作为一个变量,并使用SGD或一些类似的算法对其进行优化。
猜你喜欢
  • 2020-05-03
  • 1970-01-01
  • 2014-02-05
  • 2017-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-23
  • 2020-08-09
相关资源
最近更新 更多