作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用变分自动编码器类型模型,我的损失函数的一部分是均值为 0 和方差为 1 的正态分布与另一个均值和方差由我的模型预测的正态分布之间的 KL 散度。
我用以下方式定义了损失:
def kl_loss(mean, log_sigma):
normal=tf.contrib.distributions.MultivariateNormalDiag(tf.zeros(mean.get_shape()),
tf.ones(log_sigma.get_shape()))
enc_normal = tf.contrib.distributions.MultivariateNormalDiag(mean,
tf.exp(log_sigma),
validate_args=True,
allow_nan_stats=False,
name="encoder_normal")
kl_div = tf.contrib.distributions.kl_divergence(normal,
enc_normal,
allow_nan_stats=False,
name="kl_divergence")
return kl_div
log_sigma.get_shape() == mean.get_shape()
最佳答案
面临同样的问题。
这是因为使用了浮点精度。
如果您注意到负值出现在接近 0 并且被限制为一个小的负值。为损失添加一个小的正值是一种解决方法。
关于python - Tensorflow,负 KL 散度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49067869/
我是一名优秀的程序员,十分优秀!