为寻找模型中哪些变量梯度计算为None,可以采用以下方法:
# 反向传播和更新梯度
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 检查是否存在梯度为None的变量
for name, param in model.named_parameters():
if param.grad is None:
print(name, "has None grad")
经过这个步骤后可以判断哪些变量没有参与梯度计算,将其从模型中去掉即可。
参考: