CNTK ClassificationError> 1

时间:2018-01-18 12:02:57

标签: c# classification cntk

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

我原以为它与%相似,因此最大值为1,但似乎值可以是> 1。 1.在下面的训练统计中,对于具有5个输出类别的模型,XE = CrossEntropyWithSoftMax和CE = ClassificiationError。


    Epoch: 34
    Model 1: XE = 1.503379, CE = 1.506554
    Model 2: XE = 0.5946844, CE = 0.5980067
    Model 3: XE = 1.503184, CE = 0.5913621
    Model 4: XE = 1.510509, CE = 1.503379
    Model 5: XE = 1.510509, CE = 0.5980067
    Model 6: XE = 1.509366, CE = 1.510509
    Model 7: XE = 1.50258, CE = 0.5980067
    Model 8: XE = 1.507859, CE = 0.5946844
    Model 9: XE = 1.501298, CE = 0.5913621
    Model 10: XE = 1.504597, CE = 0.5880399

    Epoch: 35
    Model 1: XE = 1.503288, CE = 0.5946844
    Model 2: XE = 1.512177, CE = 0.5980067
    Model 3: XE = 1.503083, CE = 0.5913621
    Model 4: XE = 1.510375, CE = 0.6013289
    Model 5: XE = 1.506484, CE = 0.5980067
    Model 6: XE = 1.509244, CE = 0.5980067
    Model 7: XE = 1.502508, CE = 0.5980067
    Model 8: XE = 1.507748, CE = 0.5946844
    Model 9: XE = 1.501324, CE = 0.5913621
    Model 10: XE = 1.504497, CE = 0.5880399

1 个答案:

答案 0 :(得分:0)

CNTK似乎对某些参数集使用HardMax激活函数。 HardMax与SoftMax类似,它返回一个值> 0.但是,此值可能大于1。

如果我们在CNTK中检查此功能的the C++ source,我们可以看到实际操作:

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

分类错误不适合介于0和1之间的值。目标值与输出值向量 >。 See here.

它没有告诉你模型的准确程度 - 它与目标有多么不同。虽然该向量可能介于0和1之间,但无法保证:

  

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