Python 在张量流概率中,与贝叶斯层损失特性相关的损失是什么?
TensorFlow概率层(例如)有一个Python 在张量流概率中,与贝叶斯层损失特性相关的损失是什么?,python,tensorflow,machine-learning,bayesian,tensorflow-probability,Python,Tensorflow,Machine Learning,Bayesian,Tensorflow Probability,TensorFlow概率层(例如)有一个损失方法(或属性),可以获取“与该层相关的损失”。有人能解释这些损失是什么吗 浏览之后,我认为损失是指权重和偏差的先验分布和后验分布之间的Kullback-Leibler散度。如果有人比我更了解这些事情,那么请纠正我。你的怀疑是正确的,尽管没有很好的记录。例如,在下面的一段代码中 import tensorflow_probability as tfp model = tf.keras.Sequential([ tfp.layers.DenseF
损失
方法(或属性),可以获取“与该层相关的损失”。有人能解释这些损失是什么吗
浏览之后,我认为损失是指权重和偏差的先验分布和后验分布之间的Kullback-Leibler散度。如果有人比我更了解这些事情,那么请纠正我。你的怀疑是正确的,尽管没有很好的记录。例如,在下面的一段代码中
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) # Losses are summed
# The negative log-likelihood and the KL term are combined
loss = neg_log_likelihood + kl
train_op = tf.train.AdamOptimizer().minimize(loss)
如中所述,损失
相加得到KL项,对数似然项单独计算,并与KL项组合形成ELBO
您可以看到添加的损失,在一些间接操作之后,显示正在使用
{kernel,bias}\u散度fn
,而这反过来默认为调用tfd.kl_散度(q,p)
的lambda
,为什么损失要求和而不是平均?直觉上,在我看来,我们应该对它们进行平均,然后在将结果添加到最终损失之前,我们应该将平均值除以小批量中的示例数。在Keras的情况下,你知道每层的KL散度是如何精确地加到最终损失中的吗?