-
mat1 dim 1 must match mat2 dim 0 원인공부/오늘의 삽질 2021. 1. 22. 21:07
발생 이유 :
데이터가 레이어를 통과 후 shape가 변화하는데 변화된 데이터의 차원과
전결합층에서 쓰는 linear의 차원이 서로 다르면 발생함
예시#합성곱층
self.layer1 = nn.Sequential(
torch.nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1),
torch.nn.ReLU(),
torch.nn.MaxPool2d(kernel_size=2))
# input size = 128x128
# input shape = (batch_size, 1(채널),128(h),128(w))
# conv = (batch_size,32,128,128)
# pool = (batch_size,32,64,64)
# 두번째층
self.layer2 = torch.nn.Sequential(
torch.nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1),
torch.nn.ReLU(),
torch.nn.MaxPool2d(kernel_size=2)) # ,stride=2))# ImgIn shape=(batch_size, 32, 64, 64)
# Conv = (batch_size, 64, 64, 64)
# Pool = (batch_size, 64, 32, 32)
# 세번째층
self.layer3 = torch.nn.Sequential(
torch.nn.Conv2d(64, 128, kernel_size=3, stride=1, padding=1),
torch.nn.ReLU(),
torch.nn.MaxPool2d(kernel_size=2)) # ,stride=2))
# ImgIn shape=(batch_size, 64, 32, 32)
# Conv = (batch_size, 128, 32, 32)
# Pool = (batch_size, 128, 16, 16)
#전결합층(노드에서 노드로 결합)
self.fc = nn.Linear(128*16*16, 4)이 부분에서 nn.Linear 함수의 첫번째 입력 부분의 크기와 마지막 레이어를 통과한 데이터의 차원 크기가 서로 다르면
mat1 dim 1 must match mat2 dim 0 문제가 발생하는 듯하다.'공부 > 오늘의 삽질' 카테고리의 다른 글
행렬과 x,y 간단하게 외우기 (0) 2021.10.08 [통신] gRPC call 실행 중 gradlew installDist 명령어 오류 (0) 2021.05.31 파이참에서 소스 코드 2개 서로 비교하기 (0) 2020.12.28 만든 서버에 새로운 프로젝트를 생성하고 나서 할 일(로컬과 연결될시) (0) 2020.12.16 [서버] 설정한 서버를 local과 연결하기(2) (0) 2020.12.02