【问题标题】:What are the benefits of using class when defining a dataloader in Pytorch?在 Pytorch 中定义数据加载器时使用类有什么好处?
【发布时间】:2021-10-21 05:46:20
【问题描述】:

我在下面有以下数据加载器:

def load_dataset(size_batch, size):
    data_path = "/home/bledc/dataset/test_set/crops_BSD"
    transformations = transforms.Compose([
        transforms.Grayscale(num_output_channels=1),
        transforms.ToTensor()
        ])

    train_dataset = datasets.ImageFolder(
        root=data_path,
        transform=transformations
    )
    train_loader = torch.utils.data.DataLoader(
        train_dataset,
        batch_size=size_batch,
        shuffle=True,
        num_workers=0,
        drop_last=True
    )
    return train_loader

我在训练循环中使用以下内容对其进行迭代:

data_loader = load_dataset(batch_size, width)
for data in data_loader:
        model.zero_grad()
        optimizer.zero_grad()
        img, _ = data
        img = img.to(device)

谁能向我解释将 load_dataset() 函数写入类有什么好处?原因是我一直在使用上面的模板从我在网上找到的代码中加载数据,但似乎大多数代码库都使用class LoaderName(Dataset),然后定义初始条件和 super()。

谢谢。

【问题讨论】:

  • 在你的情况下,没有。由于datasets.ImageFolder 适合您的数据集,因此您无需实现任何东西。在您的情况下不需要自定义实现。当需要自定义行为时,通常会实现一个类。
  • 感谢@Berriel 解决了问题。如果您想发表评论作为答案,我会将其标记为已解决。
  • 没有必要。如果愿意,您甚至可以删除问题。

标签: python oop pytorch computer-vision pytorch-dataloader


【解决方案1】:

用@Berriel 的话来说:

在你的情况下,没有。随着 datasets.ImageFolder 适合您的数据集,您 不需要实现任何东西。不需要定制 在你的情况下实施。一个类通常在一个 需要自定义行为。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多