guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/06: gnu: python-keras: Update to 2.3.1.


From: guix-commits
Subject: 05/06: gnu: python-keras: Update to 2.3.1.
Date: Tue, 20 Jun 2023 17:41:52 -0400 (EDT)

rekado pushed a commit to branch master
in repository guix.

commit 81441182bb5b61c6e5bc09b843f1fc1b9697523c
Author: Ricardo Wurmus <rekado@elephly.net>
AuthorDate: Tue Jun 20 23:37:06 2023 +0200

    gnu: python-keras: Update to 2.3.1.
    
    * gnu/packages/patches/python-keras-integration-test.patch: Remove file.
    * gnu/local.mk (dist_patch_DATA): Remove it.
    * gnu/packages/machine-learning.scm (python-keras): Update to 2.3.1.
    [source]: Remove patch; update snippet.
    [arguments]: Add build phase 'tf-compatibility; add phase 
'hdf5-compatibility;
    rename phase 'remove-tests-for-unavailable-features to
    'delete-unavailable-backends; update 'check phase to disable tests that 
cannot
    be repaired or are flaky.
    [native-inputs]: Add python-flaky, python-markdown, and python-pyux.
---
 gnu/local.mk                                       |   1 -
 gnu/packages/machine-learning.scm                  | 105 +++++++++++++++++----
 .../patches/python-keras-integration-test.patch    |  19 ----
 3 files changed, 86 insertions(+), 39 deletions(-)

diff --git a/gnu/local.mk b/gnu/local.mk
index 2b3df5d75a..1b59cc522b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1802,7 +1802,6 @@ dist_patch_DATA =                                         
\
   %D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch   \
   %D%/packages/patches/python-hiredis-fix-header.patch         \
   %D%/packages/patches/python-hiredis-use-system-hiredis.patch \
-  %D%/packages/patches/python-keras-integration-test.patch     \
   %D%/packages/patches/python-pdoc3-tests.patch                        \
   %D%/packages/patches/python-peachpy-determinism.patch        \
   %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
diff --git a/gnu/packages/machine-learning.scm 
b/gnu/packages/machine-learning.scm
index 13651f4035..8fbb0274d4 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -3221,51 +3221,115 @@ with image data, text data, and sequence data.")
 (define-public python-keras
   (package
     (name "python-keras")
-    (version "2.2.4")
+    (version "2.3.1")
     (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Keras" version))
-       (patches (search-patches "python-keras-integration-test.patch"))
        (sha256
         (base32
-         "1j8bsqzh49vjdxy6l1k4iwax5vpjzniynyd041xjavdzvfii1dlh"))
+         "1k68xd8n2y9ldijggjc8nn4d6d1axw0p98gfb0fmm8h641vl679j"))
+       (modules '((guix build utils)))
        (snippet
-        #~(begin (use-modules (guix build utils))
-                 (substitute* "keras/callbacks.py"
-                   (("from collections import Iterable")
-                    "from collections.abc import Iterable"))))))
+        '(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 'remove-tests-for-unavailable-features
+         (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-file "tests/keras/backend/backend_test.py")
-             ;; FIXME: This doesn't work because Tensorflow is missing the
-             ;; coder ops library.
-             (delete-file "tests/keras/test_callbacks.py")))
+             (delete-file "keras/backend/cntk_backend.py")))
          (replace 'check
            (lambda* (#:key tests? #:allow-other-keys)
              (when tests?
                ;; These tests attempt to download data files from the internet.
                (delete-file "tests/integration_tests/test_datasets.py")
                (delete-file "tests/integration_tests/imagenet_utils_test.py")
-               ;; Backport https://github.com/keras-team/keras/pull/12479.
-               (substitute* "tests/keras/engine/test_topology.py"
-                 (("np.ones\\(\\(3, 2\\)\\)")
-                  "1."))
                (invoke "python" "-m" "pytest" "tests"
                        "-p" "no:pep8"
                        ;; FIXME: python-build-system lacks PARALLEL-TESTS?
                        "-n" (number->string (parallel-job-count))
+                       ;; This one uses the theano backend that we don't have.
+                       "--ignore=tests/test_api.py"
+                       "--ignore=tests/keras/backend/backend_test.py"
+                       ;; Our Tensorflow version does not have the coder ops 
library.
+                       "--ignore=tests/keras/callbacks/callbacks_test.py"
+                       ;; ...nor do we have tensorboard
+                       "--ignore=tests/keras/callbacks/tensorboard_test.py"
                        "-k"
                        (string-append
+                        ;; See https://github.com/keras-team/keras/pull/7033
+                        "not test_TimeDistributed_learning_phase "
+                        ;; XXX fails because no closure is provided
+                        "and not test_func_dump_and_load_backwards_compat "
+                        ;; XXX real bug?  These are all tests that fail due to
+                        ;; shape mismatch, e.g. "got logits shape [12,3] and
+                        ;; labels shape [9]"
+                        "and not 
test_model_with_crossentropy_losses_channels_first "
+                        "and not 
test_masking_correctness_output_size_not_equal_to_first_state_size "
+                        "and not test_convolutional_recurrent "
+                        "and not test_axis "
+
+                        ;; XXX fails because of 3/15 values have unexpected 
differences.
+                        "and not 
test_masking_correctness_output_not_equal_to_first_state "
+                        ;; XXX fails because of a difference of about 0.1
+                        "and not test_sample_weighted "
+                        ;; XXX fails because of a difference of about 0.3
+                        "and not test_scalar_weighted "
+                        ;; XXX fails because of a difference of about 0.2
+                        "and not test_unweighted "
+
+                        ;; XXX I cannot reproduce this in an interactive
+                        ;; Python session, because l2_norm works just fine.
+                        "and not test_weighted " ;TestCosineSimilarity
+                        "and not test_config "   ;TestCosineSimilarity
+
                         ;; The following test fails only in the build
                         ;; container; skip it.
-                        "not test_selu "
+                        "and not test_selu "
                         ;; The following test was found flaky and removed in
                         ;; recent versions.
                         "and not test_stateful_metrics"))))))))
@@ -3281,12 +3345,15 @@ with image data, text data, and sequence data.")
            tensorflow
            graphviz))
     (native-inputs
-     (list python-pandas
+     (list python-flaky
+           python-markdown
+           python-pandas
            python-pytest
            python-pytest-cov
            python-pytest-pep8
            python-pytest-timeout
            python-pytest-xdist
+           python-pyux
            python-sphinx
            python-requests))
     (home-page "https://github.com/keras-team/keras";)
diff --git a/gnu/packages/patches/python-keras-integration-test.patch 
b/gnu/packages/patches/python-keras-integration-test.patch
deleted file mode 100644
index aa2b1a273d..0000000000
--- a/gnu/packages/patches/python-keras-integration-test.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Fix a test failure with recent versions of ... Pytest?  Python?
-
-Taken from upstream:
-https://github.com/keras-team/keras/commit/fe35050a8f18dc52304aa8da4e463eececa25240
-
-diff --git a/tests/integration_tests/applications_test.py 
b/tests/integration_tests/applications_test.py
-index 979f2f2abd6..6e3b57fa8e2 100644
---- a/tests/integration_tests/applications_test.py
-+++ b/tests/integration_tests/applications_test.py
-@@ -58,7 +58,8 @@ def _test_application_basic(app, last_dim=1000):
- def _test_application_notop(app, last_dim):
-     output_shape = _get_output_shape(
-         lambda: app(weights=None, include_top=False))
--    assert output_shape == (None, None, None, last_dim)
-+    assert len(output_shape) == 4
-+    assert output_shape[-1] == last_dim
- 
- 
- def test_mobilenet_v2_legacy_import():



reply via email to

[Prev in Thread] Current Thread [Next in Thread]