【问题标题】: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)
    

    【讨论】:

    • 用其他替代方案增强了我的答案
    猜你喜欢
    • 2018-09-27
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 2019-06-07
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多