Neural Network Toolbox on TensorFlow.
See some examples to learn about the framework:
- DoReFa-Net: train binary / low-bitwidth CNN on ImageNet
- Train ResNet on ImageNet / Cifar10 / SVHN
- Generative Adversarial Network(GAN) variants, including DCGAN, InfoGAN, Conditional GAN, WGAN, BEGAN, DiscoGAN, Image to Image, CycleGAN.
- Fully-convolutional Network for Holistically-Nested Edge Detection(HED)
- Spatial Transformer Networks on MNIST addition
- Visualize CNN saliency maps
- Similarity learning on MNIST
- Deep Q-Network(DQN) variants on Atari games, including DQN, DoubleDQN, DuelingDQN.
- Asynchronous Advantage Actor-Critic(A3C) with demos on OpenAI Gym
Speech / NLP:
The examples are not only for demonstration of the framework -- you can train them and reproduce the results in papers.
It's Yet Another TF wrapper, but different in:
Not focus on models.
- There are already too many symbolic function wrappers.
Tensorpack includes only a few common models, and helpful tools such as
LinearWrapto simplify large models. But you can use any other wrappers within tensorpack, such as sonnet/Keras/slim/tflearn/tensorlayer/....
- There are already too many symbolic function wrappers. Tensorpack includes only a few common models, and helpful tools such as
Focus on training speed.
Tensorpack trainer is almost always faster than
feed_dictbased wrappers. Even on a tiny CNN example, the training runs 2x faster than the equivalent Keras code.
Data-parallel multi-GPU training is off-the-shelf to use. It is as fast as Google's benchmark code.
Data-parallel distributed training is off-the-shelf to use. It is as slow as Google's benchmark code.
Focus on large datasets.
- It's painful to read/preprocess data from TF. Use DataFlow to efficiently process large datasets such as ImageNet in pure Python.
- DataFlow has a unified interface, so you can compose and reuse them to perform complex preprocessing.
Interface of extensible Callbacks. Write a callback to implement everything you want to do apart from the training iterations, and enable it with one line of code. Common examples include:
- Change hyperparameters during training
- Print some tensors of interest
- Run inference on a test dataset
- Run some operations once a while
- Send loss to your phone
- Python 2 or 3
- TensorFlow >= 1.0.0 (>=1.1.0 for Multi-GPU)
- Python bindings for OpenCV (Optional, but required by a lot of features)
pip install -U git+https://github.com/ppwwyyxx/tensorpack.git # or add `--user` to avoid system-wide installation.