PyTorchでデータをロードするには、DataLoaderをどのように使用しますか?

PyTorchでDataLoaderを使用してデータをロードする場合、主要なステップは次のとおりです:

  1. データセットオブジェクトを作成するには、まずtorch.utils.data.Datasetクラスを継承し、__len__と__getitem__メソッドを実装する必要があります。__len__メソッドはデータセットのサイズを返し、__getitem__メソッドは与えられたインデックスに対応するデータサンプルを返す必要があります。
  2. データセットインスタンスを作成します:ステップ1で作成したデータセットオブジェクトに基づいて、データセットインスタンスを作成します。
  3. torch.utils.data.DataLoaderクラスを使用してデータローダーを作成し、データセットインスタンスをパラメーターとして渡します。batch_sizeやshuffleなどのパラメーターを設定することで、データのロード方法を制御することができます。
  4. データローダーを反復処理: データローダーをforループを使用して反復処理し、各イテレーションで1つのバッチのデータが返されます。 これらのデータをモデルに渡してトレーニングを行うことができます。

以下はサンプルコードです:

import torch
from torch.utils.data import Dataset, DataLoader

# 创建数据集对象
class MyDataset(Dataset):
    def __init__(self):
        self.data = [1, 2, 3, 4, 5]
    
    def __len__(self):
        return len(self.data)
    
    def __getitem__(self, idx):
        return self.data[idx]

# 创建数据集实例
dataset = MyDataset()

# 创建数据加载器
dataloader = DataLoader(dataset, batch_size=2, shuffle=True)

# 遍历数据加载器
for batch_data in dataloader:
    print(batch_data)

上記の例では、まずシンプルなデータセットオブジェクトであるMyDatasetを作成し、そのデータセットオブジェクトを使用してデータセットインスタンスdatasetを作成しました。次に、DataLoaderクラスを使用して、batch_sizeを2、shuffleをTrueに設定したデータローダーdataloaderを作成しました。最後にforループを使用してデータローダーを反復処理し、各イテレーションでbatch_sizeが2のデータが返されるようにしました。

bannerAds