the following picture is a snippet of resnet 18 structure. I got confused about the dimensions. I thought the input size of a layer should be the same as the output size of the previous layer. I wonder those highlighted numbers, shouldn’t have the same value?
you should take a look at the logic of the
forward function, the structure of layers do not represent the flow of tensors.
this is the forward path:
def forward(self, x): x = self.conv1(x) x = self.bn1(x) x = self.relu(x) x = self.maxpool(x) x = self.layer1(x) x = self.layer2(x) x = self.layer3(x) x = self.layer4(x) x = self.avgpool(x) x = x.view(x.size(0), -1) x = self.fc(x) return x
it seems the snippet(layer4) will run as it is.
This is mine
resnet18output, did you use the resnet18 from
torchvisionor some other implementation?
I took it from here:
apparently, I mistakenly initialize resnet with Bottleneck instead of BasicBlock. However, the problem is still there: