In the following code, what’s the role of param.requires_grad = True? what happens when param.requires_grad = False?
model = torchvision.models.resnet18(pretrained=True)

for param in model.parameters():
    param.requires_grad = True
    
model.fc  = nn.Sequential  (OrderedDict ([
                            ('fc1', nn.Linear (512, 256)),
                            ('relu1', nn.ReLU ()),
                            ('dropout1', nn.Dropout (p = 0.5)),
                            ('fc2', nn.Linear (256, 128)),
                            ('relu2', nn.ReLU ()),
                            ('dropout2', nn.Dropout (p = 0.5)),
                            ('fc3', nn.Linear (128, 10)), 
                            ('output', nn.LogSoftmax (dim =1))
                            ]))