title: what's the mechanism of `tf.estimator.train_and_evaluate` function to control training and evaluation period?
body: <p>When I trained a SSD object detection model 20K steps using <a href="https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/running_locally.md" rel="nofollow noreferrer">TensorFlow Object Detection API</a>, I found that the training time varies:
  It was training fast on the first 10 minutes, and around 500 steps were performed (i.e. 0.83 steps/seconds). Then it slowed down and took about 40~50 minutes to perform single training step, evaluate the model on the evaluation dataset and save the checkpoint on disk. So I interrupted the training after few steps and continued by restoring the training.<br>
  Every time, it training fast on the first 10 minutes and then slowed down sharply as the figures showed. 
  <a href="https://i.stack.imgur.com/gvTQn.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/gvTQn.png" alt="global_step"></a><br>
  <a href="https://i.stack.imgur.com/XiQ8k.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/XiQ8k.png" alt="saved checkpoints"></a><br>
  The model's training are implemented by <a href="https://www.tensorflow.org/api_docs/python/tf/estimator/train_and_evaluate" rel="nofollow noreferrer">TensorFlow's Estimator API</a> <code>tf.estimator.train_and_evaluate()</code><br>
  Can anyone explain how it works? How the estimator controls the training and evaluation period? I do not want to evaluate the model for every step!</p>