keras-rs-nightly 0.0.1.dev2025021903__py3-none-any.whl → 0.3.1.dev202512130338__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.
Files changed (56) hide show
  1. keras_rs/__init__.py +9 -28
  2. keras_rs/layers/__init__.py +37 -0
  3. keras_rs/losses/__init__.py +19 -0
  4. keras_rs/metrics/__init__.py +16 -0
  5. keras_rs/src/layers/embedding/base_distributed_embedding.py +1151 -0
  6. keras_rs/src/layers/embedding/distributed_embedding.py +33 -0
  7. keras_rs/src/layers/embedding/distributed_embedding_config.py +132 -0
  8. keras_rs/src/layers/embedding/embed_reduce.py +309 -0
  9. keras_rs/src/layers/embedding/jax/__init__.py +0 -0
  10. keras_rs/src/layers/embedding/jax/checkpoint_utils.py +104 -0
  11. keras_rs/src/layers/embedding/jax/config_conversion.py +468 -0
  12. keras_rs/src/layers/embedding/jax/distributed_embedding.py +829 -0
  13. keras_rs/src/layers/embedding/jax/embedding_lookup.py +276 -0
  14. keras_rs/src/layers/embedding/jax/embedding_utils.py +217 -0
  15. keras_rs/src/layers/embedding/tensorflow/__init__.py +0 -0
  16. keras_rs/src/layers/embedding/tensorflow/config_conversion.py +363 -0
  17. keras_rs/src/layers/embedding/tensorflow/distributed_embedding.py +436 -0
  18. keras_rs/src/layers/feature_interaction/__init__.py +0 -0
  19. keras_rs/src/layers/{modeling → feature_interaction}/dot_interaction.py +116 -25
  20. keras_rs/src/layers/{modeling → feature_interaction}/feature_cross.py +40 -22
  21. keras_rs/src/layers/retrieval/brute_force_retrieval.py +16 -65
  22. keras_rs/src/layers/retrieval/hard_negative_mining.py +94 -0
  23. keras_rs/src/layers/retrieval/remove_accidental_hits.py +97 -0
  24. keras_rs/src/layers/retrieval/retrieval.py +127 -0
  25. keras_rs/src/layers/retrieval/sampling_probability_correction.py +63 -0
  26. keras_rs/src/losses/__init__.py +0 -0
  27. keras_rs/src/losses/list_mle_loss.py +212 -0
  28. keras_rs/src/losses/pairwise_hinge_loss.py +90 -0
  29. keras_rs/src/losses/pairwise_logistic_loss.py +99 -0
  30. keras_rs/src/losses/pairwise_loss.py +165 -0
  31. keras_rs/src/losses/pairwise_loss_utils.py +39 -0
  32. keras_rs/src/losses/pairwise_mean_squared_error.py +133 -0
  33. keras_rs/src/losses/pairwise_soft_zero_one_loss.py +98 -0
  34. keras_rs/src/metrics/__init__.py +0 -0
  35. keras_rs/src/metrics/dcg.py +161 -0
  36. keras_rs/src/metrics/mean_average_precision.py +130 -0
  37. keras_rs/src/metrics/mean_reciprocal_rank.py +121 -0
  38. keras_rs/src/metrics/ndcg.py +197 -0
  39. keras_rs/src/metrics/precision_at_k.py +117 -0
  40. keras_rs/src/metrics/ranking_metric.py +260 -0
  41. keras_rs/src/metrics/ranking_metrics_utils.py +257 -0
  42. keras_rs/src/metrics/recall_at_k.py +108 -0
  43. keras_rs/src/metrics/utils.py +70 -0
  44. keras_rs/src/types.py +43 -14
  45. keras_rs/src/utils/doc_string_utils.py +53 -0
  46. keras_rs/src/utils/keras_utils.py +52 -3
  47. keras_rs/src/utils/tpu_test_utils.py +120 -0
  48. keras_rs/src/version.py +1 -1
  49. {keras_rs_nightly-0.0.1.dev2025021903.dist-info → keras_rs_nightly-0.3.1.dev202512130338.dist-info}/METADATA +88 -8
  50. keras_rs_nightly-0.3.1.dev202512130338.dist-info/RECORD +58 -0
  51. {keras_rs_nightly-0.0.1.dev2025021903.dist-info → keras_rs_nightly-0.3.1.dev202512130338.dist-info}/WHEEL +1 -1
  52. keras_rs/api/__init__.py +0 -9
  53. keras_rs/api/layers/__init__.py +0 -11
  54. keras_rs_nightly-0.0.1.dev2025021903.dist-info/RECORD +0 -19
  55. /keras_rs/src/layers/{modeling → embedding}/__init__.py +0 -0
  56. {keras_rs_nightly-0.0.1.dev2025021903.dist-info → keras_rs_nightly-0.3.1.dev202512130338.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,120 @@
1
+ import contextlib
2
+ import os
3
+ import threading
4
+ from typing import Any, Callable, ContextManager, Optional, Tuple, Union
5
+
6
+ import keras
7
+ import tensorflow as tf
8
+
9
+
10
+ class DummyStrategy:
11
+ def scope(self) -> ContextManager[None]:
12
+ return contextlib.nullcontext()
13
+
14
+ @property
15
+ def num_replicas_in_sync(self) -> int:
16
+ return 1
17
+
18
+ def run(self, fn: Callable[..., Any], args: Tuple[Any, ...]) -> Any:
19
+ return fn(*args)
20
+
21
+ def experimental_distribute_dataset(
22
+ self, dataset: Any, options: Optional[Any] = None
23
+ ) -> Any:
24
+ del options
25
+ return dataset
26
+
27
+
28
+ class JaxDummyStrategy(DummyStrategy):
29
+ @property
30
+ def num_replicas_in_sync(self) -> Any:
31
+ import jax
32
+
33
+ return jax.device_count("tpu")
34
+
35
+
36
+ StrategyType = Union[tf.distribute.Strategy, DummyStrategy]
37
+
38
+ _shared_strategy: Optional[StrategyType] = None
39
+ _lock = threading.Lock()
40
+
41
+
42
+ def create_tpu_strategy() -> Optional[StrategyType]:
43
+ """Initializes the TPU system and returns a TPUStrategy."""
44
+ print("Attempting to create TPUStrategy...")
45
+ try:
46
+ resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu="")
47
+ tf.config.experimental_connect_to_cluster(resolver)
48
+ tf.tpu.experimental.initialize_tpu_system(resolver)
49
+ strategy = tf.distribute.TPUStrategy(resolver)
50
+ print(
51
+ "TPUStrategy created successfully."
52
+ "Devices: {strategy.extended.num_replicas_in_sync}"
53
+ )
54
+ return strategy
55
+ except Exception as e:
56
+ print(f"Error creating TPUStrategy: {e}")
57
+ return None
58
+
59
+
60
+ def get_shared_tpu_strategy() -> Optional[StrategyType]:
61
+ """
62
+ Returns a session-wide shared TPUStrategy instance.
63
+ Creates the instance on the first call.
64
+ Returns None if not in a TPU environment or if creation fails.
65
+ """
66
+ global _shared_strategy
67
+ if _shared_strategy is not None:
68
+ return _shared_strategy
69
+
70
+ with _lock:
71
+ if _shared_strategy is None:
72
+ if "TPU_NAME" not in os.environ:
73
+ _shared_strategy = DummyStrategy()
74
+ return _shared_strategy
75
+ if keras.backend.backend() == "tensorflow":
76
+ resolver = tf.distribute.cluster_resolver.TPUClusterResolver()
77
+ tf.config.experimental_connect_to_cluster(resolver)
78
+ topology = tf.tpu.experimental.initialize_tpu_system(resolver)
79
+ tpu_metadata = resolver.get_tpu_system_metadata()
80
+ device_assignment = tf.tpu.experimental.DeviceAssignment.build(
81
+ topology, num_replicas=tpu_metadata.num_hosts
82
+ )
83
+ _shared_strategy = tf.distribute.TPUStrategy(
84
+ resolver, experimental_device_assignment=device_assignment
85
+ )
86
+ print("### num_replicas", _shared_strategy.num_replicas_in_sync)
87
+ elif keras.backend.backend() == "jax":
88
+ _shared_strategy = JaxDummyStrategy()
89
+ print("### num_replicas", _shared_strategy.num_replicas_in_sync)
90
+ else:
91
+ _shared_strategy = DummyStrategy()
92
+ return _shared_strategy
93
+
94
+
95
+ def run_with_strategy(
96
+ strategy: Any,
97
+ fn: Callable[..., Any],
98
+ *args: Any,
99
+ jit_compile: bool = False,
100
+ **kwargs: Any,
101
+ ) -> Any:
102
+ """
103
+ Final wrapper fix: Flattens allowed kwargs into positional args before
104
+ entering tf.function to guarantee a fixed graph signature.
105
+ """
106
+ if keras.backend.backend() == "tensorflow":
107
+ all_inputs = (args, kwargs)
108
+
109
+ @tf.function(jit_compile=jit_compile) # type: ignore[untyped-decorator]
110
+ def tf_function_wrapper(input_tuple: Tuple[Any, Any]) -> Any:
111
+ core_args, core_kwargs = input_tuple
112
+ if core_kwargs:
113
+ return strategy.run(fn, args=core_args, kwargs=core_kwargs)
114
+ else:
115
+ return strategy.run(fn, args=core_args)
116
+
117
+ return tf_function_wrapper(all_inputs)
118
+ else:
119
+ assert not jit_compile
120
+ return fn(*args, **kwargs)
keras_rs/src/version.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from keras_rs.src.api_export import keras_rs_export
2
2
 
3
3
  # Unique source of truth for the version number.
4
- __version__ = "0.0.1.dev2025021903"
4
+ __version__ = "0.3.1.dev202512130338"
5
5
 
6
6
 
7
7
  @keras_rs_export("keras_rs.version")
@@ -1,28 +1,34 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: keras-rs-nightly
3
- Version: 0.0.1.dev2025021903
3
+ Version: 0.3.1.dev202512130338
4
4
  Summary: Multi-backend recommender systems with Keras 3.
5
- Author-email: Keras RS team <keras-rs@google.com>
5
+ Author-email: Keras team <keras-users@googlegroups.com>
6
6
  License: Apache License 2.0
7
- Project-URL: Home, https://keras.io/
7
+ Project-URL: Home, https://keras.io/keras_rs
8
8
  Project-URL: Repository, https://github.com/keras-team/keras-rs
9
9
  Classifier: Development Status :: 3 - Alpha
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.9
12
- Classifier: Programming Language :: Python :: 3.10
13
11
  Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
14
14
  Classifier: Programming Language :: Python :: 3 :: Only
15
15
  Classifier: Operating System :: Unix
16
+ Classifier: Operating System :: Microsoft :: Windows
16
17
  Classifier: Operating System :: MacOS
17
18
  Classifier: Intended Audience :: Science/Research
18
19
  Classifier: Topic :: Scientific/Engineering
19
20
  Classifier: Topic :: Software Development
20
- Requires-Python: >=3.9
21
+ Requires-Python: >=3.11
21
22
  Description-Content-Type: text/markdown
22
23
  Requires-Dist: keras
24
+ Requires-Dist: ml-dtypes
23
25
 
24
26
  # Keras Recommenders
25
27
 
28
+ <p align="center" width="100%">
29
+ <img src="https://i.imgur.com/m1BX7Zd.png" width="434" height="157" alt="KerasRS">
30
+ </p>
31
+
26
32
  Keras Recommenders is a library for building recommender systems on top of
27
33
  Keras 3. Keras Recommenders works natively with TensorFlow, JAX, or PyTorch. It
28
34
  provides a collection of building blocks which help with the full workflow of
@@ -34,6 +40,80 @@ This library is an extension of the core Keras API; all high-level modules
34
40
  receive that same level of polish as core Keras. If you are familiar with Keras,
35
41
  congratulations! You already understand most of Keras Recommenders.
36
42
 
43
+ ## Quick Links
44
+
45
+ - [Home page](https://keras.io/keras_rs)
46
+ - [Examples](https://keras.io/keras_rs/examples)
47
+ - [API documentation](https://keras.io/keras_rs/api)
48
+
49
+ ## Quickstart
50
+
51
+ ### Train your own cross network
52
+
53
+ Choose a backend:
54
+
55
+ ```python
56
+ import os
57
+ os.environ["KERAS_BACKEND"] = "jax" # Or "tensorflow" or "torch"!
58
+ ```
59
+
60
+ Import KerasRS and other libraries:
61
+
62
+ ```python
63
+ import keras
64
+ import keras_rs
65
+ import numpy as np
66
+ ```
67
+
68
+ Define a simple model using the `FeatureCross` layer:
69
+
70
+ ```python
71
+ vocabulary_size = 32
72
+ embedding_dim = 6
73
+
74
+ inputs = keras.Input(shape=(), name='indices', dtype="int32")
75
+ x0 = keras.layers.Embedding(
76
+ input_dim=vocabulary_size,
77
+ output_dim=embedding_dim
78
+ )(inputs)
79
+ x1 = keras_rs.layers.FeatureCross()(x0, x0)
80
+ x2 = keras_rs.layers.FeatureCross()(x0, x1)
81
+ output = keras.layers.Dense(units=10)(x2)
82
+ model = keras.Model(inputs, output)
83
+ ```
84
+
85
+ Compile the model:
86
+
87
+ ```python
88
+ model.compile(
89
+ loss=keras.losses.MeanSquaredError(),
90
+ optimizer=keras.optimizers.Adam(learning_rate=3e-4)
91
+ )
92
+ ```
93
+
94
+ Call `model.fit()` on dummy data:
95
+
96
+ ```python
97
+ batch_size = 2
98
+ x = np.random.randint(0, vocabulary_size, size=(batch_size,))
99
+ y = np.random.random(size=(batch_size,))
100
+ model.fit(x, y=y)
101
+ ```
102
+
103
+ ### Use ranking losses and metrics
104
+
105
+ If your task is to rank items in a list, you can make use of the ranking losses
106
+ and metrics which KerasRS provides. Below, we use the pairwise hinge loss and
107
+ track the nDCG metric:
108
+
109
+ ```python
110
+ model.compile(
111
+ loss=keras_rs.losses.PairwiseHingeLoss(),
112
+ metrics=[keras_rs.metrics.NDCG()],
113
+ optimizer=keras.optimizers.Adam(learning_rate=3e-4),
114
+ )
115
+ ```
116
+
37
117
  ## Installation
38
118
 
39
119
  Keras Recommenders is available on PyPI as `keras-rs`:
@@ -94,7 +174,7 @@ Here is the BibTeX entry:
94
174
  ```bibtex
95
175
  @misc{kerasrecommenders2024,
96
176
  title={KerasRecommenders},
97
- author={Hertschuh, Fabien and Chollet, Fran\c{c}ois and others},
177
+ author={Hertschuh, Fabien and Chollet, Fran\c{c}ois and Sharma, Abheesht and others},
98
178
  year={2024},
99
179
  howpublished={\url{https://github.com/keras-team/keras-rs}},
100
180
  }
@@ -0,0 +1,58 @@
1
+ keras_rs/__init__.py,sha256=8sjHiPN2GhUqAq4V7Vh4FLLqYw20-jgdI26ZKX5sg6M,350
2
+ keras_rs/layers/__init__.py,sha256=ERqFu1R8FgeES5rO5QwauArbNCm8auj-AiCURtsG6Ro,1332
3
+ keras_rs/losses/__init__.py,sha256=WyyrxhWrayt-Hm6gSmZ5CPZifbPx0egDIothGi0Dpjk,646
4
+ keras_rs/metrics/__init__.py,sha256=Qxpf6OFooIL9TIn2l3WgOea3HFRG0hq02glPAxtMZ9c,580
5
+ keras_rs/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ keras_rs/src/api_export.py,sha256=RsmG-DvO-cdFeAF9W6LRzms0kvtm-Yp9BAA_d-952zI,510
7
+ keras_rs/src/types.py,sha256=1A-oLRdX1-f2DsVZBcNl8qNsaH8pM-gnleLT9FWZWBw,1189
8
+ keras_rs/src/version.py,sha256=E7EoQd2LJhzxrYtMh6GLQgtbm2hzCwUNr9AcZw0MOgc,224
9
+ keras_rs/src/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ keras_rs/src/layers/embedding/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ keras_rs/src/layers/embedding/base_distributed_embedding.py,sha256=RkXZ6notj3Cq6ryR9w30Wb8UlaWjLcUK2Os9ZUQvuhY,45568
12
+ keras_rs/src/layers/embedding/distributed_embedding.py,sha256=94jxUHoGK3Gs9yfV0KxFTuqPo7XFnhgCNlO2FEeiSgM,1072
13
+ keras_rs/src/layers/embedding/distributed_embedding_config.py,sha256=L41x6W1xcXI-3m94nOh_OsHn6OYpoynakKJvNboJnvE,5762
14
+ keras_rs/src/layers/embedding/embed_reduce.py,sha256=c-MnEw1-KWs0jTf0JJ_ZBOY-9hRkiFyu989Dof3DnS8,12343
15
+ keras_rs/src/layers/embedding/jax/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ keras_rs/src/layers/embedding/jax/checkpoint_utils.py,sha256=wZ4I5WZVNg5WnrD2j7nhAXgLzDc7xMrUEkSAOx5Sz5c,3495
17
+ keras_rs/src/layers/embedding/jax/config_conversion.py,sha256=Di1UzRwLgGHd7RuWYJMj2mCOr1u9MseFEWaYKnwD9Bs,16742
18
+ keras_rs/src/layers/embedding/jax/distributed_embedding.py,sha256=lY7cwJgVUDpYUH-n7AcA1qlnSzhtckNtD3UqtpAYXz8,32267
19
+ keras_rs/src/layers/embedding/jax/embedding_lookup.py,sha256=a90tWTbU9tkFdESG3xir9PTtcvb1cmYR8vl5dDK9PSY,8703
20
+ keras_rs/src/layers/embedding/jax/embedding_utils.py,sha256=5rQGli4Qflg0BU2-j_-4xbBxSqopqbtjkY2KKYWq64Y,7329
21
+ keras_rs/src/layers/embedding/tensorflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ keras_rs/src/layers/embedding/tensorflow/config_conversion.py,sha256=HpuDthRQQ3X0EO8dW6OAdcgTODkujZlx_swgreVwXyk,13220
23
+ keras_rs/src/layers/embedding/tensorflow/distributed_embedding.py,sha256=TBPYV8gP3ZnAFEwtxmWr_Rp3s-Cj0RrKzF6UOALJ4B0,17817
24
+ keras_rs/src/layers/feature_interaction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
+ keras_rs/src/layers/feature_interaction/dot_interaction.py,sha256=Rs8xIHXNWQNiwjp_xzvQRmTSV1AyhJjDgVc3K5pTmrQ,8530
26
+ keras_rs/src/layers/feature_interaction/feature_cross.py,sha256=Wq_eQvO0WTRlep69QbKi8TwY8bnFoF9vreP_j6ZHNFE,8666
27
+ keras_rs/src/layers/retrieval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ keras_rs/src/layers/retrieval/brute_force_retrieval.py,sha256=WVH9nHj6mGcK5DAOzYBGfUztPtGtMX4RKLac6GV1vLI,5644
29
+ keras_rs/src/layers/retrieval/hard_negative_mining.py,sha256=n5UftRcuuR7Lh75vOdFdqatpsYqJDHCsraNtAjeWvoM,3575
30
+ keras_rs/src/layers/retrieval/remove_accidental_hits.py,sha256=WKoIhUSc6SvbgLXcSqNvFUnkuyXfxWwsC7nAgYbON_U,3773
31
+ keras_rs/src/layers/retrieval/retrieval.py,sha256=SFxMdooUhZy854SLZbpoyZR1Md4bHnpf7P077oVjjtU,4162
32
+ keras_rs/src/layers/retrieval/sampling_probability_correction.py,sha256=3zD6LInxhyIvyujMleGqiuoPKsna2oaTN6JU6xMnW_M,1977
33
+ keras_rs/src/losses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ keras_rs/src/losses/list_mle_loss.py,sha256=NKRV_ZJUXFI1qG9_ugqxRyafRHreuUIokA7mbnsogBo,7433
35
+ keras_rs/src/losses/pairwise_hinge_loss.py,sha256=tONOJpcwCw1mybwvyx8dAy5t6dDmlIn00enzWfQLXpQ,3049
36
+ keras_rs/src/losses/pairwise_logistic_loss.py,sha256=40PFdCHDM7CLunT_PE3RbgxROVImw13dgVL3o3nzeNg,3473
37
+ keras_rs/src/losses/pairwise_loss.py,sha256=Oydk8e7AGU0Mc9yvm6ccr_XDDfUe8EZlS4JJgyxKUm4,6197
38
+ keras_rs/src/losses/pairwise_loss_utils.py,sha256=xvdGvdKNkvGvIaWYEQziWTFNa5EJz7rdkVGgrsnDHUk,1246
39
+ keras_rs/src/losses/pairwise_mean_squared_error.py,sha256=sW-S3fUFtLV_cf8Tw9Wluzoe9t7lmXzSIAj6MXOpL2M,4823
40
+ keras_rs/src/losses/pairwise_soft_zero_one_loss.py,sha256=YddVtJS8tKEeb0YrqGzEsr-6IDxH4uRjFrYkZDMWpkk,3492
41
+ keras_rs/src/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
+ keras_rs/src/metrics/dcg.py,sha256=rUtWe8VwZ8unXIhPu7fjTiErpK6-IOtcaiuikjtY1VE,5823
43
+ keras_rs/src/metrics/mean_average_precision.py,sha256=yUub4jGnqwTmxf694Z2ymRjMG_vO2HdyqqvDbcEhdSQ,4632
44
+ keras_rs/src/metrics/mean_reciprocal_rank.py,sha256=vr3ZZjpGYy2N-N7stcIm5elfHe9A4W8uY4HADP8icMw,4046
45
+ keras_rs/src/metrics/ndcg.py,sha256=ZBaKqV57K7jlto6ZVMxFNNRLdhzbLhdAR8TgDexjSjg,6922
46
+ keras_rs/src/metrics/precision_at_k.py,sha256=Dj5R-rT_Yd5hAsk4f-BlNMujfgIdPXnFVGOw9u7BIZQ,4038
47
+ keras_rs/src/metrics/ranking_metric.py,sha256=Lcl-Tt6HlI0f2wQpvAJ2M4mm5qCTZm-IgnLjjSEeNXE,10655
48
+ keras_rs/src/metrics/ranking_metrics_utils.py,sha256=rtCy_8T5CbQ4UKr3ykFRaM_wZrQ-IqEJa_VnVMTH8nQ,9644
49
+ keras_rs/src/metrics/recall_at_k.py,sha256=ssnQJC42KLN28cGrmzM-qR4M4iPqiQzWM2MfwYMq4ZE,3701
50
+ keras_rs/src/metrics/utils.py,sha256=fGTo8j0ykVE5Y3yQCS2orSFcHY20Uxt0NazyPsybUsw,2471
51
+ keras_rs/src/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ keras_rs/src/utils/doc_string_utils.py,sha256=CmqomepmaYcvpACpXEXkrJb8DMnvIgmYK-lJ53lYarY,1675
53
+ keras_rs/src/utils/keras_utils.py,sha256=dc-NFzs3a-qmRw0vBDiMslPLfrm9yymGduLWesXPhuY,2123
54
+ keras_rs/src/utils/tpu_test_utils.py,sha256=mQVBrI-CCBbXwQxBq1yDKGMwYhm4g4k3_AaSy_sCs0U,4028
55
+ keras_rs_nightly-0.3.1.dev202512130338.dist-info/METADATA,sha256=keexSmADAe0Wq2qD1bSC-g8JlUV17XrLU-zldDZ3ozM,5324
56
+ keras_rs_nightly-0.3.1.dev202512130338.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
57
+ keras_rs_nightly-0.3.1.dev202512130338.dist-info/top_level.txt,sha256=pWs8X78Z0cn6lfcIb9VYOW5UeJ-TpoaO9dByzo7_FFo,9
58
+ keras_rs_nightly-0.3.1.dev202512130338.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
keras_rs/api/__init__.py DELETED
@@ -1,9 +0,0 @@
1
- """DO NOT EDIT.
2
-
3
- This file was autogenerated. Do not edit it by hand,
4
- since your modifications would be overwritten.
5
- """
6
-
7
- from keras_rs.api import layers
8
- from keras_rs.src.version import __version__
9
- from keras_rs.src.version import version
@@ -1,11 +0,0 @@
1
- """DO NOT EDIT.
2
-
3
- This file was autogenerated. Do not edit it by hand,
4
- since your modifications would be overwritten.
5
- """
6
-
7
- from keras_rs.src.layers.modeling.dot_interaction import DotInteraction
8
- from keras_rs.src.layers.modeling.feature_cross import FeatureCross
9
- from keras_rs.src.layers.retrieval.brute_force_retrieval import (
10
- BruteForceRetrieval,
11
- )
@@ -1,19 +0,0 @@
1
- keras_rs/__init__.py,sha256=X3VNKb_6VDEs5GqcbEc_l8mAsefWb5UgSu8krnQdFcM,794
2
- keras_rs/api/__init__.py,sha256=BU34SgAwrjZh49ppXGxJPxreTOYW0C7vy3_x8nmvHUk,240
3
- keras_rs/api/layers/__init__.py,sha256=moxzBqnCCQsZiIgEUXn9mdtSALFTU5e0c4Ct8c0bWhg,355
4
- keras_rs/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- keras_rs/src/api_export.py,sha256=RsmG-DvO-cdFeAF9W6LRzms0kvtm-Yp9BAA_d-952zI,510
6
- keras_rs/src/types.py,sha256=UyOdgjqrqg_b58opnY8n6gTiDHKVR8z_bmEruehERBk,514
7
- keras_rs/src/version.py,sha256=E-6oQfar5RwMDP5djal_81SRlf7inSYWDXk2dTmmAu4,222
8
- keras_rs/src/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- keras_rs/src/layers/modeling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- keras_rs/src/layers/modeling/dot_interaction.py,sha256=kzxs9IUI-llDfgqy-JUr-zBez9pA7A3zIG-O0lGxwWY,5097
11
- keras_rs/src/layers/modeling/feature_cross.py,sha256=nd2SBIe1gXC-vL_BeF3vrq8XqTAb6iLxhQGmtyUl3EM,8105
12
- keras_rs/src/layers/retrieval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- keras_rs/src/layers/retrieval/brute_force_retrieval.py,sha256=mohILOt6PC6jHBztaowDbj3QBnSetuvkq55FmE39PlY,7321
14
- keras_rs/src/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- keras_rs/src/utils/keras_utils.py,sha256=TUEpKHWDDBmzXJ0g0cTWYwQNjsHkPQ5HMvzNshLDOSU,897
16
- keras_rs_nightly-0.0.1.dev2025021903.dist-info/METADATA,sha256=MurKLV3gYnjxT2TNV9R3wYuRPfzlda5783DuBLd1S2E,3501
17
- keras_rs_nightly-0.0.1.dev2025021903.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
18
- keras_rs_nightly-0.0.1.dev2025021903.dist-info/top_level.txt,sha256=pWs8X78Z0cn6lfcIb9VYOW5UeJ-TpoaO9dByzo7_FFo,9
19
- keras_rs_nightly-0.0.1.dev2025021903.dist-info/RECORD,,
File without changes