keras-team / keras-contrib

Keras community contributions
MIT License
1.59k stars 652 forks source link

model contributions more in line with tf-slim #15

Open ahundt opened 7 years ago

ahundt commented 7 years ago

There are a number of good model implementations in third party repositories, and I think keras-contrib may be the most sensible place for them to go. However, each will need an example and a way to train, or a single script that works for all models. For that reason I propose a tf-slim style setup for vision based classification and semantic segmentation that can eliminate some of that overhead for users and provide more general utility than the keras/applications folder.

The following may be aspects of a model folder:

One such example model implementation is keras-resnet. The author is interested in submitting a pull request to keras-contrib.

I know that deep-learning-models exists but there are benefits keras-contrib could eventually provide:

Is there interest in this type of contribution? Would the ideal place to put such a thing be in kerascontrib/keras-contrib/models?

the-moliver commented 7 years ago

I have mixed feelings about this. While centralization can be a good thing, I think a model library might go beyond the intended scope of this repository. I had imagined this to be more of a testing ground for cutting edge features from recent literature. Perhaps it would be better to expand on @fchollet 's deep-learning-models if he's willing to grant permissions? What do others think?

farizrahman4u commented 7 years ago

This repo is intended for testing new features (new layers, backend functions, optimizers, etc), as well as examples that use such features. If you have models that use only existing Keras features, it would be better to PR to @fchollet's deep learning models repo.

junwei-pan commented 7 years ago

We all agree that there should be an official keras repository for the community to contribute new models. Ideally it should be in an separate repo such as @fchollet 's deep learning models repo. However, there will be some models that may use new features which only exist in keras-contrib, so some of the new models MUST be pushed to keras-contri while the others goes to the model repo. Therefore I think we can just make it simple and use this repo as the only one repo for all models so that the contributors don't need to wonder which model repo they should pushed their models to.

tboquet commented 7 years ago

Would it be possible to use @fchollet 's deep learning models repo and add a folder keras-contrib-models with a readme. It could be explicit enough to advise the user that he should use the keras-contrib repo with these models? It could also be possible to explain how to set up a virtualenv and provide a Dockerfile so it will be easy to work in a clean environment? I guess the reviewers from the keras-contrib repo should review the models associated with the features merged here. What do you think?

ahundt commented 7 years ago

Allow me to tweak my suggestion so that as you specified, I'll be proposing a specific new feature as well as examples of using that feature:

1) Define a standard class to create the most prominent published models of various types that can generate each model and configure the model including:

As requested, I believe this meets the standard @farizrahman4u is looking for of testing new features, as well as creating examples of using such features. However, this isn't a complete design yet, just a request for comment.

ahundt commented 7 years ago

In other words, I'm trying to bootstrap some of the tools needed for applied R&D in a way that is much more disciplined than the quirky model/weight libraries in other deep learning projects.

tboquet commented 7 years ago

I see, in my opinion (that could be wrong) it would definitely be possible to impose a simple style guide for the examples and maybe normalize the existing ones. The whole applied research pipeline is really interesting and important but it seems hard to integrate in this repo (API, weights management, experiment planning, etc.). I imagine it could be done in a separate project.