Hi, I am using following code to freeze a certain part of my model:
    def dfs_freeze(model):
        for name, child in model.named_children():
            for param in child.parameters():
                param.requires_grad = False
            dfs_freeze(child)

    dfs_freeze(model.depthnet)

    optim_params = [
        {'params': filter(lambda p: p.requires_grad, model.parameters()), 'lr': args.lr}
    ]
    optimizer = torch.optim.Adam(optim_params,
                                 betas=(args.momentum, args.beta),
                                 weight_decay=args.weight_decay)

Som other parts, which depend on the output of model.depthnet are trained afterwards.
During validation, I plotted the RMSE of the output of model.depthnet w.r.t. ground-truth and surprisingly it is changing from epoch to epoch. The validation data is exactly the same for each epoch.

How can this be possible?