【发布时间】:2021-09-12 11:36:48
【问题描述】:
我有一种情况,我需要将 ImageFolder 与 alimentations 库一起使用来在 pytorch 中进行扩充 - 自定义数据加载器不是一个选项。
为此,我被难住了,我无法让 ImageFolder 与专辑一起工作。我已经尝试过这些方面的东西:
class Transforms:
def __init__(self, transforms: A.Compose):
self.transforms = transforms
def __call__(self, img, *args, **kwargs):
return self.transforms(image=np.array(img))['image']
然后:
trainset = datasets.ImageFolder(traindir,transform=Transforms(transforms=A.Resize(32 , 32)))
traindir 是一些带有图像的目录。然而,我得到了一个奇怪的错误:
RuntimeError: Given groups=1, weight of size [16, 3, 3, 3], expected input[1024, 32, 32, 3] to have 3 channels, but got 32 channels instead
而且我似乎找不到一个可重现的示例来使简单的 aug 管道与 imagefolder 一起工作。
更新 在@Shai 的推荐下,我现在这样做了:
class Transforms:
def __init__(self):
self.transforms = A.Compose([A.Resize(224,224),ToTensorV2()])
def __call__(self, img, *args, **kwargs):
return self.transforms(image=np.array(img))['image']
trainset = datasets.ImageFolder(traindir,transform=Transforms())
但我被扔了:
self.padding, self.dilation, self.groups)
RuntimeError: Input type (torch.cuda.ByteTensor) and weight type (torch.cuda.FloatTensor) should be the same
【问题讨论】:
-
您似乎错过了将尺寸从
hxwxc置换为cxhxw的结局ToTensor()变换class="comcopy">跨度> -
嗯,我不确定如何将
toTensor()传递给这个 :( 如果我传递一个列表,我会收到一个错误,说列表不可调用。:( -
oyu 应该在调整大小转换后“组合”
ToTensor()。 -
@Shai:我按照你的建议做了,但似乎引发了另一个错误:(我已将其作为问题的更新发布。
标签: pytorch conv-neural-network albumentations