我正在尝试用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
答案 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)