Does optimizer.step() always return loss=None when closure is not given? What’s the point of this returned value?