Dear senior programmers,
I have obtained the following network structure by modifying someone’s else network. I have added the dilation keyword so as to obtain dilated convolutional layer. However, given that there were some concatenation in the “forward part” of the network, I have not been able to adjust the output channels and the concatenation properly. Please could anyone explain to me how to fix? The network is as follows.
class net(nn.Module): def __init__(self): super(net, self).__init__() self.conv1 = nn.Conv2d(in_channels=3, out_channels=3, kernel_size=1) self.conv2 = nn.Conv2d(in_channels=3, out_channels=3, kernel_size=3, padding=2, dilation=2) self.conv3 = nn.Conv2d(in_channels=3, out_channels=3, kernel_size=5, padding=2, dilation=2) self.conv4 = nn.Conv2d(in_channels=6, out_channels=3, kernel_size=7, padding=3, dilation=2) self.conv5 = nn.Conv2d(in_channels=12, out_channels=3, kernel_size=3, padding=1) self.b = 1 def forward(self, x): x1 = F.relu(self.conv1(x)) #print(x1.shape) x2 = F.relu(self.conv2(x1)) print(x2.shape) cat1 = torch.cat((x1, x2), 2) x3 = F.relu(self.conv3(cat1)) print(x3.shape) cat2 = torch.cat((x2, x3), 2) x4 = F.relu(self.conv4(cat2)) cat3 = torch.cat((x1, x2, x3, x4),2) k = F.relu(self.conv5(cat3)) if k.size() != x.size(): raise Exception("k, haze image are different size!") output = k * x - k + self.b return F.relu(output)
The running error is as follows.
RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 2. Got 476 and 480 in dimension 3 at /opt/conda/conda-bld/pytorch_1573049304260/work/aten/src/THC/generic/THCTensorMath.cu:71
Please, how can I fix this error? I would also like to know the relationships between input channel, output channel, padding and dilation.
Thank you for your time and patience