kur test
和kur 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 test
和kur evaluate
背后的源代码,我们怎样才能理解它们的确切区别?
答案 0 :(得分:0)
Kur(深度学习库)的开发人员@ajsyp提供了以下答案,我发现这些答案非常有帮助。
当您知道“正确答案”是什么时,就会使用
kur test
只是想看看你的模型在坚持的样本上的表现如何。
kur evaluate
是纯推理:它用于生成结果 你训练有素的模特。通常在机器学习中,您将可用数据拆分为3 集:培训,验证和测试(人们有时称之为 不同的事情,只是你知道)。对于特定型号 建筑/选择模型超参数,你训练 训练集,并使用验证集来衡量模型的好坏程度 执行(它是否正确学习?是否过度训练?等)。但是你 通常想要比较许多不同的模型超参数:也许 例如,您可以调整图层数量或其大小。
那你如何选择“最佳”模特呢?最天真的事情是 选择具有最低验证损失的模型。但是你跑了 优化/调整模型以便在模型上正常工作的风险 验证集。
所以测试集发挥作用:你使用测试集作为最后的测试集, 当天结束时,测试每个模型的表现。 尽可能长时间地隐藏该测试集非常重要, 否则你没有公正的方式知道你的模型有多好 或者它与其他模型的比较。
kur test
旨在用于通过模型运行测试集 计算损失(并运行任何适用的钩子)。但现在让我们说你有一个训练有素的模特,比如图像识别 模型,现在你想实际使用它!你得到一些新数据(你 可能甚至没有他们的“真相”标签,只是原始的 图像),您希望模型对图像进行分类。那是什么
kur evaluate
用于:它需要一个训练有素的模型,然后“使用它” 生产模式,“你没有/需要真值的地方。”