`kur test`和`kur evaluate`有什么区别?

时间:2017-04-03 13:57:12

标签: deep-learning

kur testkur evaluate究竟有何不同?

我们从控制台看到的差异

    (dlnd-tf-lab)  ->kur evaluate mnist.yml
    Evaluating: 100%|████████████████████████████| 10000/10000 [00:04<00:00, 2417.95samples/s]
    LABEL     CORRECT   TOTAL     ACCURACY
    0         949       980        96.8%
    1         1096      1135       96.6%
    2         861       1032       83.4%
    3         868       1010       85.9%
    4         929       982        94.6%
    5         761       892        85.3%
    6         849       958        88.6%
    7         935       1028       91.0%
    8         828       974        85.0%
    9         859       1009       85.1%
    ALL       8935      10000      89.3%


    Focus on one: /Users/Natsume/Downloads/kur/examples
    (dlnd-tf-lab)  ->kur test  mnist.yml
    Testing, loss=0.458: 100%|█████████████████████| 3200/3200 [00:01<00:00, 2427.42samples/s]

如果不了解kur testkur evaluate背后的源代码,我们怎样才能理解它们的确切区别?

1 个答案:

答案 0 :(得分:0)

Kur(深度学习库)的开发人员@ajsyp提供了以下答案,我发现这些答案非常有帮助。

  当您知道“正确答案”是什么时,就会使用

kur test   只是想看看你的模型在坚持的样本上的表现如何。

     

kur evaluate是纯推理:它用于生成结果   你训练有素的模特。

     

通常在机器学习中,您将可用数据拆分为3   集:培训,验证和测试(人们有时称之为   不同的事情,只是你知道)。对于特定型号   建筑/选择模型超参数,你训练   训练集,并使用验证集来衡量模型的好坏程度   执行(它是否正确学习?是否过度训练?等)。但是你   通常想要比较许多不同的模型超参数:也许   例如,您可以调整图层数量或其大小。

     

那你如何选择“最佳”模特呢?最天真的事情是   选择具有最低验证损失的模型。但是你跑了   优化/调整模型以便在模型上正常工作的风险   验证集。

     

所以测试集发挥作用:你使用测试集作为最后的测试集,   当天结束时,测试每个模型的表现。   尽可能长时间地隐藏该测试集非常重要,   否则你没有公正的方式知道你的模型有多好   或者它与其他模型的比较。

     

kur test旨在用于通过模型运行测试集   计算损失(并运行任何适用的钩子)。

     

但现在让我们说你有一个训练有素的模特,比如图像识别   模型,现在你想实际使用它!你得到一些新数据(你   可能甚至没有他们的“真相”标签,只是原始的   图像),您希望模型对图像进行分类。那是什么   kur evaluate用于:它需要一个训练有素的模型,然后“使用它”   生产模式,“你没有/需要真值的地方。”