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
答案 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