README.md 4.71 KB
Newer Older
1
2
# TensorFlow Official Models

Hongkun Yu's avatar
Hongkun Yu committed
3
4
5
6
The TensorFlow official models are a collection of example models that use
TensorFlow's high-level APIs. They are intended to be well-maintained, tested,
and kept up to date with the latest TensorFlow API. They should also be
reasonably optimized for fast performance while still being easy to read.
7

Hongkun Yu's avatar
Hongkun Yu committed
8
9
These models are used as end-to-end tests, ensuring that the models run with the
same speed and performance with each new TensorFlow build.
10
11

## Tensorflow releases
12

Hongkun Yu's avatar
Hongkun Yu committed
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
The master branch of the models are **in development**, and they target the
[nightly binaries](https://github.com/tensorflow/tensorflow#installation) built
from the
[master branch of TensorFlow](https://github.com/tensorflow/tensorflow/tree/master).
We aim to keep them backwards compatible with the latest release when possible
(currently TensorFlow 1.5), but we cannot always guarantee compatibility.

**Stable versions** of the official models targeting releases of TensorFlow are
available as tagged branches or
[downloadable releases](https://github.com/tensorflow/models/releases). Model
repository version numbers match the target TensorFlow release, such that
[branch r1.4.0](https://github.com/tensorflow/models/tree/r1.4.0) and
[release v1.4.0](https://github.com/tensorflow/models/releases/tag/v1.4.0) are
compatible with
[TensorFlow v1.4.0](https://github.com/tensorflow/tensorflow/releases/tag/v1.4.0).

If you are on a version of TensorFlow earlier than 1.4, please
[update your installation](https://www.tensorflow.org/install/).
31

32
## Requirements
33

Hongkun Yu's avatar
Hongkun Yu committed
34
Please follow the below steps before running models in this repo:
35

Hongkun Yu's avatar
Hongkun Yu committed
36
37
1.  TensorFlow
    [nightly binaries](https://github.com/tensorflow/tensorflow#installation)
38

Hongkun Yu's avatar
Hongkun Yu committed
39
40
2.  Add the top-level ***/models*** folder to the Python path with the command:
    `export PYTHONPATH="$PYTHONPATH:/path/to/models"`
41

Hongkun Yu's avatar
Hongkun Yu committed
42
    Using Colab: `import os os.environ['PYTHONPATH'] += ":/path/to/models"`
43

Hongkun Yu's avatar
Hongkun Yu committed
44
45
3.  Install dependencies: `pip3 install --user -r official/requirements.txt` or
    `pip install --user -r official/requirements.txt`
46

Hongkun Yu's avatar
Hongkun Yu committed
47
48
49
To make Official Models easier to use, we are planning to create a pip
installable Official Models package. This is being tracked in
[#917](https://github.com/tensorflow/models/issues/917).
50

51
## Available models
52

Hongkun Yu's avatar
Hongkun Yu committed
53
54
**NOTE:** Please make sure to follow the steps in the
[Requirements](#requirements) section.
55

Hongkun Yu's avatar
Hongkun Yu committed
56
57
58
59
60
61
62
63
64
*   [bert](bert): A powerful pre-trained language representation model: BERT,
    which stands for Bidirectional Encoder Representations from Transformers.
*   [mnist](mnist): A basic model to classify digits from the MNIST dataset.
*   [resnet](vision/image_classification): A deep residual network that can be
    used to classify both CIFAR-10 and ImageNet's dataset of 1000 classes.
*   [transformer](transformer): A transformer model to translate the WMT English
    to German dataset.
*   [ncf](recommendation): Neural Collaborative Filtering model for
    recommendation tasks.
65

Hongkun Yu's avatar
Hongkun Yu committed
66
67
Models that will not update to TensorFlow 2.x stay inside R1 directory:

Hongkun Yu's avatar
Hongkun Yu committed
68
69
70
71
72
73
74
75
76
*   [boosted_trees](r1/boosted_trees): A Gradient Boosted Trees model to
    classify higgs boson process from HIGGS Data Set.
*   [wide_deep](r1/wide_deep): A model that combines a wide model and deep
    network to classify census income data.

## More models to come!

We are in the progress to revamp official model garden with TensorFlow 2.0 and
Keras. In the near future, we will bring:
Hongkun Yu's avatar
Hongkun Yu committed
77

Hongkun Yu's avatar
Hongkun Yu committed
78
79
80
81
82
*   State-of-the-art language understanding models: XLNet, GPT2, and more
    members in Transformer family.
*   Start-of-the-art image classification models: EfficientNet, MnasNet and
    variants.
*   A set of excellent objection detection models.
Hongkun Yu's avatar
Hongkun Yu committed
83

Hongkun Yu's avatar
Hongkun Yu committed
84
85
If you would like to make any fixes or improvements to the models, please
[submit a pull request](https://github.com/tensorflow/models/compare).
86

87
## New Models
88

Hongkun Yu's avatar
Hongkun Yu committed
89
90
91
The team is actively working to add new models to the repository. Every model
should follow the following guidelines, to uphold the our objectives of
readable, usable, and maintainable code.
92

Hongkun Yu's avatar
Hongkun Yu committed
93
94
95
96
97
**General guidelines** * Code should be well documented and tested. * Runnable
from a blank environment with relative ease. * Trainable on: single GPU/CPU
(baseline), multiple GPUs, TPU * Compatible with Python 2 and 3 (using
[six](https://pythonhosted.org/six/) when necessary) * Conform to
[Google Python Style Guide](https://github.com/google/styleguide/blob/gh-pages/pyguide.md)
98

99
**Implementation guidelines**
100

Hongkun Yu's avatar
Hongkun Yu committed
101
102
These guidelines exist so the model implementations are consistent for better
readability and maintainability.
103

Hongkun Yu's avatar
Hongkun Yu committed
104
105
106
107
108
*   Use [common utility functions](utils)
*   Export SavedModel at the end of training.
*   Consistent flags and flag-parsing library
    ([read more here](utils/flags/guidelines.md))
*   Produce benchmarks and logs ([read more here](utils/logs/guidelines.md))