I’m not sure, if this would fit your use case, but you could directly manipulate a model attribute via:
class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.fc1 = nn.Linear(1, 1)
        self.fc2 = nn.Linear(1, 1)
        self.switch = 0
        
    def forward(self, x):
        if self.switch == 0:
            print('using fc1')
            x = self.fc1(x)
        elif self.switch == 1:
            print('using fc2')
            x = self.fc2(x)
        else:
            print('returning x')
        return x

model = MyModel()

for epoch in range(3):
    x = torch.randn(1, 1)
    model.switch = epoch
    out = model(x)

> using fc1
using fc2
returning x