I just stumbled across Kur. At first look, it seems to be making deep learning easy in almost similar lines like Keras on a high level. What are the pros and cons of each and what is suggested to be used for beginners?
(Disclaimer: I am the core maintainer of Kur.)
Kur and Keras are both deep learning frameworks, but they serve different purposes:
Keras builds on Theano and TensorFlow to provide a high-level API to the underlying tensor libraries. This means that you use Keras as part of your Python program, and you programmatically create your model like this (this is Keras' functional API):
import keras.layers as L import keras.models as M my_input = L.Input(shape=(100,)) intermediate = L.Dense(10, activation='relu')(my_input) my_output = L.Dense(1, activation='softmax')(intermediate) model = M.Model(input=my_input, output=my_output)
This is great when you are developing deep learning networks that you want to "embed" in some larger Python program, or when you are developing a single model that you intend to use. Keras is also quite mature and has a great community supporting it. Keras currently offers the superior API for models that you will create and use entirely within Python.
Kur builds on top of Keras to provide a descriptive framework for designing and running deep learning models; you don't write programs when using Kur. Instead of programming, you write "Kurfiles" which describe your model:
model: - input: my_input - dense: 10 - activation: relu - dense: 1 - activation: softmax - output: my_output
That's the same model as I just wrote in Keras. Kur's descriptive language makes quickly prototyping and testing your models. The advantage of the Kurfile is that you can tweak large or small pieces of your model without having to touch your codebase. And when Kurhub is released, you'll have a Docker-like repository for sharing models.
Kur also takes care of a lot of details that you need to consider when writing deep learning systems. For example, Kur knows about several different datatypes (CSV, Python pickle, etc.), and it can load the data and infer shapes for you. Without Kur, you'd have to write your own data processing pipeline (which may be easy or hard, depending on your data). Once you write the Kurfile (in YAML or JSON), you can train with
kur train Kurfileor use it for inference with
kur evaluate Kurfile. This makes it very easy to use as a tool, rather than as a Python API.
Both Kur and Keras can use Theano or TensorFlow, both offer Python APIs, and both are easy to write models in. It really depends on how to plan to develop and deploy your system.
I have been using Keras for quite some time.The following are some pros and cons of keras:-
- Easier to use and build model(pro)
- Can use both Tensorflow and Theano backend(pro)
- Less time consuming and reusability is excellent.(pro)
- A lot of the folks have complained about performance issues with Tensorflow backend(con).
Kur recently got open sourced by Deepgram.I find the way of defining models unique and simpler, but I am not sure of the robustness. Click here to know about it.