I have two networks: net1 and net2 and an input x. I want to feed the input x to the net1 to generate the pred x1. Then, the pred x1 is fed to the network 2 to generate pred x2.
I want to freeze network net1, while train the net2. The loss is computed as the mse between pred x1 and pred x2. I shows my implementation but I checked that the weights of net1 is still updated during training. How can I fix it?
net1=Model_net1()
net1.eval()
net2=Model_net2()
net2.train()
for param in net1.parameters():
            param.requires_grad = False
with torch.no_grad():  
    pred_x1= net1(x)
    pred_x2= net2(pred_x1)
    loss = mse(pred_x1, pred_x2)
    loss.backward()
    optimizer.step()


Screenshot from 2019-09-05 15-38-33.png1053×270 11.4 KB