cntk中loss和metric是如何计算的

how loss and metric are calculated in cntk

我是 cntk 和 python 的新手。我创建了一个基于 TrainResNet_CIFAR10.py 的 python 程序来训练 4736 张 (64x64x3) 图像并用 4 classes 测试 2180 张图像。训练 160 个时期后,我得到损失 = 0.663 和指标 = 29.37%。完成评估指标 = 18.94%。当我评估基于CNTKLibraryCSEvalExamples.cs的train模型测试2180张图片时,几乎所有2180张都class化为一张class(第二张class)。我的问题是:

  1. 我假设损失是根据 cross_entropy_with_softmax(z, label_var) 计算的,并且度量使用 classification_error(z, label_var)。我是正确的吗?他们实际上是如何确定的?
  2. metric = 29.37% 和 evaluation metric = 18.94% 是什么意思?它们分别来自训练图像和测试图像吗?
  3. 什么会导致完全错误的评估结果?

任何帮助将不胜感激。

(1) 是的。

(2) 29.37%表示29.37%的分类正确。评估是在测试数据上进行的,假设您正在阅读训练和测试数据。

(3) 确保输入的格式相同,我的意思是您在 python 中标准化或减去平均值,如果是这样,那么您需要在 C# 中执行相同的操作。您可以先使用 Python 运行 进行评估,看看会得到什么结果?