keras-nightly 3.14.0.dev2025122704__py3-none-any.whl → 3.14.0.dev2026010104__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -247,6 +247,7 @@ from keras.src.ops.numpy import multiply as multiply
247
247
  from keras.src.ops.numpy import nan_to_num as nan_to_num
248
248
  from keras.src.ops.numpy import ndim as ndim
249
249
  from keras.src.ops.numpy import negative as negative
250
+ from keras.src.ops.numpy import nextafter as nextafter
250
251
  from keras.src.ops.numpy import nonzero as nonzero
251
252
  from keras.src.ops.numpy import not_equal as not_equal
252
253
  from keras.src.ops.numpy import ones as ones
@@ -131,6 +131,7 @@ from keras.src.ops.numpy import multiply as multiply
131
131
  from keras.src.ops.numpy import nan_to_num as nan_to_num
132
132
  from keras.src.ops.numpy import ndim as ndim
133
133
  from keras.src.ops.numpy import negative as negative
134
+ from keras.src.ops.numpy import nextafter as nextafter
134
135
  from keras.src.ops.numpy import nonzero as nonzero
135
136
  from keras.src.ops.numpy import not_equal as not_equal
136
137
  from keras.src.ops.numpy import ones as ones
keras/ops/__init__.py CHANGED
@@ -247,6 +247,7 @@ from keras.src.ops.numpy import multiply as multiply
247
247
  from keras.src.ops.numpy import nan_to_num as nan_to_num
248
248
  from keras.src.ops.numpy import ndim as ndim
249
249
  from keras.src.ops.numpy import negative as negative
250
+ from keras.src.ops.numpy import nextafter as nextafter
250
251
  from keras.src.ops.numpy import nonzero as nonzero
251
252
  from keras.src.ops.numpy import not_equal as not_equal
252
253
  from keras.src.ops.numpy import ones as ones
@@ -131,6 +131,7 @@ from keras.src.ops.numpy import multiply as multiply
131
131
  from keras.src.ops.numpy import nan_to_num as nan_to_num
132
132
  from keras.src.ops.numpy import ndim as ndim
133
133
  from keras.src.ops.numpy import negative as negative
134
+ from keras.src.ops.numpy import nextafter as nextafter
134
135
  from keras.src.ops.numpy import nonzero as nonzero
135
136
  from keras.src.ops.numpy import not_equal as not_equal
136
137
  from keras.src.ops.numpy import ones as ones
@@ -1351,6 +1351,12 @@ def negative(x):
1351
1351
  return jnp.negative(x)
1352
1352
 
1353
1353
 
1354
+ def nextafter(x1, x2):
1355
+ x1 = convert_to_tensor(x1)
1356
+ x2 = convert_to_tensor(x2)
1357
+ return jnp.nextafter(x1, x2)
1358
+
1359
+
1354
1360
  @sparse.elementwise_unary(linear=False)
1355
1361
  def square(x):
1356
1362
  x = convert_to_tensor(x)
@@ -1335,6 +1335,14 @@ def negative(x):
1335
1335
  return np.negative(x)
1336
1336
 
1337
1337
 
1338
+ def nextafter(x1, x2):
1339
+ x1 = convert_to_tensor(x1)
1340
+ x2 = convert_to_tensor(x2)
1341
+ dtype = dtypes.result_type(x1.dtype, x2.dtype, float)
1342
+
1343
+ return np.nextafter(x1, x2).astype(dtype)
1344
+
1345
+
1338
1346
  def square(x):
1339
1347
  x = convert_to_tensor(x)
1340
1348
  if standardize_dtype(x.dtype) == "bool":
@@ -1071,7 +1071,33 @@ def expm1(x):
1071
1071
 
1072
1072
 
1073
1073
  def flip(x, axis=None):
1074
- raise NotImplementedError("`flip` is not supported with openvino backend")
1074
+ x_node = get_ov_output(x)
1075
+ ndim = x.ndim
1076
+ if ndim is None:
1077
+ raise ValueError(
1078
+ "The `flip` operation does not support tensors with dynamic rank"
1079
+ "for the OpenVINO backend."
1080
+ )
1081
+ if axis is None:
1082
+ axis = list(range(ndim))
1083
+ elif isinstance(axis, int):
1084
+ axis = [axis]
1085
+ axis = [a + ndim if a < 0 else a for a in axis]
1086
+ begin = [0] * ndim
1087
+ end = [0] * ndim
1088
+ strides = [1] * ndim
1089
+ for a in axis:
1090
+ strides[a] = -1
1091
+ all_ones_mask = [1] * ndim
1092
+ result = ov_opset.strided_slice(
1093
+ data=x_node,
1094
+ begin=begin,
1095
+ end=end,
1096
+ strides=strides,
1097
+ begin_mask=all_ones_mask,
1098
+ end_mask=all_ones_mask,
1099
+ )
1100
+ return OpenVINOKerasTensor(result.output(0))
1075
1101
 
1076
1102
 
1077
1103
  def floor(x):
@@ -2572,6 +2598,12 @@ def negative(x):
2572
2598
  return OpenVINOKerasTensor(ov_opset.negative(x).output(0))
2573
2599
 
2574
2600
 
2601
+ def nextafter(x1, x2):
2602
+ raise NotImplementedError(
2603
+ "`nextafter` is not supported with openvino backend"
2604
+ )
2605
+
2606
+
2575
2607
  def square(x):
2576
2608
  x = get_ov_output(x)
2577
2609
  x_type = x.get_element_type()
@@ -3017,6 +3017,16 @@ def negative(x):
3017
3017
  return tf.negative(x)
3018
3018
 
3019
3019
 
3020
+ def nextafter(x1, x2):
3021
+ x1 = convert_to_tensor(x1)
3022
+ x2 = convert_to_tensor(x2)
3023
+
3024
+ dtype = dtypes.result_type(x1.dtype, x2.dtype, float)
3025
+ x1 = tf.cast(x1, tf.float64)
3026
+ x2 = tf.cast(x2, tf.float64)
3027
+ return tf.cast(tf.math.nextafter(x1, x2), dtype)
3028
+
3029
+
3020
3030
  @sparse.elementwise_unary
3021
3031
  def square(x):
3022
3032
  x = convert_to_tensor(x)
@@ -1793,6 +1793,16 @@ def negative(x):
1793
1793
  return torch.negative(x)
1794
1794
 
1795
1795
 
1796
+ def nextafter(x1, x2):
1797
+ x1 = convert_to_tensor(x1)
1798
+ x2 = convert_to_tensor(x2)
1799
+
1800
+ dtype = dtypes.result_type(x1.dtype, x2.dtype, float)
1801
+ x1 = cast(x1, torch.float64)
1802
+ x2 = cast(x2, torch.float64)
1803
+ return cast(torch.nextafter(x1, x2), dtype)
1804
+
1805
+
1796
1806
  def square(x):
1797
1807
  x = convert_to_tensor(x)
1798
1808
  if standardize_dtype(x.dtype) == "bool":
keras/src/ops/image.py CHANGED
@@ -565,6 +565,8 @@ class ExtractPatches(Operation):
565
565
  if isinstance(size, int):
566
566
  size = (size, size)
567
567
  self.size = size
568
+ if strides is None:
569
+ strides = size
568
570
  self.strides = strides
569
571
  self.dilation_rate = dilation_rate
570
572
  self.padding = padding
@@ -583,8 +585,6 @@ class ExtractPatches(Operation):
583
585
  def compute_output_spec(self, images):
584
586
  images_shape = list(images.shape)
585
587
  original_ndim = len(images_shape)
586
- if not self.strides:
587
- strides = (self.size[0], self.size[1])
588
588
  if self.data_format == "channels_last":
589
589
  channels_in = images_shape[-1]
590
590
  else:
@@ -597,7 +597,7 @@ class ExtractPatches(Operation):
597
597
  images_shape,
598
598
  filters,
599
599
  kernel_size,
600
- strides=strides,
600
+ strides=self.strides,
601
601
  padding=self.padding,
602
602
  data_format=self.data_format,
603
603
  dilation_rate=self.dilation_rate,
keras/src/ops/numpy.py CHANGED
@@ -7104,6 +7104,49 @@ def negative(x):
7104
7104
  return backend.numpy.negative(x)
7105
7105
 
7106
7106
 
7107
+ class Nextafter(Operation):
7108
+ def call(self, x1, x2):
7109
+ return backend.numpy.nextafter(x1, x2)
7110
+
7111
+ def compute_output_spec(self, x1, x2):
7112
+ x1_shape = getattr(x1, "shape", [])
7113
+ x2_shape = getattr(x2, "shape", [])
7114
+ output_shape = broadcast_shapes(x1_shape, x2_shape)
7115
+
7116
+ x1_type = backend.standardize_dtype(getattr(x1, "dtype", type(x1)))
7117
+ x2_type = backend.standardize_dtype(getattr(x2, "dtype", type(x2)))
7118
+ dtype = dtypes.result_type(x1_type, x2_type, float)
7119
+ return KerasTensor(output_shape, dtype=dtype)
7120
+
7121
+
7122
+ @keras_export(["keras.ops.nextafter", "keras.ops.numpy.nextafter"])
7123
+ def nextafter(x1, x2):
7124
+ """
7125
+ Return the next representable floating-point value after `x1` towards `x2`.
7126
+
7127
+ This function computes the next floating-point value
7128
+ following `x1` in the direction of `x2`, element-wise.
7129
+
7130
+ Args:
7131
+ x1: Input tensor whose values will be moved to the next
7132
+ representable floating-point value.
7133
+ x2: Input tensor indicating the direction toward which
7134
+ `x1` is moved.
7135
+
7136
+ Returns:
7137
+ Output tensor
7138
+
7139
+ Example:
7140
+ >>> x1 = keras.ops.convert_to_tensor([1.0, 1.0])
7141
+ >>> x2 = keras.ops.convert_to_tensor([2.0, 0.0])
7142
+ >>> keras.ops.nextafter(x1, x2)
7143
+ array([1.0000001, 0.99999994], dtype=float32)
7144
+ """
7145
+ if any_symbolic_tensors((x1, x2)):
7146
+ return Nextafter().symbolic_call(x1, x2)
7147
+ return backend.numpy.nextafter(x1, x2)
7148
+
7149
+
7107
7150
  class Square(Operation):
7108
7151
  def call(self, x):
7109
7152
  return backend.numpy.square(x)
@@ -455,6 +455,9 @@ class KerasFileEditor:
455
455
  def _extract_weights_from_store(self, data, metadata=None, inner_path=""):
456
456
  metadata = metadata or {}
457
457
 
458
+ # ------------------------------------------------------
459
+ # Collect metadata for this HDF5 group
460
+ # ------------------------------------------------------
458
461
  object_metadata = {}
459
462
  for k, v in data.attrs.items():
460
463
  object_metadata[k] = v
@@ -462,26 +465,98 @@ class KerasFileEditor:
462
465
  metadata[inner_path] = object_metadata
463
466
 
464
467
  result = collections.OrderedDict()
468
+
469
+ # ------------------------------------------------------
470
+ # Iterate over all keys in this HDF5 group
471
+ # ------------------------------------------------------
465
472
  for key in data.keys():
466
- inner_path = f"{inner_path}/{key}"
473
+ # IMPORTANT:
474
+ # Never mutate inner_path; use local variable.
475
+ current_inner_path = f"{inner_path}/{key}"
467
476
  value = data[key]
477
+
478
+ # ------------------------------------------------------
479
+ # CASE 1 — HDF5 GROUP → RECURSE
480
+ # ------------------------------------------------------
468
481
  if isinstance(value, h5py.Group):
482
+ # Skip empty groups
469
483
  if len(value) == 0:
470
484
  continue
485
+
486
+ # Skip empty "vars" groups
471
487
  if "vars" in value.keys() and len(value["vars"]) == 0:
472
488
  continue
473
489
 
474
- if hasattr(value, "keys"):
490
+ # Recurse into "vars" subgroup when present
475
491
  if "vars" in value.keys():
476
492
  result[key], metadata = self._extract_weights_from_store(
477
- value["vars"], metadata=metadata, inner_path=inner_path
493
+ value["vars"],
494
+ metadata=metadata,
495
+ inner_path=current_inner_path,
478
496
  )
479
497
  else:
498
+ # Recurse normally
480
499
  result[key], metadata = self._extract_weights_from_store(
481
- value, metadata=metadata, inner_path=inner_path
500
+ value,
501
+ metadata=metadata,
502
+ inner_path=current_inner_path,
482
503
  )
483
- else:
484
- result[key] = value[()]
504
+
505
+ continue # finished processing this key
506
+
507
+ # ------------------------------------------------------
508
+ # CASE 2 — HDF5 DATASET → SAFE LOADING
509
+ # ------------------------------------------------------
510
+
511
+ # Skip any objects that are not proper datasets
512
+ if not hasattr(value, "shape") or not hasattr(value, "dtype"):
513
+ continue
514
+
515
+ shape = value.shape
516
+ dtype = value.dtype
517
+
518
+ # ------------------------------------------------------
519
+ # Validate SHAPE (avoid malformed / malicious metadata)
520
+ # ------------------------------------------------------
521
+
522
+ # No negative dimensions
523
+ if any(dim < 0 for dim in shape):
524
+ raise ValueError(
525
+ "Malformed HDF5 dataset shape encountered in .keras file; "
526
+ "negative dimension detected."
527
+ )
528
+
529
+ # Prevent absurdly high-rank tensors
530
+ if len(shape) > 64:
531
+ raise ValueError(
532
+ "Malformed HDF5 dataset shape encountered in .keras file; "
533
+ "tensor rank exceeds safety limit."
534
+ )
535
+
536
+ # Safe product computation (Python int is unbounded)
537
+ num_elems = int(np.prod(shape))
538
+
539
+ # ------------------------------------------------------
540
+ # Validate TOTAL memory size
541
+ # ------------------------------------------------------
542
+ MAX_BYTES = 1 << 32 # 4 GiB
543
+
544
+ size_bytes = num_elems * dtype.itemsize
545
+
546
+ if size_bytes > MAX_BYTES:
547
+ raise ValueError(
548
+ f"HDF5 dataset too large to load safely "
549
+ f"({size_bytes} bytes; limit is {MAX_BYTES})."
550
+ )
551
+
552
+ # ------------------------------------------------------
553
+ # SAFE — load dataset (guaranteed ≤ 4 GiB)
554
+ # ------------------------------------------------------
555
+ result[key] = value[()]
556
+
557
+ # ------------------------------------------------------
558
+ # Return final tree and metadata
559
+ # ------------------------------------------------------
485
560
  return result, metadata
486
561
 
487
562
  def _generate_filepath_info(self, rich_style=False):
keras/src/version.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from keras.src.api_export import keras_export
2
2
 
3
3
  # Unique source of truth for the version number.
4
- __version__ = "3.14.0.dev2025122704"
4
+ __version__ = "3.14.0.dev2026010104"
5
5
 
6
6
 
7
7
  @keras_export("keras.version")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: keras-nightly
3
- Version: 3.14.0.dev2025122704
3
+ Version: 3.14.0.dev2026010104
4
4
  Summary: Multi-backend Keras
5
5
  Author-email: Keras team <keras-users@googlegroups.com>
6
6
  License: Apache License 2.0
@@ -45,11 +45,11 @@ keras/_tf_keras/keras/losses/__init__.py,sha256=xBc_KOtSLwp3h3CKQ0EnCuIy-Bsak2SP
45
45
  keras/_tf_keras/keras/metrics/__init__.py,sha256=_wF31PTvua5ahF9JEW4Hx1UVNjVCLqVI8J5JNrZCBf8,6546
46
46
  keras/_tf_keras/keras/mixed_precision/__init__.py,sha256=AM51CzHqzcY75tqdpQiuVcTRUEpUzBqeb-EfLeSDSV8,727
47
47
  keras/_tf_keras/keras/models/__init__.py,sha256=83pyA0pzytqin8JLV6FEbPreCb-V64ToebxFGrHsVdQ,501
48
- keras/_tf_keras/keras/ops/__init__.py,sha256=_YretGa6fn_KjmcVkelt4N7WB8lijCCrR0RJTCq2BXA,15471
48
+ keras/_tf_keras/keras/ops/__init__.py,sha256=7d0c6H8jwNa0blmt29-IEeDfPgMjjey06ox0MzWE-yU,15526
49
49
  keras/_tf_keras/keras/ops/image/__init__.py,sha256=oM_PLh5Jk9OGfi1bbJcfWkjoq0Ye5JQG9a7v_KzDfoc,1034
50
50
  keras/_tf_keras/keras/ops/linalg/__init__.py,sha256=0ab6icK3yuIm4khSfAksGRFLEAJhaOu6gGgarau4iEQ,822
51
51
  keras/_tf_keras/keras/ops/nn/__init__.py,sha256=2eD8IlkfBrsmJjHpzsxMM3_058oGeZVgohdBd27iDnI,2992
52
- keras/_tf_keras/keras/ops/numpy/__init__.py,sha256=ST57JQspist7GzxjiaofgYIPz-fvgaRK-pKnNIX8aGk,9533
52
+ keras/_tf_keras/keras/ops/numpy/__init__.py,sha256=Q169WrV_QiEUts3bl6x4Gt02jsLgr542INWPP3EfOZQ,9588
53
53
  keras/_tf_keras/keras/optimizers/__init__.py,sha256=1fx0vEB-oGu-9dumxoIvX4qVHdgJvf74OLyYoBkE2y0,1267
54
54
  keras/_tf_keras/keras/optimizers/legacy/__init__.py,sha256=uIMQESCV80Q0FY-9ikQUjXYPyZqmTfAM3dfohQ5DzYs,516
55
55
  keras/_tf_keras/keras/optimizers/schedules/__init__.py,sha256=pQF3rQiAPuUSTUdflTr-fpL77oyGIv9xzGdjae3M3kw,1120
@@ -111,11 +111,11 @@ keras/losses/__init__.py,sha256=VIXBHQFNdLUPZ7JuwtIKj_4E-xf2yvNyrmdklvjr_xM,3667
111
111
  keras/metrics/__init__.py,sha256=qeEwtqpSCAaCr8BMUv1eVaqJl2Zb83OB5K0BG3JB0nI,6245
112
112
  keras/mixed_precision/__init__.py,sha256=AM51CzHqzcY75tqdpQiuVcTRUEpUzBqeb-EfLeSDSV8,727
113
113
  keras/models/__init__.py,sha256=83pyA0pzytqin8JLV6FEbPreCb-V64ToebxFGrHsVdQ,501
114
- keras/ops/__init__.py,sha256=_YretGa6fn_KjmcVkelt4N7WB8lijCCrR0RJTCq2BXA,15471
114
+ keras/ops/__init__.py,sha256=7d0c6H8jwNa0blmt29-IEeDfPgMjjey06ox0MzWE-yU,15526
115
115
  keras/ops/image/__init__.py,sha256=oM_PLh5Jk9OGfi1bbJcfWkjoq0Ye5JQG9a7v_KzDfoc,1034
116
116
  keras/ops/linalg/__init__.py,sha256=0ab6icK3yuIm4khSfAksGRFLEAJhaOu6gGgarau4iEQ,822
117
117
  keras/ops/nn/__init__.py,sha256=2eD8IlkfBrsmJjHpzsxMM3_058oGeZVgohdBd27iDnI,2992
118
- keras/ops/numpy/__init__.py,sha256=ST57JQspist7GzxjiaofgYIPz-fvgaRK-pKnNIX8aGk,9533
118
+ keras/ops/numpy/__init__.py,sha256=Q169WrV_QiEUts3bl6x4Gt02jsLgr542INWPP3EfOZQ,9588
119
119
  keras/optimizers/__init__.py,sha256=1fx0vEB-oGu-9dumxoIvX4qVHdgJvf74OLyYoBkE2y0,1267
120
120
  keras/optimizers/legacy/__init__.py,sha256=uIMQESCV80Q0FY-9ikQUjXYPyZqmTfAM3dfohQ5DzYs,516
121
121
  keras/optimizers/schedules/__init__.py,sha256=pQF3rQiAPuUSTUdflTr-fpL77oyGIv9xzGdjae3M3kw,1120
@@ -128,7 +128,7 @@ keras/regularizers/__init__.py,sha256=542Shphw7W8h4Dyf2rmqMKUECVZ8IVBvN9g1LWhz-b
128
128
  keras/saving/__init__.py,sha256=KvL2GZxjvgFgEhvEnkvqjIR9JSNHKz-NWZacXajsjLI,1298
129
129
  keras/src/__init__.py,sha256=Gi4S7EiCMkE03PbdGNpFdaUYySWDs_FcAJ8Taz9Y1BE,684
130
130
  keras/src/api_export.py,sha256=gXOkBOnmscV013WAc75lc4Up01-Kkg9EylIAT_QWctg,1173
131
- keras/src/version.py,sha256=n4zGcChRyZMCGonaQqRU1yfsybUK_zt3xHa2lSrrB5A,204
131
+ keras/src/version.py,sha256=N0ASH1QtgbgwTXyqGB8RDSrVmB7O5POnjkU24zM5ho0,204
132
132
  keras/src/activations/__init__.py,sha256=0nL3IFDB9unlrMz8ninKOWo-uCHasTUpTo1tXZb2u44,4433
133
133
  keras/src/activations/activations.py,sha256=mogPggtp4CGldI3VOPNmesRxp6EbiR1_i4KLGaVwzL8,17614
134
134
  keras/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -171,7 +171,7 @@ keras/src/backend/jax/layer.py,sha256=o6CicT06udwamTRQIjNSDLZLyYHFzBXNbxewXgWe0i
171
171
  keras/src/backend/jax/linalg.py,sha256=LDaLZYz49ChE2kJR3YpaM9xuwusvd3krV7nNAAazTWA,2642
172
172
  keras/src/backend/jax/math.py,sha256=1IEDpdoF8e5ltu3D4wbDQuihzvJHhMXz8W9Z_E-eJqU,9391
173
173
  keras/src/backend/jax/nn.py,sha256=mQAKxZMedpv6H4GSU_ofmWKpdCbLukJA9Ncx3kfRuVc,59605
174
- keras/src/backend/jax/numpy.py,sha256=-8xQBwJbyKraCp8Jz8bOX5SArRtuFqdcx_v0OhXRxTE,38499
174
+ keras/src/backend/jax/numpy.py,sha256=SMa6dH1n7v04SsnEkevCWBqmzj7Ed8TmBASOSrEQIMM,38619
175
175
  keras/src/backend/jax/optimizer.py,sha256=5DeXQHcYmUI6F9i1m1VHn3sBt4LEStOeBXnKdESevLM,4134
176
176
  keras/src/backend/jax/random.py,sha256=Uk2huGIk_dlzMrx5eDVrrr2TeCEMitn2vr4yzA0NXjs,3594
177
177
  keras/src/backend/jax/rnn.py,sha256=Ycq0qfLY4M4jhltvztpLQyywjEM17T7CZQFh4hhHOUE,7767
@@ -186,7 +186,7 @@ keras/src/backend/numpy/layer.py,sha256=dTk7W7ql7vRgll7JbOXK5PlIhQw5VHdpSjKciHd8
186
186
  keras/src/backend/numpy/linalg.py,sha256=uzLTxEyuX_gDcnoA5Q59GdTg33py0WooKK5T6T9Td6c,2543
187
187
  keras/src/backend/numpy/math.py,sha256=HdkEA5ro7dtQBTP78GFIgqTFLgNQ49PXHhqI1vLRGfo,10169
188
188
  keras/src/backend/numpy/nn.py,sha256=P9JAnTlwSTI7bVv8WIv1pDQJHpjML_WJ0RsJWy-LJMc,46200
189
- keras/src/backend/numpy/numpy.py,sha256=V_vFKjssqWYOoZcDdJ67ALq7LI75PONII0Sq626wpFc,37459
189
+ keras/src/backend/numpy/numpy.py,sha256=e-083c_hHLI9FwqV0bpmS8n7s7HP5QNDP59sJF7UwRg,37651
190
190
  keras/src/backend/numpy/random.py,sha256=wx2nE75q7L2cBMjtQlQx8yKMj4Ie3puFMDQsbrZO8SA,3961
191
191
  keras/src/backend/numpy/rnn.py,sha256=thOsMung1qR3lQsR4_D6hqKMFollQgrB0KwsJLk4BMY,7867
192
192
  keras/src/backend/numpy/trainer.py,sha256=MzWr8_LLHa1P6fxdUWirGw_lQwHGF_vkZ7RUGLUzjUs,11126
@@ -198,7 +198,7 @@ keras/src/backend/openvino/layer.py,sha256=5RdvaH1yOyPAphjKiuQAK1H_yZFYKE1Hp7c5b
198
198
  keras/src/backend/openvino/linalg.py,sha256=L6a4MFGND2wWzPVCh44cwuOgkcC4wJTo8Xy3HwW04lg,1614
199
199
  keras/src/backend/openvino/math.py,sha256=qw9kX2sJ2qr0dBJF12Ey0E2GcwixPUqoev6UcNra4NI,3944
200
200
  keras/src/backend/openvino/nn.py,sha256=zULPxdwVO7JDZUUtsuoEEPCLQ09ew8z8T6G_i_NEqrM,23741
201
- keras/src/backend/openvino/numpy.py,sha256=dgu39U45x4b8X0WNSomw1TYxviFqnXqeCyZgKpXWDY0,97071
201
+ keras/src/backend/openvino/numpy.py,sha256=4VMuzxuCd2ig5QA9npSfn47bHxVAmWK920mOEvd9y-8,97883
202
202
  keras/src/backend/openvino/random.py,sha256=4hRUtIP6qJxO3Qy9uH1x6jSuJna3nWPdUf4x2QU8-ew,5575
203
203
  keras/src/backend/openvino/rnn.py,sha256=ErmuZLPSgG9qU-NfYPPvBZ6Ysy8k-fA4g19Vhqq7OVQ,866
204
204
  keras/src/backend/openvino/trainer.py,sha256=bMmtSALqydqdS6ke-5sYW5fgxZDshDH810p_C0xCRTg,9087
@@ -211,7 +211,7 @@ keras/src/backend/tensorflow/layer.py,sha256=69d40LwL4HhKRsCjj1VRpjfrQXXF8VV3vh0
211
211
  keras/src/backend/tensorflow/linalg.py,sha256=_lZVfdY1tFvrN7xwbt3INGoTR0yC5v-kI1Q0XppVibY,8773
212
212
  keras/src/backend/tensorflow/math.py,sha256=zTu_7Ff6B2Ro862z_xH0OCmIWbV74DjsO5UnfjYuOUQ,12370
213
213
  keras/src/backend/tensorflow/nn.py,sha256=6vtZHzUED6_blUPE1Tnc3GAxPpJ2ebxoaiMn80tTL9k,51328
214
- keras/src/backend/tensorflow/numpy.py,sha256=xs8qi2rW0VKoxEVdutGle5EO4BKyJVvnvReeXBSrbsY,104161
214
+ keras/src/backend/tensorflow/numpy.py,sha256=C-dnf4O8ES8uqa_yV0ThX6B6PXeeQrYtnP2-GORG5UU,104426
215
215
  keras/src/backend/tensorflow/optimizer.py,sha256=kFlyEOnGjEYdLpd8mpwhUeku78__xBfZbbrDWpJrq60,9307
216
216
  keras/src/backend/tensorflow/random.py,sha256=iO8V_soaDXZm9ewyAVbjudhsMj08C348c9Bz64nxXC4,6475
217
217
  keras/src/backend/tensorflow/rnn.py,sha256=99EJqbPdWddmG14zyjjhUZfU5zo9ObmslF_Mak7EmAs,34602
@@ -227,7 +227,7 @@ keras/src/backend/torch/layer.py,sha256=htECdpv9ioHWM8_zqQkEdxgDsgLu8XJi5yXgnLl-
227
227
  keras/src/backend/torch/linalg.py,sha256=wgPCfnscp5HOBmX9_-m-57lzxs1ttLNzmHqj2VYYq7k,2108
228
228
  keras/src/backend/torch/math.py,sha256=g-ElDii2Y_o1-t6BAu2nbS7JH-aPqVS5Fqds8aYzIlg,14324
229
229
  keras/src/backend/torch/nn.py,sha256=zmEzXEuwD7fVRDm145zsxzUDmqNmRgZS4LmeIx4Nbus,37498
230
- keras/src/backend/torch/numpy.py,sha256=N9a8yoi2QfIyt6LZ_xCBLbXOYYoFVxaFShbx0-xc5Lo,57095
230
+ keras/src/backend/torch/numpy.py,sha256=Le-hZwyQ7cOc7jH9rJl3MiucxImDvV3q1YF7aPgKHtY,57355
231
231
  keras/src/backend/torch/random.py,sha256=YhLfC7qkGpzlU_i6gGPVormo3BMSo7OUA3TC3GCehrA,8292
232
232
  keras/src/backend/torch/rnn.py,sha256=J0vg7ikxBiv1FzEavgwT8IVCs0ceBcEv5LYyM5C2suA,25545
233
233
  keras/src/backend/torch/trainer.py,sha256=dcikz1c5O0FHNzRKSi6WhIHsHfLV2HDlrXPElSd1cgE,17985
@@ -499,12 +499,12 @@ keras/src/ops/__init__.py,sha256=aORlvnrqY_eQl0EFLWdpHsXHnQ6JLSw1qhwJMr-VXJ0,644
499
499
  keras/src/ops/core.py,sha256=t06-MvptYb6ZVwmNj083JyUtzU4M6UTVXOT2vVHtKyU,42781
500
500
  keras/src/ops/einops.py,sha256=-pxW0_AzDQNsR7t2TJrzvYXBJpmLYA3fJoO0U_U96PY,6268
501
501
  keras/src/ops/function.py,sha256=QV9n1-xeTPDK_FJ3sjlHDWVH2sqDj96R6YQnJueMOlA,17821
502
- keras/src/ops/image.py,sha256=PSvmBZ52vdALLITZl9_JLk5bAavAGh6zWTUcVTFJ0pM,66884
502
+ keras/src/ops/image.py,sha256=NAf68cwEmR2LJuPGF_N2mXFVUR1LjQLMFeq8rLKEtLw,66864
503
503
  keras/src/ops/linalg.py,sha256=3V8S_cgNxZZCIFcFj-FBHTdRqWNbimDtumMvfoc0f30,26736
504
504
  keras/src/ops/math.py,sha256=4qYMJ5qAPmeSyeF63YWoGbUkQt6f4_VX0enOChU4mXU,37233
505
505
  keras/src/ops/nn.py,sha256=04gjHB2BWusy4tWm59EO5Ns1paJC5umDNGwNCKzaJWQ,104658
506
506
  keras/src/ops/node.py,sha256=aJgn9D-GkteE--Bbt2cZ9JjVxb2W2uS1OWEKoeLsl3Y,5583
507
- keras/src/ops/numpy.py,sha256=2-DGoNQgJiOCgxnSYyDErjJDheX849FIBeQb47utmP4,253307
507
+ keras/src/ops/numpy.py,sha256=1Oh4-is73XoFZZNmRkXMsw-WzhIHf2A77lHevE38Q8Y,254763
508
508
  keras/src/ops/operation.py,sha256=A7sh9Hi6kZb7wkeMmhrDQIq770ofANXuP-Qg-kwCM3o,15485
509
509
  keras/src/ops/operation_utils.py,sha256=C6eThl-haKzlDH0fC1rn5-P1P-pCfIfXs-fy-ADR534,14523
510
510
  keras/src/ops/symbolic_arguments.py,sha256=MKwXxZYkyouD9BPmQ1uUNxILdcwPvTayAqXaUV3P3o4,1628
@@ -540,7 +540,7 @@ keras/src/random/seed_generator.py,sha256=Iyx_YbLSaYusmCm2rOOOiDNU57x9-sU-xDf8U_
540
540
  keras/src/regularizers/__init__.py,sha256=GzK9FTKL2Xxd5H55GfG9gxDqt4eZoVHFWICgb2VW8qM,1731
541
541
  keras/src/regularizers/regularizers.py,sha256=urXNmMGuqHT7lOmS-yQPl3At3Ny-37Xlo389ErCg84A,11799
542
542
  keras/src/saving/__init__.py,sha256=vnrtfvnzW7Gwtxe5COhaMoEnVYB5iDe2YlqJ-DvqFIk,614
543
- keras/src/saving/file_editor.py,sha256=PB43bTgK-B0nnRvyORcmRgLsqdAr72uWvXgMdaBmyvI,29022
543
+ keras/src/saving/file_editor.py,sha256=tsUo9mQbMa8433tHTnOKWFhDeathYwDb0CeWcDTTTBQ,32089
544
544
  keras/src/saving/keras_saveable.py,sha256=aGIt1ajtsaamfUq18LM6ql8JEoQzi3HwzJEuwQ9bmKE,1285
545
545
  keras/src/saving/object_registration.py,sha256=OOO-7-SNfPoFkFsR_c5jzE6aSIDIlHlnMcm9IlI_Gbs,7357
546
546
  keras/src/saving/saving_api.py,sha256=hYMr0g_4zboDHUA4Dop7PVSPsGB0FBN7d29W4RhNPNI,11655
@@ -614,7 +614,7 @@ keras/utils/bounding_boxes/__init__.py,sha256=jtvQll4u8ZY0Z96HwNhP1nxWEG9FM3gI-6
614
614
  keras/utils/legacy/__init__.py,sha256=oSYZz6uS8UxSElRaaJYWJEoweJ4GAasZjnn7fNaOlog,342
615
615
  keras/visualization/__init__.py,sha256=UKWmiy6sps4SWlmQi9WX8_Z53cPpLlphz2zIeHdwJpQ,722
616
616
  keras/wrappers/__init__.py,sha256=QkS-O5K8qGS7C3sytF8MpmO6PasATpNVGF8qtb7Ojsw,407
617
- keras_nightly-3.14.0.dev2025122704.dist-info/METADATA,sha256=frdQPgrpW4Hc9pJo0bNtpZVNuOEiMb_JQWEdLLoR1xU,6339
618
- keras_nightly-3.14.0.dev2025122704.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
619
- keras_nightly-3.14.0.dev2025122704.dist-info/top_level.txt,sha256=ptcw_-QuGZ4ZDjMdwi_Z0clZm8QAqFdvzzFnDEOTs9o,6
620
- keras_nightly-3.14.0.dev2025122704.dist-info/RECORD,,
617
+ keras_nightly-3.14.0.dev2026010104.dist-info/METADATA,sha256=ZtVvePb5VE48ZbOMhIKB2djeuwdw1pqrK4IQyJPJq_I,6339
618
+ keras_nightly-3.14.0.dev2026010104.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
619
+ keras_nightly-3.14.0.dev2026010104.dist-info/top_level.txt,sha256=ptcw_-QuGZ4ZDjMdwi_Z0clZm8QAqFdvzzFnDEOTs9o,6
620
+ keras_nightly-3.14.0.dev2026010104.dist-info/RECORD,,