让我们讨论一下在训练过程中帮助你进行实验的技术。我将提供一些理论、代码片段和完整的流程示例。主要要点包括:
我喜欢有训练集、验证集和测试集的分割。这里没什么好说的;你可以使用随机分割,或者如果你有一个不平衡的数据集(就像在实际情况中经常发生的那样)——分层分割。
对于测试集,尝试手动挑选一个“黄金数据集”,包含你希望模型擅长的所有示例。测试集应该在实验之间保持不变。它应该只在你完成模型训练后使用。这将在部署到生产环境之前给你客观的指标。别忘了,你的数据集应该尽可能接近生产环境,这样才有代表性。
为你的任务选择正确的指标至关重要。我最喜欢的错误使用指标的例子是 Kaggle 的“深空系外行星狩猎”数据集,在那里你可以找到很多笔记本,人们在大约有 5000 个负样本和 50 个正样本的严重不平衡的数据集上使用准确率。当然,他们得到了 99% 的准确率,并且总是预测负样本。那样的话,他们永远也找不到系外行星,所以让我们明智地选择指标。
深入讨论指标超出了本文的范围,但我将简要提及一些可靠的选项:
真实图像分类问题的分数示例:
+--------+----------+--------+-----------+--------+| split | accuracy | f1 | precision | recall |+--------+----------+--------+-----------+--------+| val | 0.9915 | 0.9897 | 0.9895 | 0.99 || test | 0.9926 | 0.9921 | 0.9927 | 0.9915 |+--------+----------+--------+-----------+--------+
为你的任务选择几个指标:
def get_metrics(gt_labels: List[int], preds: List[int]) -> Dict[str, float]: num_classes = len(set(gt_labels)) if num_classes == 2: average = "binary" else: average = "macro" metrics = {} metrics["accuracy"] = accuracy_score(gt_labels, preds) metrics["f1"] = f1_score(gt_labels, preds, average=average) metrics["precision"] = precision_score(gt_labels, preds, average=average) metrics["recall"] = recall_score(gt_labels, preds, average=average) return metrics
此外,绘制精确度-阈值和召回率-阈值曲线,以更好地选择置信度阈值。
http://www.28at.com/showinfo-26-112733-0.htmlPyTorch 训练,除了会训练还要了解这些
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: Asp.Net Core实战-JWT详解
下一篇: Python 输入输出知识点及用法讲解