
Keras: Fast Deep Learning Prototyping for Python - fchollet
https://github.com/fchollet/keras/
======
tekacs
44 days ago:
[https://news.ycombinator.com/item?id=9283105](https://news.ycombinator.com/item?id=9283105)

@fchollet: in case you didn't notice the post back then, you might gain
something from those comments, too. :)

------
pbnjay
As someone still nowhere near an expert in deep learning, a little more
description of the examples would be great for helping me dive into this. What
do the input/outputs look like and which configurations apply best to what
situations?

As it is right now I just see acronyms and uncommented code so it doesn't
describe much.

~~~
fchollet
You can find a simpler intro here: [http://keras.io/#getting-
started-30-seconds-to-keras](http://keras.io/#getting-started-30-seconds-to-
keras)

Still, following it would require some familiarity with Numpy and scikit-learn
(or other libs in the same spirit). As well as some experience with neural
networks.

~~~
pbnjay
Yeah that's what I was referring to - still a lot of missing pieces. What type
is X_train or Y_train? a list of dicts? Same question for prediction output?

I know enough about deep learning to grok the overall concepts and structure,
but your docs aren't telling me anything about how to ACTUALLY get started
with your lib.

~~~
elyase
Yep, as he mentioned you need some familiarity with scikit learn or similar
APIs, take a look at [1] for example. In essence X_train and Y_train are 2d
arrays with shape (n_samples, n_features), Y_train is usually of shape
(n_samples, 1) the same as the output. Normally both list of lists or numpy
arrays are accepted, even a generator of samples as long as it is a 2D like
structure. I would say that if this is not obvious to you maybe you should
start with something more basic like linear models in scikit-learn before
jumping to deep learning.

[1] [http://scikit-
learn.org/stable/tutorial/basic/tutorial.html#...](http://scikit-
learn.org/stable/tutorial/basic/tutorial.html#loading-an-example-dataset)

~~~
pbnjay
No need to be dismissive. The getting started guide linked to makes no mention
of scikit - so yes, I don't even know what I don't know. scikit is not a
prerequisite for machine learning, it's simply one way to approach it.

~~~
elyase
Sorry if it sounded like that. What I meant is that the 2d matrix
representation with shape (n_samples, n_features) actually goes beyond scikit-
learn and python(ex: dataframes in R or Julia), it is the standard
representation of data in Machine Learning so it is assumed that someone who
wants to do Deep Learning should already be familiar with it. That is why I
thought you should start with something simpler than Deep Learning to get used
to these concepts. Scikit-learn is a good option because it has more
tutorials/examples/videos and more beginner friendly documentation in general.

------
yankoff
Saw that on a Kaggle forum and been wanting to play with it for a while. Code
looks amazingly clean and simple. Keep up a good work!

Just curious if you compared Keras with caffe or torch in terms of
performance?

~~~
fchollet
In terms of speed, I don't have any benchmarks available. But it's using
Theano under the hood, which is well optimized and should be very competitive
with Torch and Caffe.

When it comes to convolution, it will actually use cuDNN if available, and
performance will be slightly better than Torch and Caffe:
[https://github.com/soumith/convnet-benchmarks#layer-wise-
ben...](https://github.com/soumith/convnet-benchmarks#layer-wise-benchmarking)

------
eghri
Love this package. I was using PyBrain for a recent project, but I had an
awful time getting it to work and found the performance equally awful. After
stumbling upon Keras, I was up in running in minutes, and the huge performance
boost of Theano allowed me to actually finish on time. Thanks for putting this
together!

~~~
StavrosK
I think we found the guy who writes all the testimonials on the internet! :P

------
slagfart
Is there a guide for using any of these algorithms with a trivial online (i.e.
real time) dataset?

~~~
fchollet
Online learning, if that's what you are trying to do, can definitely be done
with Keras. You would basically just feed samples to the model individually or
in small batches using the method 'model.train(X_batch, y_batch)'.

If you raise this issue on the mailing list or in the Github discussion,
you'll get more help and advice.

~~~
dbecker
I've been trying to follow the Keras development, and didn't even realize
there is a mailing list. Could you post a link to it.

~~~
nswanberg
[https://groups.google.com/forum/#!forum/keras-
users](https://groups.google.com/forum/#!forum/keras-users)

------
motters
Also see [https://github.com/bashrc/libdeep-
python](https://github.com/bashrc/libdeep-python)

~~~
albertzeyer
Never heard about libdeep before. What's special about it? It doesn't even
seem to use the GPU.

------
taliesinb
Any support for hyperparameter selection? That's otherwise a bit of a black
art. I skimmed the documentation but didn't see it mentioned.

~~~
fchollet
Not currently. We are looking to introduce easy interfacing with Spearmint, a
library which does bayesian hyperparameter search. This should be part of the
v1 release.

~~~
Fede_V
Have you taken a look at this ?
[https://github.com/HIPS/autograd](https://github.com/HIPS/autograd) and paper
[http://arxiv.org/pdf/1502.03492.pdf](http://arxiv.org/pdf/1502.03492.pdf)

They reverse the computation of the gradient to calculate the derivative wrt
the hyper parameters.

------
shaneofalltrad
Anyone get this running in Ubuntu 14 desktop? I have a ton of dependency
issues.

~~~
madisonmay
Yup, got it working on 14.04 here. My guess is you're having issues setting up
the scientific python stack. You might want to try the anaconda distribution
([https://store.continuum.io/cshop/anaconda/](https://store.continuum.io/cshop/anaconda/))
if you continue having problems, or follow the instructions from the scipy
website on installing via apt-get
([http://www.scipy.org/install.html](http://www.scipy.org/install.html)). The
apt-get install should pull in some binaries and header files that you won't
get from pip. After installing from apt-get you can then run the setup.py file
and things should go much more smoothly.

The only other apt-get package I remember pulling down was the hd5f headers:
"sudo apt-get install libhdf5-dev"

~~~
shaneofalltrad
Thank you. I think I found most of the set-up complete through apt-get before
I noticed this post, but have installed anaconda anyway's to see how that
goes. Seems to have everything firing as it should and was a much smoother
install.

------
jebronie
Python is the PHP of Starbucks customers.

