반응형

RuntimeError: stack expects each tensor to be equal size, but got
return torch.stack(batch, 0, out=out)
RuntimeError: stack expects each tensor to be equal size, but got [3, 512, 512] at entry 0 and [3, 768, 768] at entry 2
RuntimeError: stack expects each tensor to be equal size, but got
stack에서 모든 tensor size가 동일할 것을 요구했지만 다른 경우가 있을 수 있습니다.
resize를 진행
class ImagePathDataset(torch.utils.data.Dataset):
def __init__(self, files, transforms=None):
self.files = files
self.transforms = transforms
# Debug print to verify transforms
print("Transforms:", self.transforms)
def __getitem__(self, i):
path = self.files[i]
img = Image.open(path).convert("RGB")
# Debug print before transform
print(f"Before transform - Image {i} size:", img.size)
if self.transforms is not None:
img = self.transforms(img)
# Debug print after transform to verify size
if isinstance(img, torch.Tensor):
print(f"After transform - Image {i} shape:", img.shape)
else:
print(f"After transform - Image {i} size:", img.size)
return img
transforms = TF.Compose([
TF.Resize((512, 512)),
TF.ToTensor()
])
dataset = ImagePathDataset(file_path, transforms=transforms)
위 코드처럼 transform에 resize를 진행하면 해결됩니다.
transforms = TF.Compose([
TF.Resize((512, 512)),
TF.ToTensor()
])
dataset = ImagePathDataset(file_path, transforms=transforms)
모든 path를 동일하게 만들면 stack 이 모두동일해야 한다는 에러가 해결됩니다.
반응형
'Error and Solve' 카테고리의 다른 글
| [코드] PIL image를 show 하기 / numpy array plt.show (0) | 2024.12.08 |
|---|---|
| [에러 해결] AttributeError: module 'PIL.Image' has no attribute 'ExifTags'/ pip install --upgrade Pillow (0) | 2024.12.08 |
| [해결] np.savez_compressed 에 파일명 (0) | 2024.12.08 |
| [에러 해결] FileNotFoundError : bpe_simple_vocab_16e6 txt gz (0) | 2024.12.02 |
| [코드] 디렉토리 트리 구조로 볼 수 있는 tree 패키지에 대해 배워보기 / 자주 쓰는 명령어 tree -d -L 2 (0) | 2024.11.07 |