讓我們討論一下在訓練過程中幫助你進行實驗的技術。我將提供一些理論、代碼片段和完整的流程示例。主要要點包括:
我喜歡有訓練集、驗證集和測試集的分割。這里沒什么好說的;你可以使用隨機分割,或者如果你有一個不平衡的數據集(就像在實際情況中經常發生的那樣)——分層分割。
對于測試集,嘗試手動挑選一個“黃金數據集”,包含你希望模型擅長的所有示例。測試集應該在實驗之間保持不變。它應該只在你完成模型訓練后使用。這將在部署到生產環境之前給你客觀的指標。別忘了,你的數據集應該盡可能接近生產環境,這樣才有代表性。
為你的任務選擇正確的指標至關重要。我最喜歡的錯誤使用指標的例子是 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.tebozhan.com/showinfo-26-112733-0.htmlPyTorch 訓練,除了會訓練還要了解這些
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: Asp.Net Core實戰-JWT詳解
下一篇: Python 輸入輸出知識點及用法講解