Based on your code snippet you could introduce a bias in you avg_loss calculation, if the length of your dataset is not divisible without a remainder by your batch size.
Currently you are summing the loss (averaged over the batch) and dividing by the length of your DataLoader. However, if the last batch is smaller, this might introduce a small discrepancy.
Besides that I guess other operations might introduce some noise (e.g. different CUDA/cuDNN versions for PyTorch and Tensorflow) etc. and these might be quite hard to debug.