PyTorch提供了惰性层,例如torch.nn.LazyLinear
。我想冻结网络中的一些层,即确保它们不采用渐变步骤。当我尝试.requires_grad_(False)
时,收到错误:ValueError: Attempted to use an uninitialized parameter in <method 'requires_grad_' of 'torch._C._TensorBase' objects>. This error happens when you are using a
惰性模块or explicitly manipulating
焊炬.nn.参数.未初始化参数objects. When using LazyModules Call
正向with a dummy batch to initialize the parameters before calling torch functions
如何冻结惰性层?
1条答案
按热度按时间6yt4nkrj1#
正如错误消息所建议的,您需要在惰性模块上执行伪推理,以便完全初始化它的所有参数。
换句话说,考虑正确的输入形状
shape
:只有这样,才能使用
requires_grad_(False)
冻结所需的层。