Not sure, but the problem might be arising in how the CombinedModel() is created.
class CombinedModel(nn.Module):

	def __init__(self,mod1 = submodule1(), mod2 = submodule2(), mod3 = submodule3()):
		super().__init__()

		self.mod1 = mod1
		self.mod2 = mod2
		self.mod3 = mod3

	def forward(self,x):
		
		x = self.mod3(self.mod2(self.mod1(x)))

		return x

Is the fact that I am calling the submodule instances inside the creation of the combined module class making it point to the same weight tensors?