(define-module (gn packages machine-learning) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) #:use-module (gnu packages machine-learning) #:use-module (guix download) #:use-module (guix build-system python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages graphviz) #:use-module (gnu packages python-science) #:use-module (gnu packages check) #:use-module (gnu packages python-check) #:use-module (gnu packages sphinx) #:use-module (gnu packages python-web)) (define-public tensorflow-native (package (inherit tensorflow) (name "tensorflow-native") (arguments (substitute-keyword-arguments (package-arguments tensorflow) ((#:substitutable? _ #f) #f) ((#:configure-flags flags) `(cons "-Dtensorflow_OPTIMIZE_FOR_NATIVE_ARCH=ON" (delete "-Dtensorflow_OPTIMIZE_FOR_NATIVE_ARCH=OFF" ,flags))))))) (define-public tensowflow-native-instead-of-tensorflow (package-input-rewriting/spec `(("tensorflow" . ,(const tensorflow-native))))) (define-public python-keras-applications (package (name "python-keras-applications") (version "1.0.8") (source (origin (method url-fetch) (uri (pypi-uri "Keras_Applications" version)) (sha256 (base32 "1rcz31ca4axa6kzhjx4lwqxbg4wvlljkj8qj9a7p9sfd5fhzjyam")))) (build-system python-build-system) ;; The tests require Keras, but this package is needed to build Keras. (arguments '(#:tests? #f)) (propagated-inputs (list python-h5py python-numpy)) (native-inputs (list python-pytest python-pytest-cov python-pytest-xdist)) (home-page "https://github.com/keras-team/keras-applications") (synopsis "Reference implementations of popular deep learning models") (description "This package provides reference implementations of popular deep learning models for use with the Keras deep learning framework.") (license license:expat))) (define-public python-keras-preprocessing (package (name "python-keras-preprocessing") (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "Keras_Preprocessing" version)) (sha256 (base32 "1r98nm4k1svsqjyaqkfk23i31bl1kcfcyp7094yyj3c43phfp3as")))) (build-system python-build-system) (propagated-inputs (list python-numpy python-six)) (native-inputs (list python-pandas python-pillow python-pytest python-pytest-cov python-pytest-xdist tensorflow)) (home-page "https://github.com/keras-team/keras-preprocessing/") (synopsis "Data preprocessing and augmentation for deep learning models") (description "Keras Preprocessing is the data preprocessing and data augmentation module of the Keras deep learning library. It provides utilities for working with image data, text data, and sequence data.") (license license:expat))) (define-public python-keras-no-tests (package (name "python-keras-no-tests") (version "2.3.1") (source (origin (method url-fetch) (uri (pypi-uri "Keras" version)) (sha256 (base32 "1k68xd8n2y9ldijggjc8nn4d6d1axw0p98gfb0fmm8h641vl679j")) (modules '((guix build utils))) (snippet '(substitute* '("keras/callbacks/callbacks.py" "keras/engine/training_utils.py" "keras/engine/training.py" "keras/engine/training_generator.py" "keras/utils/generic_utils.py") (("from collections import Iterable") "from collections.abc import Iterable") (("collections.Container") "collections.abc.Container") (("collections.Mapping") "collections.abc.Mapping") (("collections.Sequence") "collections.abc.Sequence"))))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'unpack 'tf-compatibility (lambda _ (substitute* "keras/backend/tensorflow_backend.py" (("^get_graph = .*") "get_graph = tf.get_default_graph") (("tf.compat.v1.nn.fused_batch_norm") "tf.nn.fused_batch_norm") ;; categorical_crossentropy does not support axis (("from_logits=from_logits, axis=axis") "from_logits=from_logits") ;; dropout accepts a level number, not a named rate argument. (("dropout\\(x, rate=level,") "dropout(x, level,") (("return x.shape.rank") "return len(x.shape)")))) (add-after 'unpack 'hdf5-compatibility (lambda _ ;; The truth value of an array with more than one element is ambiguous. (substitute* "tests/keras/utils/io_utils_test.py" ((" *assert .* == \\[b'(asd|efg).*") "")) (substitute* "tests/test_model_saving.py" (("h5py.File\\('does not matter',") "h5py.File('does not matter', 'w',")) (substitute* "keras/utils/io_utils.py" (("h5py.File\\('in-memory-h5py', driver='core', backing_store=False\\)") "h5py.File('in-memory-h5py', 'w', driver='core', backing_store=False)") (("h5file.fid.get_file_image") "h5file.id.get_file_image")) (substitute* "keras/engine/saving.py" (("\\.decode\\('utf-?8'\\)") "")))) (add-after 'unpack 'delete-unavailable-backends (lambda _ (delete-file "keras/backend/theano_backend.py") (delete-file "keras/backend/cntk_backend.py"))) (delete 'check)))) (propagated-inputs (list python-h5py python-keras-applications python-keras-preprocessing python-numpy python-pydot python-pyyaml python-scipy python-six tensorflow graphviz)) (native-inputs (list python-flaky python-markdown python-pandas python-pytest python-pytest-cov python-pytest-timeout python-pytest-xdist python-pyux python-sphinx python-requests)) (home-page "https://keras.io/") (synopsis "High-level deep learning framework") (description "Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow. It was developed with a focus on enabling fast experimentation. Use Keras if you need a deep learning library that: @itemize @item Allows for easy and fast prototyping (through user friendliness, modularity, and extensibility). @item Supports both convolutional networks and recurrent networks, as well as combinations of the two. @item Runs seamlessly on CPU and GPU. @end itemize\n") (license license:expat)))