18 comments

[ 3.1 ms ] story [ 50.6 ms ] thread
Release of Keras 1.0, the Python deep learning framework!
I'm curious what people think are the pros and cons of using Keras, vs using TensorFlow directly.
Keras is significantly higher-level (in the sense that Python is a higher-level language than C). I find it much easier to write in Keras, and think I'm less likely to make mistakes.

There are a variety of other wrappers for Tensorflow (skflow, tf-slim) that may someday be released as part of the Tensorflow project. But Keras is far more mature than those right now.

A few advantages:

- it's much easier to use. Using pure TensorFlow is considered "advanced" and requires familiarity with deep learning, understanding of what a symbolic computation graph is, etc. Keras, meanwhile, is meant to make deep learning more accessible.

- even if you don't care about accessibility, Keras provides higher-level building blocks that speed up your workflow even if you are an expert. It is currently used by dozens of companies and hundreds of researchers, precisely for this reason: it allows quick prototyping.

- with Keras, you can work with both Theano and TensorFlow interchangeably. They complement each nicely in a workflow: TensorFlow has low compilation times, which is great for debugging, and Theano tends to be faster for runtime (especially for RNNs). So you can prototype in TF, train in Theano, then to switch to production you can export the TF model.

Upvoting this thread because of fchollet's response. (fchollet is the creator of and lead contributor to Keras).

Great job!

> Keras is a minimalist, highly modular neural networks library, written in Python and capable of running on top of either TensorFlow or Theano.

I hear a lot about new ML/neural network frameworks these days and it's difficult to know which complement other frameworks and which build upon other frameworks/create another layer.

Congrats on the 1.0 release!

I use Keras daily and find it very easy to use. It provides a nice set of examples to learn how to use it. Its also very easy to access the theano/tensorflow backend in a generic way.

Keep up the great work!

Seems that Keras API is just same as Torch API now
What updates can we expect to see in Keras of the next year?
Congratulations on hitting 1.0, Keras really looks like the way forward for python ML. I tried to use Keras after doing Andrew Ng's Coursera course but found that I just couldn't connect the dots from what I'd learned on the course to the concepts assumed familiar by the keras documentation though.
Yes, I think we should work on a FAQ to introduce common ML concepts and their implementation in Keras. Any specific concept that you had trouble with?
Cool. It sounds dumb but just shaping the inputs was a problem for me. I wanted an LSTM/RNN but epochs, batches and recurring sequences didn't click together for me. I also had trouble plotting the learning curves.
You may wish to coordinate a bit with this?: http://www.wildml.com/deep-learning-glossary/

I came across that glossary a few days ago when looking to solve an RNN problem with a deadline. You may be pleased to know I think I may have solved it by switching to Keras, and this post actually helped unsticking me from a smaller problem too. Thanks, and congratulations on version 1.0!

Are activations still their own layer? Or are they moving away from that?

I'm brand new to Keras and online tutorials say that "everything, even activations are their own layer" but I can see that all the layers have a activation argument.

Layers have always had an activation argument, this is not new. And yes, there is still an Activation layer. You can specify an activation function via either option.
Hey hey I don't see autoencoders anymore. Is that going to be coming back?
The functional API removes the need for a dedicated autoencoder layer. But maybe in the future we will have a dedicated autoencoder model, if there's interest in that (with autoencoder-specific methods).
Can you explain by what is meant by a functional API? Functional as in functional programming?