If I understood it right, Fc1 should be as below to take input 128x128x500
(Fc1): Linear(in_features=500, out_features=500, bias=True)

Just wondering why it didn’t throw error there? 
Making the network as below:
CombustionModel(
  (Fc1): Linear(in_features=500, 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)
...
)

Thus, forward() will look like
# input 128x128x500 batchx128x500
x = self.Fc1(x) # 128x128x500 in_features=500, out_features=500
x = F.relu(x) # 128x128x500
        
'''First ResNet Block'''
 res_calc = self.Fc2(x) # 128x128x500
 res_calc = F.relu(res_calc) # 128x128x500
 res_calc = self.Fc3_bottleneck(res_calc) # 128x128x100 in_features=500, out_features=100
 x = F.relu(torch.add(x, res_calc)) # add(128x128x500, 128x128x100) size doesn't match

Of course, size doesn’t match.