Tensorflow:分类概率分布的 KL 散度
Posted
技术标签:
【中文标题】Tensorflow:分类概率分布的 KL 散度【英文标题】:Tensorflow: KL divergence for categorical probability distribution 【发布时间】:2017-11-02 20:04:59 【问题描述】:我正在尝试使用 KL 散度计算我的网络的准确性。预测是一个 k 维概率向量,应与相同维度的黄金标准概率分布进行比较。 我试过这个:
corr_subj_test = tf.contrib.distributions.kl(pred_subj, y)
accr_subj_test = tf.reduce_mean(corr_subj_test)
但最终得到如下错误:
NotImplementedError: 没有为 dist_a 注册 KL(dist_a || dist_b) 类型张量和 dist_b 类型张量
【问题讨论】:
【参考方案1】:检查张量流github 和其他一些给出相同NotImplementedError
错误的问题(如this one)似乎kl()
方法当前不接受参数类型的特定组合。
如果可能,您可以将您的数据以它接受的数据类型传递给kl()
(可能会转换您的数据以实现此目的)。**
您也可以尝试将其发布到 tensorflow issues 以讨论您的问题。
** 编辑:
正如this 问题中的答案所建议和解释的那样,您可以通过使用交叉熵而不是softmax_cross_entropy_with_logits
方法来获得所需的结果,如下所示:
newY = pred_subj/y
crossE = tf.nn.softmax_cross_entropy_with_logits(pred_subj, newY)
accr_subj_test = tf.reduce_mean(-crossE)
【讨论】:
用其他替代方案增强了我的答案以上是关于Tensorflow:分类概率分布的 KL 散度的主要内容,如果未能解决你的问题,请参考以下文章