こちらのサイトを元に以下の構成のネットワークをPyTorchで実装しようと思ったのですが、
size mismatch, m1: [128 x 256], m2: [128 x 256]ax
というエラーが出てきてしまいました。
当方まだ初学者で、ディープラーニングのお作法やPyTorchの記述方法があまりわかっていないので解決方法を教えていただきたいです。
実装したいネットワーク構成
conv - relu - conv- relu - pool -
conv - relu - conv- relu - pool -
conv - relu - conv- relu - pool -
affine - relu - dropout - affine - dropout - softmax
ソースコード(ネットワーク部分)
class CNNModel (nn.Module): def __init__(self): super(CNNModel, self).__init__() self.conv1=nn.Conv2d(1,16,3,1) self.conv2=nn.Conv2d(16,16,3,1) self.conv3=nn.Conv2d(16,32,3,1) self.conv4=nn.Conv2d(32,32,3,1) self.conv5=nn.Conv2d(32,64,3,1) self.conv6=nn.Conv2d(64,64,3,1) self.pool=nn.MaxPool2d(2,2) self.dropout1=nn.Dropout2d(0.25) self.dropout2=nn.Dropout2d(0.5) self.fc1=nn.Linear(128,256) # ,256 self.fc2=nn.Linear(256,10) def forward(self, x): x=self.conv1(x) x=F.relu(x) x=self.conv2(x) x=F.relu(x) x=self.pool(x) x=self.conv3(x) x=F.relu(x) x=self.conv4(x) x=F.relu(x) x=self.conv5(x) x=F.relu(x) x=self.conv6(x) x=F.relu(x) x=self.pool(x) x=self.dropout1(x) x=x.view(-1,self.num_flat_features(x)) # 128*256 print(x.size()[0]) x=self.fc1(x) x=F.relu(x) x=self.dropout2(x) x=self.fc2(x) x=F.log_softmax(x,dim=1) return x
エラー詳細
--------------------------------------------------------------------------- RuntimeError Traceback (most recent call last) <ipython-input-5-7a8a290ae702> in <module> 144 optimizer.zero_grad() 145 --> 146 output = cnn.forward(x) # WRITE ME (予測の計算) 147 loss = loss_fn(output,t) # WRITE ME (損失関数の計算) 148 loss.backward() # WRITE ME (勾配の計算) <ipython-input-5-7a8a290ae702> in forward(self, x) 97 print(x.size()[0]) 98 ---> 99 x=self.fc1(x) 100 x=F.relu(x) 101 x=self.dropout2(x) /usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs) 548 result = self._slow_forward(*input, **kwargs) 549 else: --> 550 result = self.forward(*input, **kwargs) 551 for hook in self._forward_hooks.values(): 552 hook_result = hook(self, input, result) /usr/local/lib/python3.7/dist-packages/torch/nn/modules/linear.py in forward(self, input) 85 86 def forward(self, input): ---> 87 return F.linear(input, self.weight, self.bias) 88 89 def extra_repr(self): /usr/local/lib/python3.7/dist-packages/torch/nn/functional.py in linear(input, weight, bias) 1608 if input.dim() == 2 and bias is not None: 1609 # fused op is marginally faster -> 1610 ret = torch.addmm(bias, input, weight.t()) 1611 else: 1612 output = input.matmul(weight.t()) RuntimeError: size mismatch, m1: [128 x 256], m2: [128 x 256] at /pytorch/aten/src/THC/generic/THCTensorMathBlas.cu:283
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。