https://python.plainenglish.io/stochastic-gradient-descent-gradient-descent-using-pytorch-c75c98429631