Estimators represent a complete model but also look intuitive enough to less user. The Estimator API provides methods to train the model, to judge the model’s accuracy, and to generate predictions. TensorFlow provides a programming stack consisting of multiple API layers like in the below image:

There are two types of estimators; you can either choose the pre-made Estimators, alternatively, you can write your own custom Estimators. Estimators-based models can be run on local hosts as well as on distributed multi-server environment without changing your model. In addition, you can run Estimators-based models on CPUs, GPUs, or TPUs without having to record your model.
On top of that, the Estimator includes default behavior common to training jobs, such as saving and restoring checkpoints, creating summaries, etc. An Estimator will require you to write a model_fn and an input_fn that correspond to the model and input portions of your TensorFlow graph.
