Based on this repo https://github.com/milesial/Pytorch-UNet
random seed setting reference: https://odsc.medium.com/properly-setting-the-random-seed-in-ml-experiments-not-as-simple-as-you-might-imagine-219969c84752
more details: https://pytorch.org/docs/stable/notes/randomness.html