【问题标题】:How to get the accuracy of classifier on test data in DeepLearning如何在深度学习中获得分类器对测试数据的准确性
【发布时间】:2018-10-16 05:59:46
【问题描述】:

我正在尝试使用 DL4J 进行深度学习,并提供了带有标签的训练数据。然后我试图通过分配一个虚拟标签来发送测试数据。如果不提供虚拟标签,则会出现运行时错误。我不明白为什么我们需要为测试数据分配标签。
另外,我想知道预测的准确性是多少。根据我在 dl4j 文档中看到的内容,生成了一种称为混淆矩阵的东西。我知道这只是让我们了解训练数据对系统的训练效果如何。有没有办法获得对测试数据的预测准确性?由于我们为测试数据提供了一个虚拟标签,我觉得混​​淆矩阵也没有正确生成。

【问题讨论】:

    标签: deep-learning deeplearning4j dl4j


    【解决方案1】:

    首先,如果您不知道正确的标签是什么,如何测试网络是否输出正确的标签?在训练和测试时你应该总是有一个标签,因为这样你就可以断言输出是否正确。

    第二个问题,我在 dl4j 网页上找到了这个:

    Evaluation eval = new Evaluation(3);
    INDArray output = model.output(testData.getFeatures());
    eval.eval(testData.getLabels(), output);
    log.info(eval.stats());
    

    据说.stats() 方法显示混淆矩阵条目(每行一个)、准确度、精确度、召回率和 F1 分数。此外,Evaluation Class 还可以计算并返回以下值:

    Confusion Matrix
    False Positive/Negative Rate
    True Positive/Negative
    Class Counts
    F-beta, G-measure, Matthews Correlation Coefficient and more
    

    希望对你有帮助。

    【讨论】:

    • 感谢诺瓦克的快速回答...我仍然不清楚为什么我们应该提供带有测试数据的标签?对于训练数据,提供标签是可以理解的。但是对于测试数据,分类器应该预测标签 - 不是吗?
    • 分类器也在训练中预测标签。在训练中,您告诉分类器预测标签,然后将预测标签与真实(正确)标签进行比较。此外,在训练中,您执行反向传播。测试阶段用于评估您的模型训练得如何以及它的表现如何。它还需要有标签才能做到这一点。但是在测试阶段,你不执行反向传播,因为在那个阶段,模型不再学习,你只想看看它的表现如何。我希望现在更清楚了。
    【解决方案2】:

    您可以在此处的 DL4J 开发社区中找到可以回答您问题的人:https://gitter.im/deeplearning4j/deeplearning4j/tuninghelp

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2018-03-25
      • 2018-06-29
      • 2019-09-23
      相关资源
      最近更新 更多