tensor2tensor

Library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research.

https://github.com/tensorflow/tensor2tensor

Science Score: 20.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    8 of 255 committers (3.1%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.0%) to scientific vocabulary

Keywords

deep-learning machine-learning machine-translation reinforcement-learning tpu

Keywords from Contributors

distributed deep-neural-networks jax transformers audio speech-recognition tensor cryptocurrency pretrained-models vlm
Last synced: 9 months ago · JSON representation

Repository

Library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research.

Basic Info
  • Host: GitHub
  • Owner: tensorflow
  • License: apache-2.0
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 16.7 MB
Statistics
  • Stars: 16,437
  • Watchers: 471
  • Forks: 3,646
  • Open Issues: 590
  • Releases: 75
Archived
Topics
deep-learning machine-learning machine-translation reinforcement-learning tpu
Created about 9 years ago · Last pushed about 3 years ago
Metadata Files
Readme Contributing License

README.md

Tensor2Tensor

PyPI
version GitHub
Issues Contributions
welcome Gitter License Travis Run on FH

Tensor2Tensor, or T2T for short, is a library of deep learning models and datasets designed to make deep learning more accessible and accelerate ML research.

T2T was developed by researchers and engineers in the Google Brain team and a community of users. It is now deprecated — we keep it running and welcome bug-fixes, but encourage users to use the successor library Trax.

Quick Start

This iPython notebook explains T2T and runs in your browser using a free VM from Google, no installation needed. Alternatively, here is a one-command version that installs T2T, downloads MNIST, trains a model and evaluates it:

pip install tensor2tensor && t2t-trainer \ --generate_data \ --data_dir=~/t2t_data \ --output_dir=~/t2t_train/mnist \ --problem=image_mnist \ --model=shake_shake \ --hparams_set=shake_shake_quick \ --train_steps=1000 \ --eval_steps=100

Contents

Suggested Datasets and Models

Below we list a number of tasks that can be solved with T2T when you train the appropriate model on the appropriate problem. We give the problem and model below and we suggest a setting of hyperparameters that we know works well in our setup. We usually run either on Cloud TPUs or on 8-GPU machines; you might need to modify the hyperparameters if you run on a different setup.

Mathematical Language Understanding

For evaluating mathematical expressions at the character level involving addition, subtraction and multiplication of both positive and negative decimal numbers with variable digits assigned to symbolic variables, use

  • the MLU data-set: --problem=algorithmic_math_two_variables

You can try solving the problem with different transformer models and hyperparameters as described in the paper: * Standard transformer: --model=transformer --hparams_set=transformer_tiny * Universal transformer: --model=universal_transformer --hparams_set=universal_transformer_tiny * Adaptive universal transformer: --model=universal_transformer --hparams_set=adaptive_universal_transformer_tiny

Story, Question and Answer

For answering questions based on a story, use

  • the bAbi data-set: --problem=babi_qa_concat_task1_1k

You can choose the bAbi task from the range [1,20] and the subset from 1k or 10k. To combine test data from all tasks into a single test set, use --problem=babi_qa_concat_all_tasks_10k

Image Classification

For image classification, we have a number of standard data-sets:

  • ImageNet (a large data-set): --problem=image_imagenet, or one of the re-scaled versions (image_imagenet224, image_imagenet64, image_imagenet32)
  • CIFAR-10: --problem=image_cifar10 (or --problem=image_cifar10_plain to turn off data augmentation)
  • CIFAR-100: --problem=image_cifar100
  • MNIST: --problem=image_mnist

For ImageNet, we suggest to use the ResNet or Xception, i.e., use --model=resnet --hparams_set=resnet_50 or --model=xception --hparams_set=xception_base. Resnet should get to above 76% top-1 accuracy on ImageNet.

For CIFAR and MNIST, we suggest to try the shake-shake model: --model=shake_shake --hparams_set=shakeshake_big. This setting trained for --train_steps=700000 should yield close to 97% accuracy on CIFAR-10.

Image Generation

For (un)conditional image generation, we have a number of standard data-sets:

  • CelebA: --problem=img2img_celeba for image-to-image translation, namely, superresolution from 8x8 to 32x32.
  • CelebA-HQ: --problem=image_celeba256_rev for a downsampled 256x256.
  • CIFAR-10: --problem=image_cifar10_plain_gen_rev for class-conditional 32x32 generation.
  • LSUN Bedrooms: --problem=image_lsun_bedrooms_rev
  • MS-COCO: --problem=image_text_ms_coco_rev for text-to-image generation.
  • Small ImageNet (a large data-set): --problem=image_imagenet32_gen_rev for 32x32 or --problem=image_imagenet64_gen_rev for 64x64.

We suggest to use the Image Transformer, i.e., --model=imagetransformer, or the Image Transformer Plus, i.e., --model=imagetransformerpp that uses discretized mixture of logistics, or variational auto-encoder, i.e., --model=transformer_ae. For CIFAR-10, using --hparams_set=imagetransformer_cifar10_base or --hparams_set=imagetransformer_cifar10_base_dmol yields 2.90 bits per dimension. For Imagenet-32, using --hparams_set=imagetransformer_imagenet32_base yields 3.77 bits per dimension.

Language Modeling

For language modeling, we have these data-sets in T2T:

  • PTB (a small data-set): --problem=languagemodel_ptb10k for word-level modeling and --problem=languagemodel_ptb_characters for character-level modeling.
  • LM1B (a billion-word corpus): --problem=languagemodel_lm1b32k for subword-level modeling and --problem=languagemodel_lm1b_characters for character-level modeling.

We suggest to start with --model=transformer on this task and use --hparams_set=transformer_small for PTB and --hparams_set=transformer_base for LM1B.

Sentiment Analysis

For the task of recognizing the sentiment of a sentence, use

  • the IMDB data-set: --problem=sentiment_imdb

We suggest to use --model=transformer_encoder here and since it is a small data-set, try --hparams_set=transformer_tiny and train for few steps (e.g., --train_steps=2000).

Speech Recognition

For speech-to-text, we have these data-sets in T2T:

  • Librispeech (US English): --problem=librispeech for the whole set and --problem=librispeech_clean for a smaller but nicely filtered part.

  • Mozilla Common Voice (US English): --problem=common_voice for the whole set --problem=common_voice_clean for a quality-checked subset.

Summarization

For summarizing longer text into shorter one we have these data-sets:

  • CNN/DailyMail articles summarized into a few sentences: --problem=summarize_cnn_dailymail32k

We suggest to use --model=transformer and --hparams_set=transformer_prepend for this task. This yields good ROUGE scores.

Translation

There are a number of translation data-sets in T2T:

  • English-German: --problem=translate_ende_wmt32k
  • English-French: --problem=translate_enfr_wmt32k
  • English-Czech: --problem=translate_encs_wmt32k
  • English-Chinese: --problem=translate_enzh_wmt32k
  • English-Vietnamese: --problem=translate_envi_iwslt32k
  • English-Spanish: --problem=translate_enes_wmt32k

You can get translations in the other direction by appending _rev to the problem name, e.g., for German-English use --problem=translate_ende_wmt32k_rev (note that you still need to download the original data with t2t-datagen --problem=translate_ende_wmt32k).

For all translation problems, we suggest to try the Transformer model: --model=transformer. At first it is best to try the base setting, --hparams_set=transformer_base. When trained on 8 GPUs for 300K steps this should reach a BLEU score of about 28 on the English-German data-set, which is close to state-of-the art. If training on a single GPU, try the --hparams_set=transformer_base_single_gpu setting. For very good results or larger data-sets (e.g., for English-French), try the big model with --hparams_set=transformer_big.

See this example to know how the translation works.

Basics

Walkthrough

Here's a walkthrough training a good English-to-German translation model using the Transformer model from Attention Is All You Need on WMT data.

``` pip install tensor2tensor

See what problems, models, and hyperparameter sets are available.

You can easily swap between them (and add new ones).

t2t-trainer --registry_help

PROBLEM=translateendewmt32k MODEL=transformer HPARAMS=transformerbasesingle_gpu

DATADIR=$HOME/t2tdata TMPDIR=/tmp/t2tdatagen TRAINDIR=$HOME/t2ttrain/$PROBLEM/$MODEL-$HPARAMS

mkdir -p $DATADIR $TMPDIR $TRAIN_DIR

Generate data

t2t-datagen \ --datadir=$DATADIR \ --tmpdir=$TMPDIR \ --problem=$PROBLEM

Train

* If you run out of memory, add --hparams='batch_size=1024'.

t2t-trainer \ --datadir=$DATADIR \ --problem=$PROBLEM \ --model=$MODEL \ --hparamsset=$HPARAMS \ --outputdir=$TRAIN_DIR

Decode

DECODEFILE=$DATADIR/decodethis.txt echo "Hello world" >> $DECODEFILE echo "Goodbye world" >> $DECODE_FILE echo -e 'Hallo Welt\nAuf Wiedersehen Welt' > ref-translation.de

BEAM_SIZE=4 ALPHA=0.6

t2t-decoder \ --datadir=$DATADIR \ --problem=$PROBLEM \ --model=$MODEL \ --hparamsset=$HPARAMS \ --outputdir=$TRAINDIR \ --decodehparams="beamsize=$BEAMSIZE,alpha=$ALPHA" \ --decodefromfile=$DECODEFILE \ --decodeto_file=translation.en

See the translations

cat translation.en

Evaluate the BLEU score

Note: Report this BLEU score in papers, not the internal approx_bleu metric.

t2t-bleu --translation=translation.en --reference=ref-translation.de ```

Installation

```

Assumes tensorflow or tensorflow-gpu installed

pip install tensor2tensor

Installs with tensorflow-gpu requirement

pip install tensor2tensor[tensorflow_gpu]

Installs with tensorflow (cpu) requirement

pip install tensor2tensor[tensorflow] ```

Binaries:

```

Data generator

t2t-datagen

Trainer

t2t-trainer --registry_help ```

Library usage:

python -c "from tensor2tensor.models.transformer import Transformer"

Features

  • Many state of the art and baseline models are built-in and new models can be added easily (open an issue or pull request!).
  • Many datasets across modalities - text, audio, image - available for generation and use, and new ones can be added easily (open an issue or pull request for public datasets!).
  • Models can be used with any dataset and input mode (or even multiple); all modality-specific processing (e.g. embedding lookups for text tokens) is done with bottom and top transformations, which are specified per-feature in the model.
  • Support for multi-GPU machines and synchronous (1 master, many workers) and asynchronous (independent workers synchronizing through a parameter server) distributed training.
  • Easily swap amongst datasets and models by command-line flag with the data generation script t2t-datagen and the training script t2t-trainer.
  • Train on Google Cloud ML and Cloud TPUs.

T2T overview

Problems

Problems consist of features such as inputs and targets, and metadata such as each feature's modality (e.g. symbol, image, audio) and vocabularies. Problem features are given by a dataset, which is stored as a TFRecord file with tensorflow.Example protocol buffers. All problems are imported in all_problems.py or are registered with @registry.register_problem. Run t2t-datagen to see the list of available problems and download them.

Models

T2TModels define the core tensor-to-tensor computation. They apply a default transformation to each input and output so that models may deal with modality-independent tensors (e.g. embeddings at the input; and a linear transform at the output to produce logits for a softmax over classes). All models are imported in the models subpackage, inherit from T2TModel, and are registered with @registry.register_model.

Hyperparameter Sets

Hyperparameter sets are encoded in HParams objects, and are registered with @registry.register_hparams. Every model and problem has a HParams. A basic set of hyperparameters are defined in common_hparams.py and hyperparameter set functions can compose other hyperparameter set functions.

Trainer

The trainer binary is the entrypoint for training, evaluation, and inference. Users can easily switch between problems, models, and hyperparameter sets by using the --model, --problem, and --hparams_set flags. Specific hyperparameters can be overridden with the --hparams flag. --schedule and related flags control local and distributed training/evaluation (distributed training documentation).

Adding your own components

T2T's components are registered using a central registration mechanism that enables easily adding new ones and easily swapping amongst them by command-line flag. You can add your own components without editing the T2T codebase by specifying the --t2t_usr_dir flag in t2t-trainer.

You can do so for models, hyperparameter sets, modalities, and problems. Please do submit a pull request if your component might be useful to others.

See the example_usr_dir for an example user directory.

Adding a dataset

To add a new dataset, subclass Problem and register it with @registry.register_problem. See TranslateEndeWmt8k for an example. Also see the data generators README.

Run on FloydHub

Run on FloydHub

Click this button to open a Workspace on FloydHub. You can use the workspace to develop and test your code on a fully configured cloud GPU machine.

Tensor2Tensor comes preinstalled in the environment, you can simply open a Terminal and run your code.

```bash

Test the quick-start on a Workspace's Terminal with this command

t2t-trainer \ --generatedata \ --datadir=./t2tdata \ --outputdir=./t2ttrain/mnist \ --problem=imagemnist \ --model=shakeshake \ --hparamsset=shakeshakequick \ --trainsteps=1000 \ --evalsteps=100 ```

Note: Ensure compliance with the FloydHub Terms of Service.

Papers

When referencing Tensor2Tensor, please cite this paper.

@article{tensor2tensor, author = {Ashish Vaswani and Samy Bengio and Eugene Brevdo and Francois Chollet and Aidan N. Gomez and Stephan Gouws and Llion Jones and \L{}ukasz Kaiser and Nal Kalchbrenner and Niki Parmar and Ryan Sepassi and Noam Shazeer and Jakob Uszkoreit}, title = {Tensor2Tensor for Neural Machine Translation}, journal = {CoRR}, volume = {abs/1803.07416}, year = {2018}, url = {http://arxiv.org/abs/1803.07416}, }

Tensor2Tensor was used to develop a number of state-of-the-art models and deep learning methods. Here we list some papers that were based on T2T from the start and benefited from its features and architecture in ways described in the Google Research Blog post introducing T2T.

NOTE: This is not an official Google product.

Owner

  • Name: tensorflow
  • Login: tensorflow
  • Kind: organization
  • Email: github-admin@tensorflow.org

GitHub Events

Total
  • Watch event: 983
  • Fork event: 175
Last Year
  • Watch event: 983
  • Fork event: 175

Committers

Last synced: almost 2 years ago

All Time
  • Total Commits: 4,111
  • Total Committers: 255
  • Avg Commits per committer: 16.122
  • Development Distribution Score (DDS): 0.814
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
T2T Team n****y@g****m 765
Lukasz Kaiser l****r@g****m 459
Ryan Sepassi r****i@g****m 447
Afroz Mohiuddin a****m@g****m 359
Noam Shazeer n****m@g****m 166
piotrmilos p****s@c****m 155
Mohammad Babaeizadeh m****z@g****m 142
Dustin Tran t****n@g****m 110
Piotr Kozakowski k****0@g****m 93
Niki Parmar n****p@g****m 92
Manoj Kumar m****r@g****m 89
Piotr Kozakowski p****i@g****m 89
Ashish Vaswani a****i@g****m 57
Błażej O b****i@c****m 57
konradczechowski k****i@g****m 49
Aurko Roy a****r@g****m 47
vthorsteinsson vt@e****m 45
Urvashi Khandelwal u****k@g****m 44
Blazej Osinski b****j@g****m 38
Lukas Geiger l****r 37
Stefan Schweter s****n@s****t 36
Martin Popel p****l@u****z 33
Etienne Pot e****t@g****m 32
Aidan Gomez a****z@g****m 28
Thang Luong t****g@g****m 15
blazejosinski 8****i 13
Peng Wang w****g@g****m 12
Kollol Das k****s@g****m 12
Mike Dusenberry d****w@g****m 11
cclauss c****s@b****h 11
and 225 more...

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 221
  • Total pull requests: 56
  • Average time to close issues: 9 months
  • Average time to close pull requests: 24 days
  • Total issue authors: 74
  • Total pull request authors: 21
  • Average comments per issue: 2.9
  • Average comments per pull request: 1.7
  • Merged pull requests: 9
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • shizhediao (3)
  • sarthmit (2)
  • yhong4 (2)
  • colmantse (2)
  • Ubaydullo99 (2)
  • Esaada (2)
  • cingtiye (2)
  • PatternAlpha (1)
  • naveendangeti (1)
  • vinh869163 (1)
  • dinosaxon (1)
  • jiminbot20 (1)
  • Roshanson (1)
  • almostimplemented (1)
  • EnigmaZhang (1)
Pull Request Authors
  • branko-fathom (2)
  • shawwn (1)
  • xu-song (1)
  • huseinzol05 (1)
  • almostimplemented (1)
  • usamamuneeb (1)
  • sgrigory (1)
  • fathom-nikhil (1)
  • syzymon (1)
  • TrellixVulnTeam (1)
  • vinhngx (1)
  • TimOgden (1)
  • fathom-zh59412 (1)
  • paulo-raca (1)
  • jordimas (1)
Top Labels
Issue Labels
question (5)
Pull Request Labels
cla: yes (10) cla: no (5)

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 6,637 last-month
  • Total docker downloads: 1,207
  • Total dependent packages: 3
    (may contain duplicates)
  • Total dependent repositories: 522
    (may contain duplicates)
  • Total versions: 90
  • Total maintainers: 2
pypi.org: tensor2tensor

Tensor2Tensor

  • Versions: 79
  • Dependent Packages: 3
  • Dependent Repositories: 520
  • Downloads: 6,605 Last month
  • Docker Downloads: 1,207
Rankings
Stargazers count: 0.1%
Forks count: 0.2%
Dependent repos count: 0.6%
Docker downloads count: 1.2%
Average: 1.3%
Dependent packages count: 2.1%
Downloads: 3.7%
Maintainers (2)
Last synced: 9 months ago
pypi.org: tensor2tensor-test

Tensor2Tensor

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 18 Last month
Rankings
Stargazers count: 0.1%
Forks count: 0.2%
Dependent packages count: 7.3%
Average: 16.1%
Dependent repos count: 22.1%
Downloads: 50.8%
Maintainers (1)
Last synced: 10 months ago
pypi.org: tensor2tensor-dev

Tensor2Tensor

  • Versions: 8
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 14 Last month
Rankings
Stargazers count: 0.1%
Forks count: 0.2%
Dependent packages count: 7.3%
Average: 16.5%
Dependent repos count: 22.1%
Downloads: 52.7%
Maintainers (1)
Last synced: 10 months ago

Dependencies

tensor2tensor/insights/polymer/bower.json bower
  • app-layout PolymerElements/app-layout#2.0.4
  • app-route PolymerElements/app-route#2.0.3
  • d3 d3#4.12.2
  • iron-a11y-keys PolymerElements/iron-a11y-keys#2.0.0
  • iron-ajax PolymerElements/iron-ajax#2.0.0
  • iron-flex-layout PolymerElements/iron-flex-layout#2.0.0
  • iron-icon PolymerElements/iron-icon#2.0.0
  • iron-icons PolymerElements/iron-icons#2.0.0
  • iron-list PolymerElements/iron-list#2.0.0
  • iron-pages PolymerElements/iron-pages#2.0.0
  • iron-selector PolymerElements/iron-selector#2.0.0
  • neon-animation PolymerElements/neon-animation#2.0.0
  • paper-button PolymerElements/paper-button#2.0.0
  • paper-card PolymerElements/paper-card#2.0.0
  • paper-dialog PolymerElements/paper-dialog#2.0.0
  • paper-dropdown-menu PolymerElements/paper-dropdown-menu#2.0.0
  • paper-icon-button PolymerElements/paper-icon-button#2.0.0
  • paper-input PolymerElements/paper-input#2.0.0
  • paper-item PolymerElements/paper-item#2.0.0
  • paper-listbox PolymerElements/paper-listbox#2.0.0
  • paper-progress PolymerElements/paper-progress#2.0.0
  • paper-slider PolymerElements/paper-slider#2.0.0
  • paper-tabs PolymerElements/paper-tabs#2.0.0
  • paper-toggle-button PolymerElements/paper-toggle-button#2.0.0
  • paper-tooltip PolymerElements/paper-tooltip#2.0.0
  • polymer polymer/polymer#v2.3.1
floyd_requirements.txt pypi
  • tensor2tensor *
setup.py pypi
  • Pillow *
  • absl-py *
  • bz2file *
  • dopamine-rl *
  • flask *
  • future *
  • gevent *
  • gin-config *
  • google-api-python-client *
  • gunicorn *
  • gym *
  • h5py *
  • kfac *
  • mesh-tensorflow *
  • numpy *
  • oauth2client *
  • opencv-python *
  • pypng *
  • requests *
  • scipy *
  • six >=1.12.0
  • sympy *
  • tensorflow-addons *
  • tensorflow-datasets *
  • tensorflow-gan *
  • tensorflow-probability ==0.7.0
  • tf_slim *
  • tqdm *
tensor2tensor/test_data/example_usr_dir/requirements.txt pypi
  • gutenberg * test