【问题标题】:Tensorflow: KL divergence for categorical probability distributionTensorflow:分类概率分布的 KL 散度
【发布时间】: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 类型张量
【问题讨论】:
标签:
python
machine-learning
tensorflow
neural-network
【解决方案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)