title: Pytorch RuntimeError: size mismatch, m1: [1 x 7744], m2: [400 x 120]
body: <p>In a simple CNN that classifies 5 objects, I get a size mis-match error:</p>
  
  <pre><code>"RuntimeError: size mismatch, m1: [1 x 7744], m2: [400 x 120]" in the convolutional layer . 
  </code></pre>
  
  <p>my model.py file:</p>
  
  <pre><code>import torch.nn as nn
  import torch.nn.functional as F
  
  class FNet(nn.Module):
  
  
      def __init__(self,device):
          # make your convolutional neural network here
          # use regularization
          # batch normalization
          super(FNet, self).__init__()
          num_classes = 5
          self.conv1 = nn.Conv2d(3, 6, 5)
          self.conv2 = nn.Conv2d(6, 16, 5)
          # an affine operation: y = Wx + b
          self.fc1 = nn.Linear(16 * 5 * 5, 120)
          self.fc2 = nn.Linear(120, 84)
          self.fc3 = nn.Linear(84, 5)
  
      def forward(self, x):
  
          x = F.max_pool2d(F.relu(self.conv1(x)), (2, 2))
  
          x = F.max_pool2d(F.relu(self.conv2(x)), 2)
          x = x.view(-1, self.num_flat_features(x))
          x = F.relu(self.fc1(x))
          x = F.relu(self.fc2(x))
          x = self.fc3(x)
          return x
  
  
      def num_flat_features(self, x):
          size = x.size()[1:]  # all dimensions except the batch dimension
          num_features = 1
          for s in size:
              num_features *= s
          return num_features
  
  if __name__ == "__main__":
      net = FNet()
  </code></pre>
  
  <p>Complete Error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "main.py", line 98, in &lt;module&gt;
      train_model('../Data/fruits/', save=True, destination_path='/home/mitesh/E yantra/task1#hc/Task 1/Task 1B/Data/fruits')
    File "main.py", line 66, in train_model
      outputs = model(images)
    File "/home/mitesh/anaconda3/envs/HC#850_stage1/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in __call__
      result = self.forward(*input, **kwargs)
    File "/home/mitesh/E yantra/task1#hc/Task 1/Task 1B/Code/model.py", line 28, in forward
      x = F.relu(self.fc1(x))
    File "/home/mitesh/anaconda3/envs/HC#850_stage1/lib/python3.6/site-packages/torch/nn/modules/module.py", line 477, in __call__
      result = self.forward(*input, **kwargs)
    File "/home/mitesh/anaconda3/envs/HC#850_stage1/lib/python3.6/site-packages/torch/nn/modules/linear.py", line 55, in forward
      return F.linear(input, self.weight, self.bias)
    File "/home/mitesh/anaconda3/envs/HC#850_stage1/lib/python3.6/site-packages/torch/nn/functional.py", line 1024, in linear
      return torch.addmm(bias, input, weight.t())
  RuntimeError: size mismatch, m1: [1 x 7744], m2: [400 x 120] at /opt/conda/conda-bld/pytorch-cpu_1532576596369/work/aten/src/TH/generic/THTensorMath.cpp:2070
  </code></pre>