【问题标题】:CNTK ClassificationError > 1CNTK 分类错误 > 1
【发布时间】:2018-01-18 12:02:56
【问题描述】:

CNTKLib.ClassificationError 的预期值范围是多少?

我曾认为它类似于 %,因此最大值为 1,但似乎值可以 > 1。在以下训练统计数据中,XE = CrossEntropyWithSoftMax 和 CE = ClassificiationError 用于具有 5 个输出类别的模型。

时代:34 型号 1:XE = 1.503379,CE = 1.506554 模型 2:XE = 0.5946844,CE = 0.5980067 型号 3:XE = 1.503184,CE = 0.5913621 型号 4:XE = 1.510509,CE = 1.503379 型号 5:XE = 1.510509,CE = 0.5980067 型号 6:XE = 1.509366,CE = 1.510509 型号 7:XE = 1.50258,CE = 0.5980067 型号 8:XE = 1.507859,CE = 0.5946844 型号 9:XE = 1.501298,CE = 0.5913621 型号 10:XE = 1.504597,CE = 0.5880399 时代:35 型号 1:XE = 1.503288,CE = 0.5946844 模型 2:XE = 1.512177,CE = 0.5980067 型号 3:XE = 1.503083,CE = 0.5913621 型号 4:XE = 1.510375,CE = 0.6013289 型号 5:XE = 1.506484,CE = 0.5980067 型号 6:XE = 1.509244,CE = 0.5980067 型号 7:XE = 1.502508,CE = 0.5980067 型号 8:XE = 1.507748,CE = 0.5946844 型号 9:XE = 1.501324,CE = 0.5913621 型号 10:XE = 1.504497,CE = 0.5880399

【问题讨论】:

    标签: c# classification cntk


    【解决方案1】:

    CNTK 似乎对某些参数集使用 HardMax 激活函数。 HardMax 与 SoftMax 的相似之处在于它返回的值 > 0。但是,该值可能大于 1。

    如果我们在 CNTK 中检查 the C++ source 的这个函数,我们可以看到它的实际作用:

    classificationErrorComposite = Minus(Constant::Scalar(prediction.GetDataType(), 1.0),
    TransposeTimes(labelPlaceholder, Hardmax(predictionPlaceholder)));
    

    分类错误不应该是介于 0 和 1 之间的值。它是 target 值和 输出值之间差异的 vector >。 See here.

    它并不能告诉您模型的准确度 - 只是它与目标的差异有多大。虽然该向量可能介于 0 和 1 之间,但不能保证:

    CNTK 定义了一个分类错误(错误预测的百分比)库函数,而不是一些其他库使用的分类准确率函数MSDN Magazine

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多