Tensorflow 张量流概率的贝叶斯层的属性损失代表什么?

Tensorflow 张量流概率的贝叶斯层的属性损失代表什么?,tensorflow,tensorflow-probability,Tensorflow,Tensorflow Probability,我正在运行使用实现的示例代码 我的问题是关于用于变分推理的ELBO损失的实现。ELBO等于两项的总和,即在代码中实现的neg_log_似然和kl。我很难理解kl术语的实现 以下是如何定义模型: with tf.name_scope("bayesian_neural_net", values=[images]): neural_net = tf.keras.Sequential() for units in FLAGS.layer_sizes: layer = tfp.layers

我正在运行使用实现的示例代码

我的问题是关于用于变分推理的ELBO损失的实现。ELBO等于两项的总和,即在代码中实现的
neg_log_似然
kl
。我很难理解
kl
术语的实现

以下是如何定义模型:

with tf.name_scope("bayesian_neural_net", values=[images]):
  neural_net = tf.keras.Sequential()
  for units in FLAGS.layer_sizes:
    layer = tfp.layers.DenseFlipout(units, activation=FLAGS.activation)
    neural_net.add(layer)
  neural_net.add(tfp.layers.DenseFlipout(10))
  logits = neural_net(images)
  labels_distribution = tfd.Categorical(logits=logits)
以下是“kl”一词的定义:

kl = sum(neural_net.losses) / mnist_data.train.num_examples
我不确定这里返回的是什么
neural\u net.loss
,因为没有为
neural\u net
定义损失函数。显然,
neural\u net.loss
会返回一些值,但我不知道返回值的含义是什么。对此有何评论


我的猜测是L2标准,但我不确定。如果是这样的话,我们仍然缺少一些东西。根据附录B中的论文,作者推导了先验为标准正态时的KL项。结果表明,除了有额外的对数方差项和常数项外,它非常接近变分参数的L2范数。对此有何评论?

a的
loss
属性表示副作用计算,如正则化惩罚。与特定TensorFlow变量上的正则化惩罚不同,此处的
损失
表示KL散度计算。请查看,以及:

我们演示了一个贝叶斯神经网络,假设数据集为
特征
标签

  import tensorflow_probability as tfp
  model = tf.keras.Sequential([
      tfp.layers.DenseFlipout(512, activation=tf.nn.relu),
      tfp.layers.DenseFlipout(10),
  ])
  logits = model(features)
  neg_log_likelihood = tf.nn.softmax_cross_entropy_with_logits(
      labels=labels, logits=logits)
  kl = sum(model.losses)
  loss = neg_log_likelihood + kl
  train_op = tf.train.AdamOptimizer().minimize(loss)
它使用翻转梯度估计器将Kullback-Leibler散度最小化到一个常数,也称为负证据下界。它由两项之和组成:期望负对数似然,我们通过蒙特卡罗近似;以及KL散度,通过正则化项添加,正则化项是层的参数


嘿,Dustin,在TFP示例中,贝叶斯损失被计算为
neg\u log\u likelion=-tf.reduce\u mean(输入张量=labels\u分布.log\u prob(labels))
,这似乎比softmax xent更明确地符合ELBO损失。这些是等价的吗?