Image classification using the ResNet50 model described in Deep Residual Learning for Image Recognition.

Contents:

  • resnet50.py: Model definition
  • resnet50_test.py: Sanity unittests and benchmarks for using the model with eager execution enabled.
  • resnet50_graph_test.py: Sanity unittests and benchmarks when using the same model code to construct a TensorFlow graph.

Benchmarks

Using a synthetic data, run:

# Using eager execution
python resnet50_test.py --benchmarks=.

# Using graph execution
python resnet50_graph_test.py --benchmarks=.

The above uses the model definition included with the TensorFlow pip package. To build (and run benchmarks) from source:

# Using eager execution
bazel run -c opt --config=cuda :resnet50_test -- --benchmarks=.

# Using graph execution
bazel run -c opt --config=cuda :resnet50_graph_test -- --benchmarks=.

(Or remove the --config=cuda flag for running on CPU instead of GPU).

On October 31, 2017, the benchmarks demonstrated comparable performance for eager and graph execution of this particular model when using a single NVIDIA Titan X (Pascal) GPU on a host with an Intel Xeon E5-1650 CPU @ 3.50GHz and a batch size of 32.

Benchmark namebatch sizeimages/second
eager_train_gpu_batch_32_channels_first32171
graph_train_gpu_batch_32_channels_first32172