BUI新系列博文將聚焦AI相關領域,如果你想了解高通藍芽,可以檢視之前的系列或關注大博主聲波和無線電波著眼於今天
1.如果模型對輸入資料有要求,它將傳入用於轉換資料的轉換,包括標籤的目標轉換(所有方法都可以在 transforms 包中找到),這些轉換將在資料載入器中用於呼叫 getitem 函式。 此外,還會傳入一些其他設定引數,但會儲存在本地以備後用。 此函式的主要目的是對資料進行整理,資料和標籤相互對應形成列表,方便獲取,也方便len函式對數字進行計數。
2.例如,資料和標籤儲存在不同的資料夾中,我們可以使用它們的路徑進行組隊並將它們放入列表中。 getItem,根據路徑提取內容; 例如,如果標籤只儲存在乙個檔案中,我們需要讀取裡面的內容,並將其對映到相應的資料檔案。 也就是說,資料檔名和標籤檔名是不一樣的,我們需要依靠第三個索引表來查詢對應關係,還需要讀出來匹配它們。
3.一般情況下,訓練資料被組織成訓練樣本,供getitem快速提取和加快訓練時間。
4.獲取資料集總數:獲取可用樣本數。
5.getItem 獲取指定的索引樣本:根據索引找到對應的樣本,如果有變換,需要先將資料或標籤轉換為指定的資料格式。 例如,將大小調整為相同大小的**; 或對資料進行歸一化; 或轉換為張量格式。 標籤可以轉換為資料格式、坐標格式、一次性熱編碼等。 這些轉換旨在滿足模型輸入要求或提供模型效能。
除了上面提到的基本功能外,一些衍生框架還會新增很多調優功能,比如如果訓練樣本不夠,就新增更多的增強資料; 將資料或標籤放入RAM中,以提供訓練資料; 如果資料和標籤沒有對,請丟棄它們; 這些型別中只有少數被用作樣本資料等,以及這些個性化的調整功能。
資料載入器的作用是管理資料的載入,並為模型所需的資料格式提供輸入。 為了加快訓練速度,DataLoader 將多個資料樣本打包成乙個批處理(相當於將資料和標籤合併到相應的大張量中),並將多個資料樣本一次性傳送到模型中進行訓練。 (這裡的打包是將多個張量堆疊在一起,通過使用迭代器逐個獲取它們來完成它們。 但是,如果樣本的張量不一致,例如,物件檢測的標籤有多個輸出,則會發生直接堆疊錯誤。 因此,DataLoader 提供了 collate fn 函式來自定義打包函式,但要注意滿足模型輸入要求的堆疊張量,並且每次都能在 DataLoader 的迭代器中返回所需的樣本資料和標籤)。
包的數量不宜設定得太小,否則模型難以收斂。 但是,它不應該太大,每個包的數量取決於記憶體容量,如果太大,它可能無法在訓練中保持記憶體。 (溫馨提示:GPU的2次冪可以發揮更好的效能,所以最好設定為相等的數字,但大多數資料集都不能被這些數字整除,所以經常會有剩餘的資料不足以組成一批,所以可以選擇不使用剩餘的資料)。
此外,如果資料按類別排序,直接序列也會影響模型的收斂速度,因此 DataLoader 會提供對資料進行加擾的功能。 除了這些基本功能之外,還有其他方法可以加速訓練,比如把資料放到頁面儲存中,加快讀取速度,在多個程序中執行資料載入器等,只要有足夠的資源,都可以直接配置資料載入器。
附件(見大同)上傳自定義資料集和資料載入器使用場景例程,必要時可以參考。 以上就是這篇博文的全部內容,如果您有任何問題,請在博文下方留言,我會盡快解答(o o)。 感謝您的瀏覽,我們下次再見。
簡單是長期努力的結果,而不是起點-不是我常見問題 1:keras 可以使用這種方法嗎?
A1:不,Keras 是基於 TensorFlow 框架的。
常見問題 2:標籤格式有哪些?
A2:請參閱之前的博文 - BIU了解ai:object detection訓練資料的標籤格式。
FAQ 3:我可以獲取資料載入器的資料並顯示嗎?
A3:可以,但是如果有變換,會轉換成對應的張量,那麼資料就不能直接顯示,需要反轉換。
FAQ 4:train 和 val 是否應該使用相同的資料載入器?
A4:不能說完全一樣,因為 train 和 val 的任務不同,val 不需要考慮模型效能等問題,所以在轉換資料時,不需要考慮資料增強。
常見問題 5:是否可以使用不同格式的影象資料?
A5: 是的,但您需要轉換,只需將其更改為 RBG 格式即可。
登入大同,**附上技術文件,了解更多關於 PyTorch 架構相關的 CV 訓練資料輸入。