我面临一个奇怪的问题:我有一堆不同大小的图像,我正在尝试对这些图像进行训练+推断,并且我有以下示例转换代码:
import augly.image as imaugs
import augly.utils as utils
self.infer_transform = transforms.Compose([
imaugs.PadSquare(p=1),
transforms.Resize([384], interpolation=torchvision.transforms.InterpolationMode.BICUBIC),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])
当我使用 batchsize >1 时,我会被抛出:
RuntimeError: stack expects each tensor to be equal size, but got [3, 384, 384] at entry 0 and [3, 385, 384] at entry 3
我觉得这真的很奇怪,因为在 PadSquare 之后,当我使用单个 int 调整大小时,它应该给我一个方形图像 - 但它似乎没有......这是为什么?这是一个错误吗?它几乎看起来像是一些舍入错误(在条目 0 和 [3, 385, 384] 处得到 [3, 384, 384])。
但是,如果我这样做:
self.infer_transform = transforms.Compose([
imaugs.PadSquare(p=1),
transforms.Resize((384,384), interpolation=torchvision.transforms.InterpolationMode.BICUBIC),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])
它工作正常...
这背后的原因是什么?我很困惑!当我在说 colab 中尝试示例图像时,它们似乎具有相同的大小......