Thanks for your reply Bika!
What you say would make sense since batch size is 3 and 3*512 = 1536.
When I print the shape of flattening self.model_Head(x) I get [3, 512]:
x = self.model_Head(x)
print('x head', x.size()) #torch.Size([3, 512, 1, 1])
print('x head flattened ', nn.Flatten()(x).size() ) #x head flattened  torch.Size([3, 512])

self.classifier is equivalent to:
Linear(in_features=512, out_features=9, bias=True)
I am simply trying to put the head of another model verbatim (ResNet 18) onto a new input with the same dimensions so I find it strange  that the dimensions seem to match fine for everything up to the linear layer.