我正在尝试训练一个在层中固定一些参数的神经网络。
我有一个有30个输入和30个输出的层,如果它是正常密集层,那么它将有930个参数/权重。但我想把其中大约800个参数固定为零,不想让它们训练。而其余130应该接受训练。
有没有办法冻结tensorflow或pytorch中的一些参数
第页。S.-未冻结整个层,仅部分冻结。
在PyTorch中,您可以做的是复制层的参数,然后在"优化器.step(("之后将参数复制回层中,有效地重置权重。你可以做一些类似的事情:
layer_to_freeze = 0 # change as you need
for i, param in enumerate(model.parameters()): # iteration needed since model.parameters() returns a generator.
if i == layer_to_freeze: # First layer
frozen_params = param
optimizer.step() # Backpropagate the gradients.
for i, param in enumerate(model.parameters()):
if i == layer_to_freeze: # First layer
with torch.no_grad(): # required for the copying operation
param[0:30,0:27] = frozen_params[0:30,0:27] # copies 810 parameters, modify according to your desires.