咪免直播高品质美女在线视频互动社区_咪免直播官方版_咪免直播直播视频在线观看免费版下载

您的位置:首頁 > 軟件教程 > 教程 > 如何使用 Pytorch 中的 DataSet 和 DataLoader

如何使用 Pytorch 中的 DataSet 和 DataLoader

來源:好特整理 | 時間:2024-10-30 09:48:34 | 閱讀:60 |  標簽: a T S C 深度學(xué)習(xí)   | 分享到:

如何使用數(shù)據(jù)集DataSet? 在介紹DataLoader之前,需要先了解數(shù)據(jù)集DataSet的使用。Pytorch中集成了很多已經(jīng)處理好的數(shù)據(jù)集,在pytorch的torchvision、torchtext等模塊有一些典型的數(shù)據(jù)集,可以通過配置來下載使用。 以CIFAR10 數(shù)據(jù)集為例,文檔已經(jīng)描

Pytorch中集成了大量已處理好的數(shù)據(jù)集,在torchvision、torchtext等模塊中都有一些典型的數(shù)據(jù)集,用戶可以通過配置來下載并使用這些數(shù)據(jù)集。例如,CIFAR10 數(shù)據(jù)集已經(jīng)被描述得非常清晰了。其中要注意的是 transform 這個參數(shù),可以用來將圖像轉(zhuǎn)換為所需要的格式,比如將PIL格式的圖像轉(zhuǎn)化為tensor格式的圖像。

如何使用 Pytorch 中的 DataSet 和 DataLoader

在介紹 DataLoader 之前,需要先了解如何使用 DataSet。Pytorch 中的DataSet是一個存儲所有數(shù)據(jù)(例如圖像、音頻)的容器。DataLoader 就是另一個具有更好收納功能的容器,其中分隔開來很多小隔間,可以自己設(shè)定一個小隔間有多少個數(shù)據(jù)集的數(shù)據(jù)來組成,每次將數(shù)據(jù)放進收納小隔間的時候要不要把源數(shù)據(jù)集打亂再進行收納等等。

如何使用 Pytorch 中的 DataSet 和 DataLoader

給定了一個數(shù)據(jù)集,用戶可以決定如何從數(shù)據(jù)集里面拿取數(shù)據(jù)來進行訓(xùn)練,比如一次拿取多少數(shù)據(jù)作為一個對象來對數(shù)據(jù)集進行分割,對數(shù)據(jù)集進行分割之前要不要打亂數(shù)據(jù)集等等。DataLoader的結(jié)果就是一個對數(shù)據(jù)集進行分割的大字典列表,列表中的每個對象都是由設(shè)置的多少個數(shù)據(jù)集的對象組合而成的。

如何使用 DataLoader?

__getitem__方法

首先需要先理解 __getitem__ 方法。__getitem__被稱為魔法方法,在Python中定義一個類的時候,如果想要通過鍵來得到類的輸出值,就需要 __getitem__ 方法。__getitem__ 方法的作用就是在調(diào)用類的時候自動的運行 __getitem__ 方法的內(nèi)容,得結(jié)果并返回。

    
        class Fib():
            def __init__(self,start=0,step=1):
                self.step=step
            def __getitem__(self, key):
                a = key+self.step
                return a
        s=Fib()
        s[1]
    

例如,在Pytorch中的CIFAR10數(shù)據(jù)集中,可以看到源碼中的 __getitem__ 方法是這樣的。

    
        def __getitem__(self, index: int) -> Tuple[Any, Any]:
            img, target = self.data[index], self.targets[index]
            img = Image.fromarray(img)
            if self.transform is not None:
                img = self.transform(img)
            if self.target_transform is not None:
                target = self.target_transform(target)
            return img, target
    

DataLoader 語法

用戶可以在Pytorch的Documents文檔中查看DataLoader的使用方法。其中介紹幾個比較常用的參數(shù),例如 dataset,batch_size,shuffle,num_workers 和 drop_last。其中,batch_size表示在數(shù)據(jù)集容器中一次拿取多少數(shù)據(jù),shuffle表示是否在每次操作的時候打亂數(shù)據(jù)集,一般選擇為True。num_workers表示多線程進行拿取數(shù)據(jù)操作,0表示只在主線程中操作。drop_last表示如果拿取數(shù)據(jù)有余數(shù),是否保留最后剩下的部分。

  • dataset:就是用戶的數(shù)據(jù)集,構(gòu)建好數(shù)據(jù)集對象后傳入即可。

  • shuffle:是否在每次操作的時候打亂數(shù)據(jù)集,一般選擇為True。

  • num_workers: 多線程進行拿取數(shù)據(jù)操作,0表示只在主線程中操作。

  • drop_last:如果拿取數(shù)據(jù)有余數(shù),是否保留最后剩下的部分。

例如,在后面的代碼中,如果設(shè)置 drop_last=False,那么一共有156次數(shù)據(jù)拿取,并且最后一次剩余的部分不會被丟棄。如果設(shè)置 drop_last=True,那么最后剩余的部分被丟棄,并且拿取次數(shù)也少了一次。

如何使用 Pytorch 中的 DataSet 和 DataLoader

使用 DataLoader

初步使用的代碼如下:

    
        import torchvision
        from torch.utils.data import DataLoader
        from torch.utils.tensorboard import SummaryWriter
        test_data=torchvision.datasets.CIFAR10("dataset",train=False,transform=torchvision.transforms.ToTensor())
        test_dataloader=DataLoader(dataset=test_data,batch_size=4,shuffle=True,num_workers=0,drop_last=True)
        writer=SummaryWriter("logs")
        step=0
        for data in test_dataloader:
            images,targets=data
            writer.add_images("test_03",images,step)
            step=step+1
        writer.close()
    

然后配合使用tensorboard就可以直觀體會到它的使用方法了。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認同期限觀點或證實其描述。

a 1.0
a 1.0
類型:休閑益智  運營狀態(tài):正式運營  語言:中文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動

《alittletotheleft》官網(wǎng)正版是一款備受歡迎的休閑益智整理游戲。玩家的任務(wù)是對日常生活中的各種雜亂物

相關(guān)視頻攻略

更多

掃二維碼進入好特網(wǎng)手機版本!

掃二維碼進入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2024 haote.com 好特網(wǎng)