That all makes sense.  I just would have thought that at least doing the same calculations, e.g. two runs of autograd, with the same numbers would always do the same rounding.  Now that I am using double() correctly I was able to create a test that is repeatable to 8 decimal places over my training epochs.  I will use the migration guide to redo the changes I made with the custom functions and be especially careful about .data().  Thanks so much for all the help!