讓我們討論一下在訓(xùn)練過程中幫助你進(jìn)行實驗的技術(shù)。我將提供一些理論、代碼片段和完整的流程示例。主要要點包括:
我喜歡有訓(xùn)練集、驗證集和測試集的分割。這里沒什么好說的;你可以使用隨機(jī)分割,或者如果你有一個不平衡的數(shù)據(jù)集(就像在實際情況中經(jīng)常發(fā)生的那樣)——分層分割。
對于測試集,嘗試手動挑選一個“黃金數(shù)據(jù)集”,包含你希望模型擅長的所有示例。測試集應(yīng)該在實驗之間保持不變。它應(yīng)該只在你完成模型訓(xùn)練后使用。這將在部署到生產(chǎn)環(huán)境之前給你客觀的指標(biāo)。別忘了,你的數(shù)據(jù)集應(yīng)該盡可能接近生產(chǎn)環(huán)境,這樣才有代表性。
為你的任務(wù)選擇正確的指標(biāo)至關(guān)重要。我最喜歡的錯誤使用指標(biāo)的例子是 Kaggle 的“深空系外行星狩獵”數(shù)據(jù)集,在那里你可以找到很多筆記本,人們在大約有 5000 個負(fù)樣本和 50 個正樣本的嚴(yán)重不平衡的數(shù)據(jù)集上使用準(zhǔn)確率。當(dāng)然,他們得到了 99% 的準(zhǔn)確率,并且總是預(yù)測負(fù)樣本。那樣的話,他們永遠(yuǎn)也找不到系外行星,所以讓我們明智地選擇指標(biāo)。
深入討論指標(biāo)超出了本文的范圍,但我將簡要提及一些可靠的選項:
真實圖像分類問題的分?jǐn)?shù)示例:
+--------+----------+--------+-----------+--------+| split | accuracy | f1 | precision | recall |+--------+----------+--------+-----------+--------+| val | 0.9915 | 0.9897 | 0.9895 | 0.99 || test | 0.9926 | 0.9921 | 0.9927 | 0.9915 |+--------+----------+--------+-----------+--------+
為你的任務(wù)選擇幾個指標(biāo):
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.www897cc.com/showinfo-26-112733-0.htmlPyTorch 訓(xùn)練,除了會訓(xùn)練還要了解這些
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: Asp.Net Core實戰(zhàn)-JWT詳解
下一篇: Python 輸入輸出知識點及用法講解