Typically the size of x in the computations of layers is torch.Size([128, 500])

sorry for confusion:
here is the detail:
CombustionModel(
  (Fc1): Linear(in_features=2, out_features=500, bias=True)
  (Fc2): Linear(in_features=500, out_features=500, bias=True)
  (Fc3_bottleneck): Linear(in_features=500, out_features=100, bias=True)
  ......

Following is the size of every layer:
print(x.size()) #torch.Size([128, 500]), x is input of network
x = self.Fc1(x) #128x500
x = F.relu(x) #128x500
        
'''First ResNet Block'''
 res_calc = self.Fc2(x) #128x500
 res_calc = F.relu(res_calc) #128x500
 res_calc = self.Fc3_bottleneck(res_calc) #128X100
 x = F.relu(torch.add(x, res_calc)) # x is 128x500 whereas res_calc is 128x100

I know, I can’t add two different tensors of different sizes but there must be a way for downsampling.
I want to downsample x to 128x100.
Is their any solution by pytorch to downsample this or any other way outside pytorch?
Your suggested solution has one more extra layer worth of computations before every bottleneck layer which is not very efficient.