I have frozen one layer and now I want to count the number of the frozen parameters in my CNN model. How do I count this?
model_parameters = filter(lambda p: p.requires_grad, model.parameters())
params = sum([np.prod(p.size()) for p in model_parameters])
print(f"Number of Parameter: {params/1000000:.2f}M")
In this script, I count the all parameters that I have but I need only the number of my frozen parameters. When using p.requires_grad==False, It gives 0.
model = models.resnet50()
model.fc.weight.requires_grad = False
print(model.fc.weight.nelement())
# 2048000
model_parameters = filter(lambda p: p.requires_grad, model.parameters())
params = sum([np.prod(p.size()) for p in model_parameters])
print(f"Number of Parameter: {params/1000000:.2f}M")
# Number of Parameter: 23.51M
model_parameters = filter(lambda p: p.requires_grad==False, model.parameters())
params = sum([np.prod(p.size()) for p in model_parameters])
print(f"Number of Parameter: {params/1000000:.2f}M")
# Number of Parameter: 2.05M