【问题标题】:Does using an image transform significantly slow down training?使用图像变换会显着减慢训练速度吗?
【发布时间】:2022-01-27 08:07:19
【问题描述】:

我看到许多深度学习研究人员经常使用图像变换。它们似乎被视为空闲的 GPU 或 CPU 周期。

例子:

transformations = transforms.Compose([
        transforms.Resize(255),
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
    ])

train_set = datasets.ImageFolder(data_dir + "/train", transform = transformations)

在这种特殊情况下,预先处理图像并保存它们以供将来以其他格式使用不是更好吗?我有时会看到这种情况,但很少见。

或者我错了,GPU 上的转换器是如此之快,不值得额外的代码或麻烦?

【问题讨论】:

    标签: pytorch torchvision


    【解决方案1】:

    这实际上取决于您如何设置数据加载器。一般在 CPU 上进行变换,然后将变换后的数据移动到 GPU。 Pytorch 数据加载器有一个“prefetch_factor”参数,允许它们在 GPU 计算模型的同时预先计算您的数据(使用转换)。话虽如此,使用像这里这样的固定转换,预先计算整个数据集并在计算之前保存它也可能是一种有效的策略。

    【讨论】:

    • 太棒了!从 Keras 开始,还有很多东西要学。正如您所指出的,密钥肯定在数据加载器中。我的数据加载器有一些严重的缺陷。 train_loader = torch.utils.data.DataLoader(train_set, batch_size=64, shuffle=True)train_loader = torch.utils.data.DataLoader(train_set, batch_size=64, shuffle=True, num_workers = 8, prefetch_factor = 8, pin_memory=True, persistent_workers=True)
    猜你喜欢
    • 1970-01-01
    • 2020-03-24
    • 2018-07-31
    • 2016-10-11
    • 2019-06-11
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多