Tensorflow:分类概率分布的KL分歧

时间:2017-06-01 15:21:19

标签: python machine-learning tensorflow neural-network

我正在尝试用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)   类型Tensor和dist_b类型Tensor

1 个答案:

答案 0 :(得分: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)