text: Title: [Tensorflow] Plots appear smoother inconsistent with MXNet/PyTorch
  Body: Although the results look nice and ideal in all TensorFlow plots and are consistent across all frameworks, there is a small difference (more of a consistency issue). The result training loss/accuracy plots look like they are sampling on a lesser number of points. It looks more straight and smooth and less wiggly as compared to PyTorch or MXNet.
  
  It can be clearly seen in chapter 6([CNN Lenet](https://d2l.ai/chapter_convolutional-neural-networks/lenet.html#training)), 7([Modern CNN](https://d2l.ai/chapter_convolutional-modern/alexnet.html#training)), 11 ([Optimization LR Scheduler](https://d2l.ai/chapter_optimization/lr-scheduler.html#warmup)) plots. It is due to how the class `TrainCallback` is implemented **on epoch** instead of **on batch** [here](https://d2l.ai/chapter_convolutional-neural-networks/lenet.html#training).
  
  This consistency issue plagues many of the TensorFlow plots across the book. PRs are welcome, this sounds like a good issue for beginners who would like to contribute to d2l. Feel free to ask any questions/doubts.
  
  cc @astonzhang @terrytangyuan 