數(shù)據(jù)加載器

數(shù)據(jù)加載器是指將數(shù)據(jù)集讀入內(nèi)存并進(jìn)行預(yù)處理后,以可供模型訓(xùn)練使用的形式傳輸給模型的程序。以下是一個(gè)簡(jiǎn)單的數(shù)據(jù)加載器的示例代碼,假設(shè)數(shù)據(jù)集為圖像數(shù)據(jù)集,每個(gè)樣本包含一張圖像和對(duì)應(yīng)的標(biāo)簽。

上述代碼中,我們首先定義了一個(gè)自定義的 Dataset
類 MyDataset
,其中 __len__
方法返回?cái)?shù)據(jù)集的長(zhǎng)度,__getitem__
方法根據(jù)索引返回一個(gè)樣本,并進(jìn)行預(yù)處理(可選)。我們使用 torchvision.transforms
中的一些預(yù)處理函數(shù)對(duì)圖像進(jìn)行了預(yù)處理,比如將圖像縮放到統(tǒng)一的大小、進(jìn)行隨機(jī)水平翻轉(zhuǎn)、將圖像轉(zhuǎn)化為張量,并將像素值歸一化到 [-1, 1] 之間。然后,我們將訓(xùn)練集和驗(yàn)證集分別封裝為 MyDataset
類型的對(duì)象 train_dataset
和 valid_dataset
,并使用 DataLoader
類將它們封裝為可迭代的加載器對(duì)象 train_loader
和 valid_loader
。在 DataLoader
中我們?cè)O(shè)置了 batch_size
、shuffle
和 num_workers
參數(shù),其中 batch_size
表示每個(gè)批次的樣本數(shù),shuffle
表示是否在每個(gè) epoch 開(kāi)始時(shí)打亂數(shù)據(jù)集,num_workers
表示數(shù)據(jù)加載所需的進(jìn)程數(shù)。然后我們就可以通過(guò)迭代器 train_loader
和 valid_loader
來(lái)訪問(wèn)數(shù)據(jù)集中的每個(gè)批次數(shù)據(jù)進(jìn)行模型的訓(xùn)練和驗(yàn)證了。