【问题标题】:How to make PyTorch DataLoader from scratch?如何从头开始制作 PyTorch DataLoader?
【发布时间】:2021-02-15 14:59:35
【问题描述】:

是否可以从头开始重新创建一个简单版本的 PyTorch DataLoader? 该类应该能够根据批次大小返回当前批次。

例如,下面的代码只允许我当时返回一个示例

X = np.array([[1,2],[3,4],[5,6],[6,7]])

class DataLoader:
    def __init__(self, X, b_size):
        self.X = X
        self.b_size = b_size
    
    def __len__(self):
        return len(self.X)
    
    def __getitem__(self, index):
        return self.X[index]

但我想要实现的是,如果我指定 b_size=2,它将返回:

Iteration 0: [[1,2],[3,4]]
Iteration 1: [[5,6],[7,8]]

是否可以在 Python 中做类似的事情?我不能使用 DataLoader 类。

【问题讨论】:

    标签: python iterator pytorch dataloader


    【解决方案1】:
    X = np.array([[1,2],[3,4],[5,6],[6,7]])
    
    class DataLoader:
        def __init__(self, X, b_size):
            self.X = X
            self.b_size = b_size
        
        def __len__(self):
            return len(self.X)//self.b_size
        
        def __getitem__(self, index):        
            return self.X[index*self.b_size:index*self.b_size+self.b_size]
    
    d = DataLoader(X, 2)
    for i in range(len(d)):
      print (f"Iteration {i}: {d[i]}")
    

    输出:

    Iteration 0: [[1 2]
     [3 4]]
    Iteration 1: [[5 6]
     [6 7]]
    

    【讨论】:

    • 原来如此简单..谢谢。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多