如何只训练神经网络的前端?

时间:2019-12-04 23:33:37

标签: neural-network pytorch

我正在使用pytorch来训练部分网络。例如,我有一个模型结构

hidden1 = Layer1(x)
hidden2 = Layer2(hidden1)
out = Layer3(hidden2)

如果我只想训练Layer3,我可以使用

hidden1 = Layer1(x)
hidden2 = Layer2(hidden1).detach()
out = Layer3(hidden2)

但是,这次我只想训练Layer1。我该如何实现?谢谢。

1 个答案:

答案 0 :(得分:1)

detach不会真正“冻结”您的图层。
如果您不想训练图层,则应改用requires_grad=False

例如:

hidden2.weight.requires_grad = False
hidden2.bias.requires_grad = False

然后解冻,请对requires_grad=True执行相同的操作。