首页 > 解决方案 > 如何只训练神经网络的前部?

问题描述

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

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

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

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

但是,这次我只想训练 Layer1。我怎样才能做到这一点?谢谢。

标签: neural-networkpytorch

解决方案


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

例如:

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

然后解冻,你对requires_grad=True.


推荐阅读