#python #pytorch #torchvision
#python #pytorch #torchvision
Вопрос:
Я пытаюсь обучить модель на базе данных UCF11 в PyTorch.
Я пытаюсь реализовать случайное увеличение выборок видеоданных.
self.transforms_list = [transforms.ColorJitter(brightness=0.225),
transforms.ColorJitter(contrast=0.225),
transforms.ColorJitter(saturation=0.1),
transforms.ColorJitter(hue=0.1),
transforms.Grayscale(num_output_channels=3),
transforms.RandomHorizontalFlip(p=0.25),
transforms.RandomRotation(30.0),
transforms.GaussianBlur((5,5), sigma=(0.1, 2.0))]
transformations = random.sample(self.transforms_list,random.randint(1,8)) [transforms.RandomCrop(224)]
transformations = transforms.Compose(transformations)
Но когда я пытаюсь применить эти преобразования к каждому кадру видеоклипа, я получаю эту ошибку
RuntimeError: The expanded size of the tensor (320) must match the existing size (224) at non-singleton dimension 2.
Target sizes: [3, 240, 320]. Tensor sizes: [3, 224, 224]
Не могу понять, почему возникает эта ошибка. Я проверил исходный код, но не вижу причины возникновения этой ошибки.
Я создал пользовательский класс преобразования для RandomCrop, но все равно возникает та же ошибка.
Пожалуйста, помогите!!
Редактировать:
Поскольку вход представляет собой видео, вход имеет форму (T, C, H, W)
Я применял преобразования к каждому кадру в видео следующим образом
vid[i] = transformations(vid[i])
Создал новую переменную new_vid = []
и изменил код на
new_vid.append(transformations(vid[i]))
В конце, vid = torch.cat(new_vid,dim = 0)
Я получил видео с формой (T, 3,224,224)
Комментарии:
1. Где произошла ошибка? при
torch.cat
? послеRandomCrop
того, как весь кадр должен иметь размер (3,224,224), это может произойти из-за того, что вы пытаетесь объединить кадр с другой формой2. Например, @Mr …. Раньше я
torch.cat
создавал отдельный тензор. До этого я пытался присвоить обрезанный фреймvid[i]
, и это вызывало ошибку, потому что по ошибке он имел другую форму. Часть РЕДАКТИРОВАНИЯ — это то, как ошибка была решена.