Docker image: Keras in Docker for reproducible deep learning on CPU or GPU
Clone or download
Permalink
Failed to load latest commit information.
.gitignore Initial commit of docker-keras. Jun 16, 2016
Dockerfile Add Keras version 1.0.4. Jun 16, 2016
Dockerfile.cpu Add Keras version 1.0.4. Jun 16, 2016
Dockerfile.gpu Add Keras version 1.0.4. Jun 16, 2016
Dockerfile.py2 Add Keras version 1.0.4. Jun 16, 2016
Dockerfile.py2-cntk-cpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py2-cntk-gpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py2-tf-cpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py2-tf-gpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py2-th-cpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py2-th-gpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py3 Add Keras version 1.0.4. Jun 16, 2016
Dockerfile.py3-cntk-cpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py3-cntk-gpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py3-tf-cpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py3-tf-gpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py3-th-cpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
Dockerfile.py3-th-gpu Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018
LICENSE_AGPL-3.0.txt Update license information. Jan 17, 2018
README.md Add Keras version 2.1.4, TensorFlow 1.5.0 and CNTK 2.4. Feb 16, 2018

README.md

docker-keras

docker-keras is a minimal Docker image built from Debian 9 (amd64) for reproducible deep learning based on Keras. It features minimal images for Python 2 or 3, TensorFlow, Theano, or CNTK backends, processing on CPU or GPU, and uses only Debian and Python packages (no manual installations). Each tag is using the latest released versions at a specific date.

Open source project:

Available tags:

  • 2.1.4-py2, 2.1.4-cpu, 2.1.4, latest points to 2.1.4-py2-tf-cpu
  • 2.1.4-py3 points to 2.1.4-py3-tf-cpu
  • 2.1.4-gpu points to 2.1.4-py2-tf-gpu
  • 2.1.4-py2-tf-cpu/2.1.4-py2-tf-gpu/2.1.4-py3-tf-cpu/2.1.4-py3-tf-gpu [2018-02-15]: Python 2.7/3.5 + Keras (2.1.4) + TensorFlow (1.5.0) on CPU/GPU (Dockerfile.py2-tf-cpu/.py2-tf-gpu/.py3-tf-cpu/.py3-tf-gpu)
  • 2.1.4-py2-th-cpu/2.1.4-py2-th-gpu/2.1.4-py3-th-cpu/2.1.4-py3-th-gpu [2018-02-15]: Python 2.7/3.5 + Keras (2.1.4) + Theano (1.0.1) on CPU/GPU (Dockerfile.py2-th-cpu*/.py2-th-gpu.py3-th-cpu/.py3-th-gpu)
  • 2.1.4-py2-cntk-cpu/2.1.4-py2-cntk-gpu/2.1.4-py3-cntk-cpu/2.1.4-py3-cntk-gpu [2018-02-15]: Python 2.7/3.5 + Keras (2.1.4) + CNTK (2.4) on CPU/GPU (Dockerfile.py2-cntk-cpu*/.py2-cntk-gpu.py3-cntk-cpu/.py3-cntk-gpu)
  • 2.1.3-py2-tf-cpu/2.1.3-py2-tf-gpu/2.1.3-py3-tf-cpu/2.1.3-py3-tf-gpu [2018-01-17]: Python 2.7/3.5 + Keras (2.1.3) + TensorFlow (1.4.1) on CPU/GPU (Dockerfile.py2-tf-cpu/.py2-tf-gpu/.py3-tf-cpu/.py3-tf-gpu)
  • 2.1.3-py2-th-cpu/2.1.3-py2-th-gpu/2.1.3-py3-th-cpu/2.1.3-py3-th-gpu [2018-01-17]: Python 2.7/3.5 + Keras (2.1.3) + Theano (1.0.1) on CPU/GPU (Dockerfile.py2-th-cpu*/.py2-th-gpu.py3-th-cpu/.py3-th-gpu)
  • 2.1.3-py2-cntk-cpu/2.1.3-py2-cntk-gpu/2.1.3-py3-cntk-cpu/2.1.3-py3-cntk-gpu [2018-01-17]: Python 2.7/3.5 + Keras (2.1.3) + CNTK (2.3) on CPU/GPU (Dockerfile.py2-cntk-cpu*/.py2-cntk-gpu.py3-cntk-cpu/.py3-cntk-gpu)
  • 2.1.1-py2-tf-cpu/2.1.1-py2-tf-gpu/2.1.1-py3-tf-cpu/2.1.1-py3-tf-gpu [2017-12-01]: Python 2.7/3.5 + Keras (2.1.1) + TensorFlow (1.4.0) on CPU/GPU
  • 2.1.1-py2-th-cpu/2.1.1-py2-th-gpu/2.1.1-py3-th-cpu/2.1.1-py3-th-gpu [2017-12-01]: Python 2.7/3.5 + Keras (2.1.1) + Theano (1.0.0) on CPU/GPU
  • 2.1.1-py2-cntk-cpu/2.1.1-py2-cntk-gpu/2.1.1-py3-cntk-cpu/2.1.1-py3-cntk-gpu [2017-12-01]: Python 2.7/3.5 + Keras (2.1.1) + CNTK (2.3) on CPU/GPU
  • 2.0.8-py2-tf-cpu/2.0.8-py2-tf-gpu/2.0.8-py3-tf-cpu/2.0.8-py3-tf-gpu [2017-09-14]: Python 2.7/3.5 + Keras (2.0.8) + TensorFlow (1.3.0) on CPU/GPU
  • 2.0.8-py2-th-cpu/2.0.8-py2-th-gpu/2.0.8-py3-th-cpu/2.0.8-py3-th-gpu [2017-09-14]: Python 2.7/3.5 + Keras (2.0.8) + Theano (0.9.0) on CPU/GPU
  • 2.0.8-py2-cntk-cpu/2.0.8-py2-cntk-gpu/2.0.8-py3-cntk-cpu/2.0.8-py3-cntk-gpu [2017-09-14]: Python 2.7/3.5 + Keras (2.0.8) + CNTK (2.1) on CPU/GPU
  • 2.0.6-py2-tf-cpu/2.0.6-py2-tf-gpu/2.0.6-py3-tf-cpu/2.0.6-py3-tf-gpu [2017-07-13]: Python 2.7/3.5 + Keras (2.0.6) + TensorFlow (1.2.1) on CPU/GPU
  • 2.0.6-py2-th-cpu/2.0.6-py2-th-gpu/2.0.6-py3-th-cpu/2.0.6-py3-th-gpu [2017-07-13]: Python 2.7/3.5 + Keras (2.0.6) + Theano (0.9.0) on CPU/GPU
  • 2.0.5-py2-tf-cpu/2.0.5-py2-tf-gpu/2.0.5-py3-tf-cpu/2.0.5-py3-tf-gpu [2017-06-13]: Python 2.7/3.5 + Keras (2.0.5) + TensorFlow (1.1.0) on CPU/GPU
  • 2.0.5-py2-th-cpu/2.0.5-py2-th-gpu/2.0.5-py3-th-cpu/2.0.5-py3-th-gpu [2017-06-13]: Python 2.7/3.5 + Keras (2.0.5) + Theano (0.9.0) on CPU/GPU
  • 2.0.4-py2-tf-cpu/2.0.4-py2-tf-gpu/2.0.4-py3-tf-cpu/2.0.4-py3-tf-gpu [2017-05-01]: Python 2.7/3.5 + Keras (2.0.4) + TensorFlow (1.1.0) on CPU/GPU
  • 2.0.4-py2-th-cpu/2.0.4-py2-th-gpu/2.0.4-py3-th-cpu/2.0.4-py3-th-gpu [2017-05-01]: Python 2.7/3.5 + Keras (2.0.4) + Theano (0.9.0) on CPU/GPU
  • 2.0.3-py2-tf-cpu/2.0.3-py2-tf-gpu/2.0.3-py3-tf-cpu/2.0.3-py3-tf-gpu [2017-04-19]: Python 2.7/3.5 + Keras (2.0.3) + TensorFlow (1.0.1) on CPU/GPU
  • 2.0.3-py2-th-cpu/2.0.3-py2-th-gpu/2.0.3-py3-th-cpu/2.0.3-py3-th-gpu [2017-04-19]: Python 2.7/3.5 + Keras (2.0.3) + Theano (0.9.0) on CPU/GPU
  • 2.0.2-py2-tf-cpu/2.0.2-py2-tf-gpu/2.0.2-py3-tf-cpu/2.0.2-py3-tf-gpu [2017-03-27]: Python 2.7/3.5 + Keras (2.0.2) + TensorFlow (1.0.1) on CPU/GPU
  • 2.0.2-py2-th-cpu/2.0.2-py2-th-gpu/2.0.2-py3-th-cpu/2.0.2-py3-th-gpu [2017-03-27]: Python 2.7/3.5 + Keras (2.0.2) + Theano (0.9.0) on CPU/GPU
  • 2.0.0-py2-tf-cpu/2.0.0-py2-tf-gpu/2.0.0-py3-tf-cpu/2.0.0-py3-tf-gpu [2017-03-15]: Python 2.7/3.5 + Keras (2.0.0) + TensorFlow (1.0.1) on CPU/GPU
  • 2.0.0-py2-th-cpu/2.0.0-py2-th-gpu/2.0.0-py3-th-cpu/2.0.0-py3-th-gpu [2017-03-15]: Python 2.7/3.5 + Keras (2.0.0) + Theano (0.8.2) on CPU/GPU
  • 1.2.2-py2-tf-cpu/1.2.2-py2-tf-gpu/1.2.2-py3-tf-cpu/1.2.2-py3-tf-gpu [2017-02-17]: Python 2.7/3.5 + Keras (1.2.2) + TensorFlow (1.0.0) on CPU/GPU
  • 1.2.2-py2-th-cpu/1.2.2-py2-th-gpu/1.2.2-py3-th-cpu/1.2.2-py3-th-gpu [2017-02-17]: Python 2.7/3.5 + Keras (1.2.2) + Theano (0.8.2) on CPU/GPU
  • 1.2.1-py2-tf-cpu/1.2.1-py2-tf-gpu/1.2.1-py3-tf-cpu/1.2.1-py3-tf-gpu [2017-01-20]: Python 2.7/3.5 + Keras (1.2.1) + TensorFlow (0.12.1) on CPU/GPU
  • 1.2.1-py2-th-cpu/1.2.1-py2-th-gpu/1.2.1-py3-th-cpu/1.2.1-py3-th-gpu [2017-01-20]: Python 2.7/3.5 + Keras (1.2.1) + Theano (0.8.2) on CPU/GPU
  • 1.2.0-py2-tf-cpu/1.2.0-py2-tf-gpu/1.2.0-py3-tf-cpu/1.2.0-py3-tf-gpu [2016-12-20]: Python 2.7/3.5 + Keras (1.2.0) + TensorFlow (0.12.0) on CPU/GPU
  • 1.2.0-py2-th-cpu/1.2.0-py2-th-gpu/1.2.0-py3-th-cpu/1.2.0-py3-th-gpu [2016-12-20]: Python 2.7/3.5 + Keras (1.2.0) + Theano (0.8.2) on CPU/GPU
  • 1.1.1-py2-tf-cpu/1.1.1-py2-tf-gpu/1.1.1-py3-tf-cpu/1.1.1-py3-tf-gpu [2016-10-31]: Python 2.7/3.5 + Keras (1.1.1) + TensorFlow (0.10.0) on CPU/GPU
  • 1.1.1-py2-th-cpu/1.1.1-py2-th-gpu/1.1.1-py3-th-cpu/1.1.1-py3-th-gpu [2016-10-31]: Python 2.7/3.5 + Keras (1.1.1) + Theano (0.8.2) on CPU/GPU
  • 1.1.0-py2-tf-cpu/1.1.0-py2-tf-gpu/1.1.0-py3-tf-cpu/1.1.0-py3-tf-gpu [2016-09-20]: Python 2.7/3.5 + Keras (1.1.0) + TensorFlow (0.10.0) on CPU/GPU
  • 1.1.0-py2-th-cpu/1.1.0-py2-th-gpu/1.1.0-py3-th-cpu/1.1.0-py3-th-gpu [2016-09-20]: Python 2.7/3.5 + Keras (1.1.0) + Theano (0.8.2) on CPU/GPU
  • 1.0.8-py2-tf-cpu/1.0.8-py2-tf-gpu/1.0.8-py3-tf-cpu/1.0.8-py3-tf-gpu [2016-08-28]: Python 2.7/3.5 + Keras (1.0.8) + TensorFlow (0.9.0) on CPU/GPU
  • 1.0.8-py2-th-cpu/1.0.8-py2-th-gpu/1.0.8-py3-th-cpu/1.0.8-py3-th-gpu [2016-08-28]: Python 2.7/3.5 + Keras (1.0.8) + Theano (0.8.2) on CPU/GPU
  • 1.0.6-py2-tf-cpu/1.0.6-py2-tf-gpu/1.0.6-py3-tf-cpu/1.0.6-py3-tf-gpu [2016-07-20]: Python 2.7/3.5 + Keras (1.0.6) + TensorFlow (0.9.0) on CPU/GPU
  • 1.0.6-py2-th-cpu/1.0.6-py2-th-gpu/1.0.6-py3-th-cpu/1.0.6-py3-th-gpu [2016-07-20]: Python 2.7/3.5 + Keras (1.0.6) + Theano (0.8.2) on CPU/GPU
  • 1.0.4-py2-tf-cpu/1.0.4-py2-tf-gpu/1.0.4-py3-tf-cpu/1.0.4-py3-tf-gpu [2016-06-16]: Python 2.7/3.5 + Keras (1.0.4) + TensorFlow (0.8.0) on CPU/GPU
  • 1.0.4-py2-th-cpu/1.0.4-py2-th-gpu/1.0.4-py3-th-cpu/1.0.4-py3-th-gpu [2016-06-16]: Python 2.7/3.5 + Keras (1.0.4) + Theano (0.8.2) on CPU/GPU
  • 1.0.1-py2-th-cpu/1.0.1-py2-th-gpu [2016-04-16]: Python 2.7 + Keras (1.0.1) + Theano (0.8.1) on CPU/GPU
  • 0.3.3-py2-th-cpu/0.3.3-py2-th-gpu [2016-03-31]: Python 2.7 + Keras (0.3.3) + Theano (0.8.1) on CPU/GPU

Usage

Quick experiment with latest Keras (with TensorFlow backend on CPU) and your Python 2 code in current directory (will be mapped to /srv):

$ docker run -it --rm -v $(pwd):/srv gw000/keras /srv/run.py

Or using TensorFlow backend on GPUs in Python 2 (see docker-debian-cuda):

$ docker run -it --rm $(ls /dev/nvidia* | xargs -I{} echo '--device={}') $(ls /usr/lib/*-linux-gnu/{libcuda,libnvidia}* | xargs -I{} echo '-v {}:{}:ro') -v $(pwd):/srv gw000/keras:2.1.4-py2-tf-gpu /srv/run.py

Or using Theano backend on GPUs in Python 3 (see docker-debian-cuda):

$ docker run -it --rm $(ls /dev/nvidia* | xargs -I{} echo '--device={}') $(ls /usr/lib/*-linux-gnu/{libcuda,libnvidia}* | xargs -I{} echo '-v {}:{}:ro') -v $(pwd):/srv gw000/keras:2.1.4-py3-th-gpu /srv/run.py

Additional parameters in above commands explicitly expose your GPU devices and CUDA Driver library from the host system into the container. The vendor specific nvidia-docker tool performs the same thing in a less transparent way and is incompatible with other Docker tools. For more instructions see docker-debian-cuda.

In practice you are supposed to extend this image by writing your own Dockerfile that installs all your application dependencies (either using apt-get or pip). Eg. if you need Matplotlib, PIL/pillow, Pandas, Scikit-learn, and Statsmodels:

FROM gw000/keras:2.1.4-py3-tf-cpu

# install dependencies from debian packages
RUN apt-get update -qq \
 && apt-get install --no-install-recommends -y \
    python-matplotlib \
    python-pillow

# install dependencies from python packages
RUN pip --no-cache-dir install \
    pandas \
    scikit-learn \
    statsmodels

# install your app
ADD ai/ /srv/ai/
RUN chmod +x /srv/ai/run.py

# default command
CMD ["/srv/ai/run.py"]

If you are looking for a full deep learning research environment based on Keras and Jupyter, check out docker-keras-full.

Feedback

If you encounter any bugs or have feature requests, please file them in the issue tracker or even develop it yourself and submit a pull request over GitHub.

License

Copyright © 2016-2018 gw0 [http://gw.tnode.com/] <gw.2018@ena.one>

All code is licensed under the GNU Affero General Public License 3.0+ (AGPL-3.0+). Note that it is mandatory to make all modifications and complete source code publicly available to any user.