TensorFlow Estimator: the API Google wanted you to use (circa 2018)
A methodical walkthrough of Google's once-preferred way to build production ML models before Keras took over.

What it does
This repo is a collection of Jupyter notebooks demonstrating TensorFlow’s Estimator API across standard ML tasks: classification, regression, clustering, time-series, and basic deep learning (CNNs, RNNs, embeddings). It covers both “canned” pre-built estimators and custom ones built from scratch via model_fn. There’s also a fair bit of surrounding tooling: tf.Transform for preprocessing, tf.Hub for text embeddings, TensorFlow Model Analysis for evaluation, and model export for serving.
The interesting bit
The value isn’t any single model—it’s the systematic approach. Every notebook follows the same pattern: metadata-driven feature_column definitions, explicit input pipelines (input_fn), and consistent train/eval/export cycles. For teams trying to standardize messy TF code, this structure is the actual lesson.
Key highlights
- Covers both canned estimators (DNNClassifier, LinearClassifier, etc.) and custom estimators with
EstimatorSpec - Demonstrates
tf.datapipelines, pandas input, and time-series-specific input functions - Shows feature engineering baked into
feature_columndefinitions: crossings, embeddings, bucketization, hash buckets - Includes Wide & Deep model setup, learning rate decay, and model serving with CSV/JSON inputs
- All examples target TensorFlow 1.7; this is explicitly legacy-era material
Caveats
- Targets TF 1.7; many APIs (
tf.contrib.learn.experiment,tf.contrib.timeseries) are deprecated or removed in TF 2.x - “Coming Soon” section includes Keras examples that apparently never arrived
- Some promised features (early stopping, DynamicRnnEstimator, collaborative filtering) remain unimplemented per the README
Verdict Worth a look if you’re maintaining legacy TF 1.x pipelines or trying to understand why Google’s ML infrastructure teams once pushed Estimators so hard. Skip it if you’re starting fresh—Keras and modern TF are the present, and this repo knows it.