Learning to Learn in TensorFlow
github.com
github.com
"Neural Architecture Search with Reinforcement Learning"
https://arxiv.org/abs/1611.01578
"RL^2: Fast Reinforcement Learning via Slow Reinforcement Learning"
https://arxiv.org/abs/1611.02779
"Designing Neural Network Architectures using Reinforcement Learning"
and a blog post to go with it: http://blog.otoro.net/2016/09/28/hyper-networks/
'Learning to reinforcement learn'
A quick google gives these [1] impressive results for Tensorflow, at least for linear algebra operations.
Despite the advantages, I think you'll find many more readily available functions in Numpy for what you want, while Tensorflow remains quite 'low level', exposing building block operations rather than higher-level methods (the exception is machine learning/neural network stuff). That said, I don't imagine it would be too difficult to implement a fast quadrature method for integration, or whatever else your heart might desire. This [2] is a simple example solving a PDE.
-----
[1] https://simplyml.com/linear-algebra-shootout-numpy-vs-theano...
Nando de Freitas - Learning to Learn, to Program, to Explore and to Seek Knowledge (NIPS 2016)
- Several common gradient optimization algorithms (Momentum, AdaGrad, AdaDelta, Adam, etc) are implemented already, which makes it a bit faster to get your training logic in place
- Going along with the above, there is more in the TensorFlow API focused specifically on training models, as opposed to being purely a math engine. Some might consider the extra funtionality "bloat", but I think it serves a good purpose
- The afforementioned multi-GPU functionality is nice, once you get used to it. It's good for either training multiple versions of a model in parallel or doing data parallel updates of parameters
- There are tools for compiling your trained models as static C++ binaries on mobile devices
- The TensorFlow ecosystem is quite nice: TensorBoard for visualizing training, the topology of your model, and various statistics (most recently visualizing projections of embeddings). TensorFlow Serving for deploying trained models. TF Slim for a more Keras-like layer by layer approach to model building. Several pre-trained models to jump start your own work.
- No compile times. There is a "no optimizations" option in Theano to remove the compilation, but many people's experience with Theano is having to wait to iterate on their code.
- I think the community is pretty swell too :) The Google team does a good job of responding to and working with folks who open issues or PRs
Generally, I'd say TensorFlow is really good when you want to minimize the amount of time between researching, training, and deploying your model.
Edit: line formatting
I'm looking for such tool but I haven't found anything apart from C++ libraries that also focus on training. Can you give me some pointers? Thanks.
https://github.com/tensorflow/tensorflow/tree/master/tensorf...
The readme has a general overview of how you'll approach using it. Note that you'll want to optimize for inference (remove unnecessary operations from the graph) [0] and freeze your graph (convert Variables into constant tensors) [1] to drop in your own model for the pretrained Inception model that's used as an example.
[0]: https://github.com/tensorflow/tensorflow/blob/master/tensorf...
[1]: https://github.com/tensorflow/tensorflow/blob/master/tensorf...
> The move from hand-designed features to learned features in machine learning has been wildly successful.
Are the features here the "feature vectors" or the network architecture? Or something else? In other terms, does this project help normalizing data, or does it help tweaking hyper parameters?
This is the idea behind the learning to learn paper. Instead of taking our gradient and plugging it in to a hand-engineered (i.e. on paper) update rule, we feed it to a neural network, which is trained to find the optimal update rule, in some sense (neural networks are just function approximators after all).