# Size mismatch, m1: [1 x 3512320], m2: [2048 x 1000] at /opt/conda/conda-bld/pytorch_1513368888240/work/torch/lib/TH/generic/THTensorMath.c:1416

Hi , I am trying to do image segmentation.

My image size is 1296x966

But ,I am getting size mismatch, m1: [1 x 3512320], m2: [2048 x 1000] at /opt/conda/conda-bld/pytorch_1513368888240/work/torch/lib/TH/generic/THTensorMath.c:1416

Here is my model definition :

``````import numpy as np
import torch

from PIL import Image

def colormap(n):
cmap=np.zeros([n, 3]).astype(np.uint8)

for i in np.arange(n):
r, g, b = np.zeros(3)

for j in np.arange(8):
r = r + (1<<(7-j))*((i&(1<<(3*j))) >> (3*j))
g = g + (1<<(7-j))*((i&(1<<(3*j+1))) >> (3*j+1))
b = b + (1<<(7-j))*((i&(1<<(3*j+2))) >> (3*j+2))

cmap[i,:] = np.array([r, g, b])

return cmap

class Relabel:

def __init__(self, olabel, nlabel):
self.olabel = olabel
self.nlabel = nlabel

def __call__(self, tensor):
assert isinstance(tensor, torch.LongTensor), 'tensor needs to be LongTensor'
tensor[tensor == self.olabel] = self.nlabel
return tensor

class ToLabel:

def __call__(self, image):

class Colorize:

def __init__(self, n=22):
self.cmap = colormap(256)
self.cmap[n] = self.cmap[-1]
self.cmap = torch.from_numpy(self.cmap[:n])

def __call__(self, gray_image):
size = gray_image.size()
color_image = torch.ByteTensor(3, size[1], size[2]).fill_(0)

for label in range(1, len(self.cmap)):

return color_image

import torch
import torch.nn as nn
import torch.nn.init as init
import torch.nn.functional as F
import numpy as np
from torch.utils import model_zoo
from torchvision import models

class PSPDec(nn.Module):

def __init__(self, in_features, out_features, downsize, upsize=18):
super(PSPDec,self).__init__()

self.features = nn.Sequential(
nn.AvgPool2d(downsize, stride=downsize),
nn.Conv2d(in_features, out_features, 1, bias=False),
nn.BatchNorm2d(out_features,momentum=.95),
nn.ReLU(inplace=True),
nn.UpsamplingBilinear2d(upsize)
)

def forward(self, x):
return self.features(x)

class PSPNet(nn.Module):

def __init__(self, num_classes):
super(PSPNet,self).__init__()

#init_net=deeplab_resnet.Res_Deeplab()

self.resnet = models.resnet101(pretrained=True)

#self.resnet=init_net

for m in self.modules():
if isinstance(m, nn.Conv2d):
#m.stride = 1
if isinstance(m, nn.BatchNorm2d):

self.layer5a = PSPDec(21, 5, 18)
self.layer5b = PSPDec(21, 5, 9)
self.layer5c = PSPDec(21, 5, 6)
self.layer5d = PSPDec(21, 5, 3)

self.final = nn.Sequential(
nn.BatchNorm2d(25, momentum=.95),
nn.ReLU(inplace=True),
nn.Dropout(.1),
nn.Conv2d(25, num_classes, 1),
)

def forward(self, x):

x=self.resnet(x)
x=x[0]

x = self.final(torch.cat([
x,
self.layer5a(x),
self.layer5b(x),
self.layer5c(x),
self.layer5d(x),
], 1))

#print('final', x.size())

return F.upsample_bilinear(x,136)
``````

Here is my transformation code :

``````input_transform = Compose([
#CenterCrop(512),
Resize(1296),
ToTensor()
#Normalize([.485, .456, .406], [.229, .224, .225]),
])
target_transform = Compose([
#CenterCrop(256),
Resize(1296),
ToLabel()
#Relabel(255, 21),
])
``````

Exception is coming from here :

``````
<ipython-input-46-4df4b20a63e8> in forward(self, x)
38
39
---> 40         x=self.resnet(x)
41         x=x[0]
``````