본문 바로가기

인공지능/Python

RuntimeError: stack expects each tensor to be equal size 에러 해결

Problem

mask rcnn 모델을 학습하기위해 dataset과 dataloader를 구성한 뒤 코드를 실행했을 때, 다음과같은 에러가 발생했다

RuntimeError: stack expects each tensor to be equal size, but got [3, 680, 720] at entry 0 and [3, 580, 620] at entry 4

 

Solution

batch로 묶는 이미지의 사이즈가 달라서 묶을 수 없다고하는 뜻이라, dataloader setup의 transform에 resize를 넣어서 해결해야 한다.

def get_transform(self):
        transform = [
            transforms.Resize((580,620)),
            ToTensor()
        ]
        return Compose(transform)

단, transform에 들어갈 인자가 2개이상이면 아래와같은 에러가 발생할 수 있음.

img, target = self.transforms(img, target)
typeerror: forward() takes 2 positional arguments but 3 were given