Solved by ptrblck in post #2 
              
              
                nn.Module doesn’t have a step method, so you should call optimizer.step(). 
The model itself doesn’t know anything about the optimization of its parameters. 
In case of calling zero_grad it depends on your use case. 
If you pass all parameters to the optimizer, both calls will be identical and clear…