반응형

2021/11/09 3

RuntimeError: stack expects each tensor to be equal size, but got ~

안녕하세요 pytorch를 사용하여 학습 및 추론을 진행 할 때 RuntimeError: stack expects each tensor to be equal size, but got ~과 같은 에러가 DataLoader에서 발생하는 경우가 종종 있습니다. 해당 에러는 사용하는 데이터셋의 이미지의 사이즈가 서로 달라서입니다. 사이즈가 다르게되면 Array나 Tensor의 각 차원이 동일하지 않기 때문에 batch형태로 묶어줄 수 없기 때문에 발생합니다. 따라서 해결하기 위해서는 torchvision에서 제공하는 transforms.resize()함수를 사용하거나 그 외에 다양한 방법으로 Resize를 진행해주시면 됩니다. import torchvision.transforms as transforms tra..

AI 2021.11.09

RuntimeError: The size of tensor a (4) must match the size of tensor b (3) at non-singleton dimension 0

안녕하세요 Pytorch를 사용하여 학습을 진행하는 과정에서 DataLoader를 진행하는 과정에서 다음과 같은 에러가 발생하는걸 종종 확인 할 수 있습니다. 저의 케이스에서는 학습 시킬 이미지 중에 채널이 3개만 있는 이미지 뿐만 아니라 채널이 4개가 있는 이미지가 포함되어 있을 때 발생합니다. 왜냐하면 저의 경우 normalize를 ((0.5,0.5,0.5),(0.5,0.5,0.5)) 3개의 채널에 대해서만 진행을 하기 때문입니다. 따라서 이 에러를 해결하기 위해서는 Dataset 클래스에서 이미지를 불러올 다음과 같이 수정했습니다. image = Image.open(self.img_list[idx]) -> image = Image.open(self.img_list[idx]).convert('RGB'..

AI 2021.11.09

[python] class 오버라이딩(overriding), 상속, super()

안녕하세요, 파이썬은 객체지향 언어이다 보니 class을 사용하여 코딩을 하는 경우가 많습니다~ class을 사용하다보면 상속 및 오버라이딩을 종종 접하게 되는데 해당 내용에대해서 간단하게 알아보겠습니다. 상속와 오버라이딩 둘다 포함되어있는 예제코드를 우선 살펴보겠습니다. 그림을 보시면 parent()가 부모 클래스이고 daughter() 클래스와 son() 클래스가 parent클래스를 상속받는 것을 확인 할 수 있습니다. 그리고 son(), daughter() 클래스를 인스턴스화 시키고 실행 시켜본 결과 오버라이딩된 결과 또는 상속받은걸 그대로 내뱉는 결과들을 확인 하실 수 있습니다~ 그 다음으로, super()에 대해서도 같이 알아보겠습니다. super명령어는 상속 관계에서 상속의 대상인 부모 클래스..

python 2021.11.09
반응형