tf-keras-nightly 2.20.0.dev2025051109__py3-none-any.whl → 2.21.0.dev2025123010__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 (49) hide show
  1. tf_keras/__init__.py +1 -1
  2. tf_keras/protobuf/projector_config_pb2.py +23 -12
  3. tf_keras/protobuf/saved_metadata_pb2.py +21 -10
  4. tf_keras/protobuf/versions_pb2.py +19 -8
  5. tf_keras/src/__init__.py +1 -1
  6. tf_keras/src/engine/base_layer.py +234 -96
  7. tf_keras/src/engine/base_layer_utils.py +17 -5
  8. tf_keras/src/engine/base_layer_v1.py +12 -3
  9. tf_keras/src/engine/data_adapter.py +30 -13
  10. tf_keras/src/engine/functional.py +36 -15
  11. tf_keras/src/engine/input_layer.py +9 -0
  12. tf_keras/src/engine/input_spec.py +11 -1
  13. tf_keras/src/layers/activation/softmax.py +26 -11
  14. tf_keras/src/layers/attention/multi_head_attention.py +8 -1
  15. tf_keras/src/layers/core/tf_op_layer.py +4 -0
  16. tf_keras/src/layers/rnn/cell_wrappers.py +13 -1
  17. tf_keras/src/metrics/confusion_metrics.py +51 -4
  18. tf_keras/src/models/sharpness_aware_minimization.py +17 -7
  19. tf_keras/src/saving/legacy/saved_model/save_impl.py +28 -12
  20. tf_keras/src/saving/legacy/saving_utils.py +14 -2
  21. tf_keras/src/saving/saving_lib.py +1 -1
  22. tf_keras/src/utils/layer_utils.py +45 -3
  23. tf_keras/src/utils/metrics_utils.py +4 -1
  24. {tf_keras_nightly-2.20.0.dev2025051109.dist-info → tf_keras_nightly-2.21.0.dev2025123010.dist-info}/METADATA +2 -2
  25. {tf_keras_nightly-2.20.0.dev2025051109.dist-info → tf_keras_nightly-2.21.0.dev2025123010.dist-info}/RECORD +27 -49
  26. {tf_keras_nightly-2.20.0.dev2025051109.dist-info → tf_keras_nightly-2.21.0.dev2025123010.dist-info}/WHEEL +1 -1
  27. tf_keras/src/layers/preprocessing/benchmarks/bucketized_column_dense_benchmark.py +0 -85
  28. tf_keras/src/layers/preprocessing/benchmarks/category_encoding_benchmark.py +0 -84
  29. tf_keras/src/layers/preprocessing/benchmarks/category_hash_dense_benchmark.py +0 -89
  30. tf_keras/src/layers/preprocessing/benchmarks/category_hash_varlen_benchmark.py +0 -89
  31. tf_keras/src/layers/preprocessing/benchmarks/category_vocab_file_dense_benchmark.py +0 -110
  32. tf_keras/src/layers/preprocessing/benchmarks/category_vocab_file_varlen_benchmark.py +0 -103
  33. tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_dense_benchmark.py +0 -87
  34. tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_indicator_dense_benchmark.py +0 -96
  35. tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_indicator_varlen_benchmark.py +0 -96
  36. tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_varlen_benchmark.py +0 -87
  37. tf_keras/src/layers/preprocessing/benchmarks/discretization_adapt_benchmark.py +0 -109
  38. tf_keras/src/layers/preprocessing/benchmarks/embedding_dense_benchmark.py +0 -86
  39. tf_keras/src/layers/preprocessing/benchmarks/embedding_varlen_benchmark.py +0 -89
  40. tf_keras/src/layers/preprocessing/benchmarks/hashed_crossing_benchmark.py +0 -90
  41. tf_keras/src/layers/preprocessing/benchmarks/hashing_benchmark.py +0 -105
  42. tf_keras/src/layers/preprocessing/benchmarks/image_preproc_benchmark.py +0 -159
  43. tf_keras/src/layers/preprocessing/benchmarks/index_lookup_adapt_benchmark.py +0 -135
  44. tf_keras/src/layers/preprocessing/benchmarks/index_lookup_forward_benchmark.py +0 -144
  45. tf_keras/src/layers/preprocessing/benchmarks/normalization_adapt_benchmark.py +0 -124
  46. tf_keras/src/layers/preprocessing/benchmarks/weighted_embedding_varlen_benchmark.py +0 -99
  47. tf_keras/src/saving/legacy/saved_model/create_test_saved_model.py +0 -37
  48. tf_keras/src/tests/keras_doctest.py +0 -159
  49. {tf_keras_nightly-2.20.0.dev2025051109.dist-info → tf_keras_nightly-2.21.0.dev2025123010.dist-info}/top_level.txt +0 -0
@@ -219,7 +219,11 @@ def wrap_layer_functions(layer, serialization_cache):
219
219
  with tracing_scope():
220
220
  call_collection.trace_with_input_signature()
221
221
  with base_layer_utils.call_context().enter(
222
- layer, inputs=None, build_graph=True, training=None, saving=True
222
+ layer,
223
+ inputs=None,
224
+ build_graph=True,
225
+ call_context_args={},
226
+ saving=True,
223
227
  ):
224
228
  for fn in fns.values():
225
229
  if fn is not None and not isinstance(fn, LayerCall):
@@ -515,19 +519,28 @@ class LayerCallCollection:
515
519
  else:
516
520
  add_trace_to_queue(fn, args, kwargs)
517
521
 
518
- def training_arg_was_passed(self, args, kwargs):
522
+ def arg_was_passed(self, arg_name, args, kwargs):
523
+ """Returns True if the argument was passed to the call function."""
519
524
  return self._call_spec.arg_was_passed(
520
- "training", args, kwargs, inputs_in_args=True
525
+ arg_name, args, kwargs, inputs_in_args=True
521
526
  )
522
527
 
523
- def get_training_arg_value(self, args, kwargs):
528
+ def training_arg_was_passed(self, args, kwargs):
529
+ """Returns True if the training arg was passed to the call function."""
530
+ return self.arg_was_passed("training", args, kwargs)
531
+
532
+ def get_arg_value(self, arg_name, args, kwargs):
533
+ """Returns the value of the given argument or None if not found."""
524
534
  try:
525
535
  return self._call_spec.get_arg_value(
526
- "training", args, kwargs, inputs_in_args=True
536
+ arg_name, args, kwargs, inputs_in_args=True
527
537
  )
528
- except KeyError: # Training is not in args or kwargs.
538
+ except KeyError: # Arg not found in args or kwargs.
529
539
  return None
530
540
 
541
+ def get_training_arg_value(self, args, kwargs):
542
+ return self.get_arg_value("training", args, kwargs)
543
+
531
544
  def get_input_arg_value(self, args, kwargs):
532
545
  return self._call_spec.get_arg_value(
533
546
  self._input_arg_name, args, kwargs, inputs_in_args=True
@@ -613,20 +626,23 @@ def layer_call_wrapper(call_collection, method, name):
613
626
  def wrapper(*args, **kwargs):
614
627
  """Calls method within call context."""
615
628
  layer = call_collection.layer
616
- training = None
629
+ propagated = {"training": None}
617
630
  inputs = _filtered_inputs([args, kwargs])
618
631
 
619
- if (args or kwargs) and call_collection.training_arg_was_passed(
620
- args, kwargs
621
- ):
622
- training = call_collection.get_training_arg_value(args, kwargs)
632
+ for context_arg in layer._call_context_args:
633
+ if (args or kwargs) and call_collection.arg_was_passed(
634
+ context_arg, args, kwargs
635
+ ):
636
+ propagated[context_arg] = call_collection.get_arg_value(
637
+ context_arg, args, kwargs
638
+ )
623
639
 
624
640
  original_losses = _reset_layer_losses(layer)
625
641
  with base_layer_utils.call_context().enter(
626
642
  layer,
627
643
  inputs=inputs,
628
644
  build_graph=False,
629
- training=training,
645
+ call_context_args=propagated,
630
646
  saving=True,
631
647
  ):
632
648
  with autocast_variable.enable_auto_cast_variables(
@@ -138,12 +138,24 @@ def trace_model_call(model, input_signature=None):
138
138
  @tf.function
139
139
  def _wrapped_model(*args, **kwargs):
140
140
  """A concrete tf.function that wraps the model's call function."""
141
+ call_context = base_layer_utils.call_context()
142
+
143
+ args, kwargs, propagated = model._get_propagated_call_context_arguments(
144
+ args, kwargs, call_context, model._call_context_args
145
+ )
146
+
141
147
  (args, kwargs,) = model._call_spec.set_arg_value(
142
148
  "training", False, args, kwargs, inputs_in_args=True
143
149
  )
144
150
 
145
- with base_layer_utils.call_context().enter(
146
- model, inputs=None, build_graph=False, training=False, saving=True
151
+ propagated["training"] = False
152
+
153
+ with call_context.enter(
154
+ model,
155
+ inputs=None,
156
+ build_graph=False,
157
+ call_context_args=propagated,
158
+ saving=True,
147
159
  ):
148
160
  outputs = model(*args, **kwargs)
149
161
 
@@ -639,7 +639,7 @@ class NpzIOStore:
639
639
  self.f = archive.open(root_path, mode="r")
640
640
  else:
641
641
  self.f = open(root_path, mode="rb")
642
- self.contents = np.load(self.f, allow_pickle=True)
642
+ self.contents = np.load(self.f, allow_pickle=False)
643
643
 
644
644
  def make(self, path):
645
645
  if not path:
@@ -775,11 +775,13 @@ class CallFunctionSpec:
775
775
  """Caches the spec and provides utilities for handling call function
776
776
  args."""
777
777
 
778
- def __init__(self, full_argspec):
778
+ def __init__(self, full_argspec, call_context_args=set()):
779
779
  """Initialies a `CallFunctionSpec`.
780
780
 
781
781
  Args:
782
782
  full_argspec: the FullArgSpec of a call function of a layer.
783
+ call_context_args: The set of call-context arguments registered
784
+ with to the current layer.
783
785
  """
784
786
  self._full_argspec = full_argspec
785
787
 
@@ -797,6 +799,18 @@ class CallFunctionSpec:
797
799
  "mask" in self._arg_names or call_accepts_kwargs
798
800
  )
799
801
 
802
+ # Track the set of call-context arguments that the current layer's
803
+ # `call` method accepts.
804
+ self._expected_context_args = set()
805
+ self._update_call_context_arguments(call_context_args)
806
+
807
+ self._context_arg_defaults = dict()
808
+ self._update_call_context_argument_defaults(call_context_args)
809
+
810
+ def _update_call_context_argument_defaults(self, context_args):
811
+ """Updates the set of call-context argument defaults for the current
812
+ layer's `call` method.
813
+ """
800
814
  call_fn_defaults = self._full_argspec.defaults or []
801
815
  defaults = dict()
802
816
  # The call arg defaults are an n-tuple of the last n elements of the
@@ -806,7 +820,21 @@ class CallFunctionSpec:
806
820
  # The default training arg will be any (non-None) default specified in
807
821
  # the method signature, or None if no value is specified.
808
822
  defaults.update(self._full_argspec.kwonlydefaults or {})
809
- self._default_training_arg = defaults.get("training")
823
+
824
+ for arg in context_args:
825
+ self._context_arg_defaults[arg] = defaults.get(arg)
826
+
827
+ def _update_call_context_arguments(self, context_args):
828
+ """Updates the set of call-context arguments that the current layer's
829
+ `call` method accepts.
830
+ """
831
+ call_accepts_kwargs = self._full_argspec.varkw is not None
832
+ args_to_add = {
833
+ arg
834
+ for arg in context_args
835
+ if call_accepts_kwargs or arg in self._arg_names
836
+ }
837
+ self._expected_context_args.update(args_to_add)
810
838
 
811
839
  @property
812
840
  def full_argspec(self):
@@ -843,6 +871,16 @@ class CallFunctionSpec:
843
871
  def expects_training_arg(self, value):
844
872
  self._expects_training_arg = value
845
873
 
874
+ @property
875
+ def expected_context_args(self):
876
+ """The set of call-context arguments that the current layer's
877
+ `call` method accepts."""
878
+ return self._expected_context_args
879
+
880
+ @expected_context_args.setter
881
+ def expected_context_args(self, value):
882
+ self._expected_context_args = value
883
+
846
884
  @property
847
885
  def expects_mask_arg(self):
848
886
  """Whether the call function uses `mask` as a parameter."""
@@ -855,7 +893,11 @@ class CallFunctionSpec:
855
893
  @property
856
894
  def default_training_arg(self):
857
895
  """The default value given to the "training" argument."""
858
- return self._default_training_arg
896
+ return self.get_context_arg_default("training")
897
+
898
+ def get_context_arg_default(self, arg_name):
899
+ """The default value given to the call context arguments."""
900
+ return self._context_arg_defaults.get(arg_name, None)
859
901
 
860
902
  def arg_was_passed(self, arg_name, args, kwargs, inputs_in_args=False):
861
903
  """Returns true if argument is present in `args` or `kwargs`.
@@ -237,6 +237,7 @@ class AUCCurve(Enum):
237
237
 
238
238
  ROC = "ROC"
239
239
  PR = "PR"
240
+ PR_GAIN = "PR_GAIN"
240
241
 
241
242
  @staticmethod
242
243
  def from_str(key):
@@ -244,10 +245,12 @@ class AUCCurve(Enum):
244
245
  return AUCCurve.PR
245
246
  elif key in ("roc", "ROC"):
246
247
  return AUCCurve.ROC
248
+ elif key in ("pr_gain", "prgain", "PR_GAIN", "PRGAIN"):
249
+ return AUCCurve.PR_GAIN
247
250
  else:
248
251
  raise ValueError(
249
252
  f'Invalid AUC curve value: "{key}". '
250
- 'Expected values are ["PR", "ROC"]'
253
+ 'Expected values are ["PR", "ROC", "PR_GAIN"]'
251
254
  )
252
255
 
253
256
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tf_keras-nightly
3
- Version: 2.20.0.dev2025051109
3
+ Version: 2.21.0.dev2025123010
4
4
  Summary: Deep learning for humans.
5
5
  Home-page: https://keras.io/
6
6
  Download-URL: https://github.com/keras-team/tf-keras/tags
@@ -26,7 +26,7 @@ Classifier: Topic :: Software Development
26
26
  Classifier: Topic :: Software Development :: Libraries
27
27
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
28
  Requires-Python: >=3.9
29
- Requires-Dist: tf-nightly~=2.20.0.dev
29
+ Requires-Dist: tf-nightly~=2.21.0.dev
30
30
  Dynamic: author
31
31
  Dynamic: author-email
32
32
  Dynamic: classifier
@@ -1,4 +1,4 @@
1
- tf_keras/__init__.py,sha256=mXiuxjUXESvbNgowgb81sFtioOFLQZf7Z0pEE-kZYbE,911
1
+ tf_keras/__init__.py,sha256=o1qbOe_ffzZ4LRxDpb9Ga8DP1A89Fhr9103F88EajA4,911
2
2
  tf_keras/__internal__/__init__.py,sha256=OHQbeIC0QtRBI7dgXaJaVbH8F00x8dCI-DvEcIfyMsE,671
3
3
  tf_keras/__internal__/backend/__init__.py,sha256=LnMs2A6685gDG79fxqmdulIYlVE_3WmXlBTBo9ZWYcw,162
4
4
  tf_keras/__internal__/layers/__init__.py,sha256=F5SGMhOTPzm-PR44VrfinURHcVeQPIEdwnZlAkSTB3A,176
@@ -201,12 +201,12 @@ tf_keras/preprocessing/image/__init__.py,sha256=H6rbMLtlGIy_jBLCSDklVTMXUjEUe8KQ
201
201
  tf_keras/preprocessing/sequence/__init__.py,sha256=Zg9mw0TIRIc-BmVtdXvW3jdIQo05VHZX_xmqZDMuaik,285
202
202
  tf_keras/preprocessing/text/__init__.py,sha256=1yQd-VZD6SjnEpPyBFLucYMxu9A5DnAnIec2tba9zQk,329
203
203
  tf_keras/protobuf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
- tf_keras/protobuf/projector_config_pb2.py,sha256=GHQfZbNY6IgeVYvL1A9o5ET7EiG-jv--zhbAJg9Ez3k,1821
205
- tf_keras/protobuf/saved_metadata_pb2.py,sha256=K4ROX6DQeyFej5TBrUvfY7e_gzpQuCRuiuiVgk3ehhg,1585
206
- tf_keras/protobuf/versions_pb2.py,sha256=HP6fzinb4-KIEZaINXIAe-BpxQnGROxrxECgGcpcvFE,1119
204
+ tf_keras/protobuf/projector_config_pb2.py,sha256=Qn_IXcjH7GYRpehPH4hznWxGDPn_No8kLTJHWkkCAu4,2208
205
+ tf_keras/protobuf/saved_metadata_pb2.py,sha256=nI5xD26EgxUpHE2JyJsyDEHi6O8Tunue9j_JN9BUX08,1946
206
+ tf_keras/protobuf/versions_pb2.py,sha256=0XsJrhgwioUlNc4hdeJ8tee3tWSTvZnLEwJd--wAVr4,1450
207
207
  tf_keras/regularizers/__init__.py,sha256=D6TnroEDjnyP79TY_624g2DToxVWuKzuaiBAn_gUQaY,634
208
208
  tf_keras/saving/__init__.py,sha256=Xo0imlDhiYV7Rowy8BjMwrFJuAB8h2DdIuVcxvaeEa0,681
209
- tf_keras/src/__init__.py,sha256=0_kJChFpSVveEmORgCyrhovmeKxMEzS78Hh1b4Egy18,1502
209
+ tf_keras/src/__init__.py,sha256=p7hwxQsHJzS7Qq-OTj-gcJgsGn9bw5FN9IQ03yQO_Ls,1502
210
210
  tf_keras/src/activations.py,sha256=QNTCdIuNGww5BPwkkjkaNZf4j09m27Nqi-r4aTBOxnk,22630
211
211
  tf_keras/src/backend.py,sha256=-_L2aB0n9ZkFsRoivRX-BjGxBpJG27PunUm9DzN0fvU,248509
212
212
  tf_keras/src/backend_config.py,sha256=DaKkQg6jLmzR2GtgjNxwFoHuTXwVcAzx_Hx8XgAKPNs,4516
@@ -271,16 +271,16 @@ tf_keras/src/dtensor/lazy_variable.py,sha256=c3yylbga0se3Geflutss3fz5RzBYuY2vkU3
271
271
  tf_keras/src/dtensor/test_util.py,sha256=9QAbt44mlirdqwG2ertTsoXNKG2V4Z0bqJFxGdxy5BY,4572
272
272
  tf_keras/src/dtensor/utils.py,sha256=2TTSCEOA61Ia1FAPfQWJ2CRfiocBGUZreXH9UBFzFbk,6441
273
273
  tf_keras/src/engine/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
274
- tf_keras/src/engine/base_layer.py,sha256=H7TK3ezXORn1B79TZO3klFGE_hmXHAauS3h5k_8xJvA,156553
275
- tf_keras/src/engine/base_layer_utils.py,sha256=YMJF5sZJhFF_yzfqOtqi4YTsyUE2ZQ_cJJOIdXnuS2w,35795
276
- tf_keras/src/engine/base_layer_v1.py,sha256=cX-OCSNio3Tr2M6twr_PUgKulePLZDNW_4xLXjgYbN4,102700
274
+ tf_keras/src/engine/base_layer.py,sha256=r_0g7rX2WA7-fThh3sjFqNZgSTEuR1CTsW4FrZMMI6s,162338
275
+ tf_keras/src/engine/base_layer_utils.py,sha256=AFjqwXM-WShf0dfsyIotlXYIRJlqYyjQhAf50xZgyos,36166
276
+ tf_keras/src/engine/base_layer_v1.py,sha256=MMfdUKB8tjbjjX9Pj5b6E5XgrM-BnVx0ilSndcR_3QA,102875
277
277
  tf_keras/src/engine/base_preprocessing_layer.py,sha256=xne5VVtj9_IE1_cjh-kaPk-utoMY7mYwTOcgybFfY34,12650
278
278
  tf_keras/src/engine/compile_utils.py,sha256=F6KxbaXnppns5XCOJl8wzsiQ1riEp43s0G0SWsWAUE0,31757
279
- tf_keras/src/engine/data_adapter.py,sha256=UqYJBUDiS-vyu7euVYxQrXw0U9-piO7SwTetkGBSMwg,71654
280
- tf_keras/src/engine/functional.py,sha256=igoSYLFSVYvZ8EUjwbowrDyYywI-V3h9ypeybIN_Jr4,70182
279
+ tf_keras/src/engine/data_adapter.py,sha256=N5UV4KYF-F7YJdB5kHR8pACSrFlSqQte_DsmA8Ksa6Y,72257
280
+ tf_keras/src/engine/functional.py,sha256=ojvj0DkGrnqd16dEIqj2AgFlmxB2s6e-3qjs78fN85E,71006
281
281
  tf_keras/src/engine/functional_utils.py,sha256=5creFfo9UoG5OLJgkcw9gsfT-qch-RamT5IsU8675rU,11048
282
- tf_keras/src/engine/input_layer.py,sha256=QVAA9ZrhfUlcx0Tj_UuNF3t1nxYrhyks6vDJJeb18W8,18258
283
- tf_keras/src/engine/input_spec.py,sha256=W3mojApaM_lN8Vr2MCvddE8RhHckxwObzpySPm16oEM,12076
282
+ tf_keras/src/engine/input_layer.py,sha256=SRoRYG_PElMRMAypjeQRZ_0Ub4tu5jdRc6ASL59BAsY,18650
283
+ tf_keras/src/engine/input_spec.py,sha256=H2U8yNz7eabUozm4QAcL3XcQoxj6iAwvK6ecU7w8O5g,12455
284
284
  tf_keras/src/engine/keras_tensor.py,sha256=rmIyf-sMKzGAMXzob0hCTZ3qA4JBYyIM85XUdmOPmqQ,28858
285
285
  tf_keras/src/engine/node.py,sha256=mevKNFEtzeVbwLRuwB7sMzQGKt6ppIxLmMcfQMzu8N8,14254
286
286
  tf_keras/src/engine/partial_batch_padding_handler.py,sha256=TNZvGXL-fvmZLLHIMPX_hy0w9LT8W52DHW7ZtnEvBvI,4325
@@ -314,13 +314,13 @@ tf_keras/src/layers/activation/elu.py,sha256=n-WAE6NjC9mbqcV7Kxgpt8tTbvwCQIGsoCV
314
314
  tf_keras/src/layers/activation/leaky_relu.py,sha256=cJmpwgg4KEu--iK9gFuJT7uEGpDArB8q-XNBmJfC7_U,2618
315
315
  tf_keras/src/layers/activation/prelu.py,sha256=D2yhneQrYQP6aHSK8nvnMKa1hIeuPZO_XCB2Cu9Cl4Y,4440
316
316
  tf_keras/src/layers/activation/relu.py,sha256=JklQuReRiR3huAGr3QRtuGL0URpdspDFzBNjZgv0HDw,4281
317
- tf_keras/src/layers/activation/softmax.py,sha256=G6MfTCogGTKwyP7b6ByxeIHFNQtUKgrZXB8MP9hNstQ,4105
317
+ tf_keras/src/layers/activation/softmax.py,sha256=0g8uN5N8QDW8lj6nGabR-EBk58njbiNdhDzglv9rxXU,4861
318
318
  tf_keras/src/layers/activation/thresholded_relu.py,sha256=rQLn9cr-w6hVJET2mS7OIQ9diiUiqUrX4CysXKNYbmg,2503
319
319
  tf_keras/src/layers/attention/__init__.py,sha256=6HjPSyLhs_bf4erT65KyhSCHQF7WeWZe9YTH7iW6Nek,945
320
320
  tf_keras/src/layers/attention/additive_attention.py,sha256=jie0cAXJEjU4xXK_Ur1SrEL9RqDIIAPyaAkK8O71TEs,7485
321
321
  tf_keras/src/layers/attention/attention.py,sha256=TCnoOWAfh6i275TvudxyjosczBmL_zz9ByEUi-xXkAU,8682
322
322
  tf_keras/src/layers/attention/base_dense_attention.py,sha256=cEzBldjwQfuJfNZRimW5s-NqyENU2-lmqaNNxAGxhKw,10856
323
- tf_keras/src/layers/attention/multi_head_attention.py,sha256=05RC-2BSmCcBFtVY2loQPeiMYp8XArmbvovPl8kpiEA,30279
323
+ tf_keras/src/layers/attention/multi_head_attention.py,sha256=FQX0YtXRy5kg8OlShA7cp2kfczzeWb9Oj3tbzkukLRw,30618
324
324
  tf_keras/src/layers/convolutional/__init__.py,sha256=U-4tja5JhSUva2G9uMmsZyZty2N2N9jT6EJRu5HAo-Y,3355
325
325
  tf_keras/src/layers/convolutional/base_conv.py,sha256=jvm4elEyIVSNfYZxh4inzQ1Q2CKS_f8VawvXMIJFSC4,17574
326
326
  tf_keras/src/layers/convolutional/base_depthwise_conv.py,sha256=SVgR2Y8dpeX4eDEF1e0UY0Mxh4A47eGHhJCQ1peGwNQ,9661
@@ -343,7 +343,7 @@ tf_keras/src/layers/core/embedding.py,sha256=iOdkBiP1IzwOVPjsKWA54NXrlk5KgJ0DfQ8
343
343
  tf_keras/src/layers/core/identity.py,sha256=yj5cWlUTlYq_J_ZQb1iLzM0bqaM4V6TXVwM4iuBFp9U,1301
344
344
  tf_keras/src/layers/core/lambda_layer.py,sha256=QzetX-lV9ybonQKg_6QzSm8w9Vkq8CPAM4BcAke7CZk,16481
345
345
  tf_keras/src/layers/core/masking.py,sha256=19p6HYGlKdUfQnelsAoee6wf87fWx67NSGinyjagNc4,3340
346
- tf_keras/src/layers/core/tf_op_layer.py,sha256=4WDRrT8dVwnD7avcWvMCk9mnGwfHcaN3Dmhf7CBeqzQ,21066
346
+ tf_keras/src/layers/core/tf_op_layer.py,sha256=R6dFECVkPbmKi1nQVcxJy5lNxSVwiMlaWXB7j0PjI7Q,21320
347
347
  tf_keras/src/layers/experimental/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
348
348
  tf_keras/src/layers/experimental/dynamic_embedding.py,sha256=KuVIawm3avPEa5c2IDOyBH14xiU5bYbPqcm_HugfWYA,10730
349
349
  tf_keras/src/layers/experimental/dynamic_lookup.py,sha256=CMNOaxAIkB1ChPcusuymhLAYTvobEbCBli6YkuWw8RE,13720
@@ -402,27 +402,7 @@ tf_keras/src/layers/preprocessing/preprocessing_utils.py,sha256=OR8NDGv8foDT2Ngv
402
402
  tf_keras/src/layers/preprocessing/string_lookup.py,sha256=2yqsgps42qMd6MB6vwBevionU7dh77OQdLburmn90b0,19179
403
403
  tf_keras/src/layers/preprocessing/text_vectorization.py,sha256=mL6sHm3TPXKg8q51vEWyo7LYKyiEoQFzm7GUkrSS-6E,30467
404
404
  tf_keras/src/layers/preprocessing/benchmarks/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
405
- tf_keras/src/layers/preprocessing/benchmarks/bucketized_column_dense_benchmark.py,sha256=ZKFxRPRDx9VYUzu3k42DO2hrN9Ve9UNLPYEraN3BU94,2845
406
- tf_keras/src/layers/preprocessing/benchmarks/category_encoding_benchmark.py,sha256=IEdxK6eQa1YdxgmOQ13YBeJ94afFWfGazAO6NvfxJ5w,2949
407
- tf_keras/src/layers/preprocessing/benchmarks/category_hash_dense_benchmark.py,sha256=yoGE5ofB7fspimQ1ImShs5KguNGUQ_JpsGYPLZS1gpQ,2809
408
- tf_keras/src/layers/preprocessing/benchmarks/category_hash_varlen_benchmark.py,sha256=5b80c35WGpWEXgv2lutqVVuS52mWiD6Cyw1ZA6KkseU,2723
409
- tf_keras/src/layers/preprocessing/benchmarks/category_vocab_file_dense_benchmark.py,sha256=SPmA9yXH3dr6uHfs1IsAkrjNo02YgyfmWrt24pl6ROs,3588
410
- tf_keras/src/layers/preprocessing/benchmarks/category_vocab_file_varlen_benchmark.py,sha256=JAM0X1lBkZd7KYtBFaBP2HfxxB3Uj7Ik7WeFhajbwNo,3437
411
- tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_dense_benchmark.py,sha256=y0RR1TMq5PUv4Jlh7jMmQrJWsjDtgDivsqTeEMi6ovI,2863
412
- tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_indicator_dense_benchmark.py,sha256=lyfRE8NP3gLfTDnIzucPqjMiLAOCEUS-pSwa1f7EXLM,3169
413
- tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_indicator_varlen_benchmark.py,sha256=Ebx54Qo5ec-Sys5bPhp1KaVtmWsQxpNotzxxpxtfBPg,3101
414
- tf_keras/src/layers/preprocessing/benchmarks/category_vocab_list_varlen_benchmark.py,sha256=WkDOo5borQYk78xKbnsh7tcEZyjrDEGb7NnTkYzoM18,2795
415
- tf_keras/src/layers/preprocessing/benchmarks/discretization_adapt_benchmark.py,sha256=UD48alO_v-Vb8naluZtPozU7U4Oy-1WPSV1oqhzl-Yk,3776
416
- tf_keras/src/layers/preprocessing/benchmarks/embedding_dense_benchmark.py,sha256=PB7D3pFmVxlxZ4tKO7N-NB-wfJ0KY8B4RpAy_BZG01A,2836
417
- tf_keras/src/layers/preprocessing/benchmarks/embedding_varlen_benchmark.py,sha256=-fif0N3JPQT9fIwmpj-XE2eJif21sK2TsC6fri7ZuWI,2831
418
405
  tf_keras/src/layers/preprocessing/benchmarks/feature_column_benchmark.py,sha256=cSSHeEGH1dhxR3UJiCFZUgFeRZHd25eDUMRmKE140is,4814
419
- tf_keras/src/layers/preprocessing/benchmarks/hashed_crossing_benchmark.py,sha256=QV4n0f2j5b1Us-D2NHMA7WMRuUeMyiZpg-FAEopK0qs,2835
420
- tf_keras/src/layers/preprocessing/benchmarks/hashing_benchmark.py,sha256=wV16NUaNLfYZVwZCuMiX7JN9YDmbqyxaWHERo_uFJoE,3624
421
- tf_keras/src/layers/preprocessing/benchmarks/image_preproc_benchmark.py,sha256=x-XDwI75oIW3clnGOOmRG0Tb3hsQTx40bwxT7sj6CaE,5467
422
- tf_keras/src/layers/preprocessing/benchmarks/index_lookup_adapt_benchmark.py,sha256=LLv8vcdsphIBy5-owcABZdVSGSGMmQ7W-LmFTezO9Wc,4475
423
- tf_keras/src/layers/preprocessing/benchmarks/index_lookup_forward_benchmark.py,sha256=O4e0X-yLYWpfN2pX_WshN92ygw7XqlXZfgQjeO1WjuY,4941
424
- tf_keras/src/layers/preprocessing/benchmarks/normalization_adapt_benchmark.py,sha256=sB-Tcem8UdFGXnKx4HI4fLjTsIjaGJ2WAaphrxuItVc,4420
425
- tf_keras/src/layers/preprocessing/benchmarks/weighted_embedding_varlen_benchmark.py,sha256=Z5k0UaPM0-VfUw9tMv4_dEhsQNDODWlfNtsZ1RHFrFI,3324
426
406
  tf_keras/src/layers/regularization/__init__.py,sha256=9fIrtV8SwP1PG8BXfNrSP8rSyCdh4pPnV7hNvDbRysg,1369
427
407
  tf_keras/src/layers/regularization/activity_regularization.py,sha256=QxnBlnkHi2HZ2Pt-mX5WGiJWzljNQmh-X4La9f7XDGo,1942
428
408
  tf_keras/src/layers/regularization/alpha_dropout.py,sha256=JmMO6OHzpVtRS2Tl1fTslktQPM4MuN0ivNlCOUhH0VM,3800
@@ -454,7 +434,7 @@ tf_keras/src/layers/rnn/base_cudnn_rnn.py,sha256=cuPVg6r4L1pVWYTp3WFbJhikuIR2Vmg
454
434
  tf_keras/src/layers/rnn/base_rnn.py,sha256=I7mWl4KQC26gILDt9pZ9moZ81yM57lvci6hzJ9ROrxo,41968
455
435
  tf_keras/src/layers/rnn/base_wrapper.py,sha256=x4GANiXtmh9ztAFh7QtfbnQE76UVCGpaHp_XhrSs0Os,3159
456
436
  tf_keras/src/layers/rnn/bidirectional.py,sha256=JyZuBU0q2lt4augThwm8vyTvYwEJxyawsHmgNIul5vU,22670
457
- tf_keras/src/layers/rnn/cell_wrappers.py,sha256=T3FIiY9vIr0Or1N_SWNVnHR3LH6xnJ5DgNNYLk-sV6c,26874
437
+ tf_keras/src/layers/rnn/cell_wrappers.py,sha256=fMGpdFFoRWRIuKz88NcnMvAtevv8OYHzxkF86Ltmwfk,27384
458
438
  tf_keras/src/layers/rnn/conv_lstm1d.py,sha256=suShze6ipNXabGlKJTxkOia17ZP4SeEei3Mi4F8lFOQ,8761
459
439
  tf_keras/src/layers/rnn/conv_lstm2d.py,sha256=myxOioB3yNn0L_-gMh0R41sb-MwTXO993lAT05_N0Zw,8874
460
440
  tf_keras/src/layers/rnn/conv_lstm3d.py,sha256=GT4OoPFtCr5xgaaqy3ezt5DyDu8Ut-wQEihCOHFk0D4,8969
@@ -483,7 +463,7 @@ tf_keras/src/legacy_tf_layers/variable_scope_shim.py,sha256=kGAFW03pVWSB1DhHvQ1W
483
463
  tf_keras/src/metrics/__init__.py,sha256=dM8S0ZhfiyPaXkdYuOSKvoytmYOkh8aYuJnpgUoT6vg,9699
484
464
  tf_keras/src/metrics/accuracy_metrics.py,sha256=RRQqyYZcVrEY2Pfc-OV6k3rYhv9ejSLJ9JbJzs_D5vk,17514
485
465
  tf_keras/src/metrics/base_metric.py,sha256=MCaI7Bx-kgs5udTRLvKMJ3SO90-GFs_9QMigrhkX9HQ,36498
486
- tf_keras/src/metrics/confusion_metrics.py,sha256=k548s2aYSeNfo3ROlK_Br6BDwKbE-Bqu4Hq0_HbLf7g,65973
466
+ tf_keras/src/metrics/confusion_metrics.py,sha256=V1uNFUc1zyjxd-m-D83QhJ9bkbtPCfsXf3CROOPWmzs,68068
487
467
  tf_keras/src/metrics/f_score_metrics.py,sha256=3uxqH9NNqoKaGPz-R6eERA23bK1TabCXrsJUz2sbetU,12000
488
468
  tf_keras/src/metrics/hinge_metrics.py,sha256=QXtNdxE-IgZmdVQXIew_pN6X3aF9i7r7xirmb6oiOKA,4132
489
469
  tf_keras/src/metrics/iou_metrics.py,sha256=dUqZpOppIPj3aCtS25Hs6bvJoPHNnrtAChujoA-6bLQ,28530
@@ -498,7 +478,7 @@ tf_keras/src/mixed_precision/policy.py,sha256=1GWHp99dU0f6D0h_jIrSQkoLyIf0ClRJ0B
498
478
  tf_keras/src/mixed_precision/test_util.py,sha256=S4dDVLvFmv3OXvo-7kswO8MStwvTjP_caE3DrUhy9Po,8641
499
479
  tf_keras/src/models/__init__.py,sha256=VQ3cZve-CsmM_4CEi9q-V7m2qFO9HbdiO38mAR4dKdM,1823
500
480
  tf_keras/src/models/cloning.py,sha256=PHLTG0gSjvoKl8jxGaLCUq3ejK_o0PNA7gxSqxyoLBI,36839
501
- tf_keras/src/models/sharpness_aware_minimization.py,sha256=4nofg5_fbrRuGa5RAIQwJ-OL8eeiWg7jlNkMuJSCB_g,7301
481
+ tf_keras/src/models/sharpness_aware_minimization.py,sha256=MArrweVZA85F1tPHZd06AVKpAdacaPplTz6eOS2XcRk,7795
502
482
  tf_keras/src/optimizers/__init__.py,sha256=lkPBfjJhWx_0nV8MrEmjWvJTGKutM1a9nIrB0ua0O-k,13044
503
483
  tf_keras/src/optimizers/adadelta.py,sha256=47HgdG0v-76B5htebkwl1OoryFPLO2kgk_CsYqgq7hU,6174
504
484
  tf_keras/src/optimizers/adafactor.py,sha256=_IYi6WMyXl4nPimr15nAPWvj6ZKcP7cESFsdpeabNKQ,8651
@@ -538,18 +518,17 @@ tf_keras/src/saving/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKV
538
518
  tf_keras/src/saving/object_registration.py,sha256=N8aV6eqREYjW2ueQpL3guYHyh5KXuun3DZAlmjfYrTA,7830
539
519
  tf_keras/src/saving/pickle_utils.py,sha256=5GtHzwNWVaYfZ-0zn69-zn2yv3R6JUwzHOOamnjP7r0,2605
540
520
  tf_keras/src/saving/saving_api.py,sha256=7uIWY4uwQMtETP5yRjZYPii-E-sWzSuK0ljVMfnZe_k,15119
541
- tf_keras/src/saving/saving_lib.py,sha256=Rk5rOvxEmCvwUlG3bS0QpOgtURayYmIAZbh2GeTuUOc,24272
521
+ tf_keras/src/saving/saving_lib.py,sha256=Ik1m_D1G7_Z3KMipmy5Mi8jhyWtOnJ6QbFY-VV5A2R0,24273
542
522
  tf_keras/src/saving/serialization_lib.py,sha256=kX4qf_fRp4LySkH9FU37DMd0AXxiUrXKT-VLR3JPl7w,30152
543
523
  tf_keras/src/saving/legacy/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
544
524
  tf_keras/src/saving/legacy/hdf5_format.py,sha256=IqFXHN96fuqKwu_akaqTyf9ISRPavP3Ahjydat948O4,42438
545
525
  tf_keras/src/saving/legacy/model_config.py,sha256=ZE6H_dKdmo2dlBWkr2nYO8SXcMEhshgza3sHPCpeu-k,4140
546
526
  tf_keras/src/saving/legacy/save.py,sha256=TdjiEamZ8MAsPAWsYMEtrdCRppbHcBIwJh9eVfdUS3k,23612
547
- tf_keras/src/saving/legacy/saving_utils.py,sha256=VTxnYFSWZ7m_40deANuWbtyhyXq0o0c5vLuBeCbgwi8,13745
527
+ tf_keras/src/saving/legacy/saving_utils.py,sha256=0iXchqZQNw9s5kB9_7SIj2p3Qd_21jdfHJQ3b3YVWQs,14042
548
528
  tf_keras/src/saving/legacy/serialization.py,sha256=OrmHQPolQFsR-UCMxNTxkIFTKY4DKcAgMm1jdhF7TqU,22285
549
529
  tf_keras/src/saving/legacy/saved_model/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
550
530
  tf_keras/src/saving/legacy/saved_model/base_serialization.py,sha256=dALR19_zt4c80zVw3yjCj9wfRoJufDjCrvkJyS82Dnk,5104
551
531
  tf_keras/src/saving/legacy/saved_model/constants.py,sha256=96ymvysCZ2Ru888YT_DEPMDgizHdDoBFGEOXsf-9AwE,1779
552
- tf_keras/src/saving/legacy/saved_model/create_test_saved_model.py,sha256=mS5jmCsDwUFUKr08G0tphPSA5ZAd7illNyj3QXKejOA,1040
553
532
  tf_keras/src/saving/legacy/saved_model/json_utils.py,sha256=WOyJaamx15lJ_V4XZSYM3RtuATa73uRNRM13o2s7yQ4,8071
554
533
  tf_keras/src/saving/legacy/saved_model/layer_serialization.py,sha256=FQwNk2XJq8dzgoSAWrmcabglZTA-6oDPtfeLiGrZO6A,8418
555
534
  tf_keras/src/saving/legacy/saved_model/load.py,sha256=wJUL0T4ZlUgxk3pZa_7E4NXEE3LXfjSKuGvTlrQchHc,57007
@@ -558,7 +537,7 @@ tf_keras/src/saving/legacy/saved_model/model_serialization.py,sha256=IxQ1TfBGagV
558
537
  tf_keras/src/saving/legacy/saved_model/network_serialization.py,sha256=ofbKN9V3syw0AQebgy2PlvaiAHi3SnBFTg-PUgclTng,1180
559
538
  tf_keras/src/saving/legacy/saved_model/order_preserving_set.py,sha256=zvNFzss8wSc0vngv74dNnQO_hxpxmEWWBBv1TTLsbPY,3250
560
539
  tf_keras/src/saving/legacy/saved_model/save.py,sha256=2-AaGFhFxzfZLkIW1qx9-rTcaZvYMFkQYP7ijfwA-ZI,6395
561
- tf_keras/src/saving/legacy/saved_model/save_impl.py,sha256=cWDBJ0uYfV1dNB5pdKFqDwYLQaaxWNeG8GSLiABAmec,29751
540
+ tf_keras/src/saving/legacy/saved_model/save_impl.py,sha256=mcdNPwJYwzOsdSisgwkBEbnoSABEZdshN7BRmTttK2c,30420
562
541
  tf_keras/src/saving/legacy/saved_model/serialized_attributes.py,sha256=nlmtIzLUBGSQU6gDKcg4-ypSRX3RbS4vPmLIhG3HSbk,15009
563
542
  tf_keras/src/saving/legacy/saved_model/utils.py,sha256=2OCwun0U8nsZvxUbv7Toq2EeC1HU32LxnLDan8cw4Dc,9953
564
543
  tf_keras/src/testing_infra/__init__.py,sha256=yrmnTOUMQ09fOgD3PD4NjpaeKz2OXCUmmoExRWhg9AY,690
@@ -567,7 +546,6 @@ tf_keras/src/testing_infra/test_combinations.py,sha256=ETwFTN8eBAusQpqU7dg_Qckb1
567
546
  tf_keras/src/testing_infra/test_utils.py,sha256=SMEYejGPfYnZT2tVgzHL3gBHNGk6qcTu1qcZetHv870,40307
568
547
  tf_keras/src/tests/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
569
548
  tf_keras/src/tests/get_config_samples.py,sha256=qz2SZb_JIW2NoTak9NphLJkDTgYmlQ5RNm64T9wQ6L8,15307
570
- tf_keras/src/tests/keras_doctest.py,sha256=qFPhxdstCjwGZw0JIKPMZ_PF-oBzEgP6EqZ9n_0mtio,4638
571
549
  tf_keras/src/tests/model_architectures.py,sha256=83-y4n0LtvpcpXPgawvPGIcvaqaPZ_XgOVEDRgycLmw,10830
572
550
  tf_keras/src/tests/model_subclassing_test_util.py,sha256=tMRAx38exGbDKEUd5kNDRn7Q-epiMPCAxdbAEGSCP6Y,5515
573
551
  tf_keras/src/utils/__init__.py,sha256=HDp6YtwWY9al-pSjokrgj_IzsFi36TWQVGJp3ibTlws,3129
@@ -585,9 +563,9 @@ tf_keras/src/utils/io_utils.py,sha256=XhCTkjwtfBc2hWSenjVdt0-2PsIc2bjJVWEP1880NU
585
563
  tf_keras/src/utils/keras_logging.py,sha256=Fv4eOMemx3Jg1hEdHIxx9GblG5YTnW1q1D1zLF3JxUE,882
586
564
  tf_keras/src/utils/kernelized_utils.py,sha256=s475SAos2zHQ1NT9AHZmbWUSahHKOhdctP6uIou0nRo,4517
587
565
  tf_keras/src/utils/kpl_test_utils.py,sha256=vnaJkySSTVhXsFEdDxNJArwXaah0yPNTK8o_3rYZvOE,7365
588
- tf_keras/src/utils/layer_utils.py,sha256=5SGCXE5Tc8QmCt7JHTbpVjYBkEMtdI7TQ5jC-9VLnCY,41764
566
+ tf_keras/src/utils/layer_utils.py,sha256=cLKqiqJ2em16zZyXaXFErsL6yja28qE6kgPs2TTcdcY,43427
589
567
  tf_keras/src/utils/losses_utils.py,sha256=oPHJSNLY8U57ieQD59vnGHNavZpMpeTZtL7VIlDwwfM,16919
590
- tf_keras/src/utils/metrics_utils.py,sha256=feW5GoiznbQKkxmE3Url2nlXfWgvHMpJPXdGKCdiV_U,39803
568
+ tf_keras/src/utils/metrics_utils.py,sha256=h4F4MGcHrpjthypj-nZ1n2szBrBZj4X0R9cEzMcx75w,39938
591
569
  tf_keras/src/utils/mode_keys.py,sha256=_QYq58qr_b-RhvMYBYnL47NkC0G1ng8NYcVnS_IYi-A,856
592
570
  tf_keras/src/utils/np_utils.py,sha256=4EZ58G1zThQfQEmMNBPnUYRszXRJoY4foxYhOGfS89s,4805
593
571
  tf_keras/src/utils/object_identity.py,sha256=HZEETVcCoBrnIFjnxmBhZaCKP9xQMv9rMr_ihlMveVs,6879
@@ -606,7 +584,7 @@ tf_keras/src/utils/legacy/__init__.py,sha256=EfMmeHYDzwvxNaktPhQbkTdcPSIGCqMhBND
606
584
  tf_keras/utils/__init__.py,sha256=b7_d-USe_EmLo02_P99Q1rUCzKBYayPCfiYFStP-0nw,2735
607
585
  tf_keras/utils/experimental/__init__.py,sha256=DzGogE2AosjxOVILQBT8PDDcqbWTc0wWnZRobCdpcec,97
608
586
  tf_keras/utils/legacy/__init__.py,sha256=7ujlDa5HeSRcth2NdqA0S1P2-VZF1kB3n68jye6Dj-8,189
609
- tf_keras_nightly-2.20.0.dev2025051109.dist-info/METADATA,sha256=7pum9VVRblgMxzdMX-AnMCn92NgwN9jZ-9YV5vER-Dw,1857
610
- tf_keras_nightly-2.20.0.dev2025051109.dist-info/WHEEL,sha256=DnLRTWE75wApRYVsjgc6wsVswC54sMSJhAEd4xhDpBk,91
611
- tf_keras_nightly-2.20.0.dev2025051109.dist-info/top_level.txt,sha256=LC8FK7zHDNKxB17C6lGKvrZ_fZZGJsRiBK23SfiDegY,9
612
- tf_keras_nightly-2.20.0.dev2025051109.dist-info/RECORD,,
587
+ tf_keras_nightly-2.21.0.dev2025123010.dist-info/METADATA,sha256=mMuSxuENfVse58L4xsGvhuHeJ_PYmN4HQTSCzIDhrQE,1857
588
+ tf_keras_nightly-2.21.0.dev2025123010.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
589
+ tf_keras_nightly-2.21.0.dev2025123010.dist-info/top_level.txt,sha256=LC8FK7zHDNKxB17C6lGKvrZ_fZZGJsRiBK23SfiDegY,9
590
+ tf_keras_nightly-2.21.0.dev2025123010.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.4.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,85 +0,0 @@
1
- # Copyright 2020 The TensorFlow Authors. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- # ==============================================================================
15
- """Benchmark for KPL implementation of bucketized columns with dense inputs."""
16
-
17
- import numpy as np
18
- import tensorflow.compat.v2 as tf
19
-
20
- import tf_keras.src as keras
21
- from tf_keras.src.layers.preprocessing import discretization
22
- from tf_keras.src.layers.preprocessing.benchmarks import (
23
- feature_column_benchmark as fc_bm,
24
- )
25
-
26
- # isort: off
27
- from tensorflow.python.eager.def_function import (
28
- function as tf_function,
29
- )
30
-
31
- NUM_REPEATS = 10 # The number of times to run each benchmark.
32
- BATCH_SIZES = [32, 256]
33
-
34
-
35
- ### KPL AND FC IMPLEMENTATION BENCHMARKS ###
36
- def embedding_varlen(batch_size, max_length):
37
- """Benchmark a variable-length embedding."""
38
- # Data and constants.
39
- max_value = 25.0
40
- bins = np.arange(1.0, max_value)
41
- data = fc_bm.create_data(
42
- max_length, batch_size * NUM_REPEATS, 100000, dtype=float
43
- )
44
-
45
- # TF-Keras implementation
46
- model = keras.Sequential()
47
- model.add(keras.Input(shape=(max_length,), name="data", dtype=tf.float32))
48
- model.add(discretization.Discretization(bins))
49
-
50
- # FC implementation
51
- fc = tf.feature_column.bucketized_column(
52
- tf.feature_column.numeric_column("data"), boundaries=list(bins)
53
- )
54
-
55
- # Wrap the FC implementation in a tf.function for a fair comparison
56
- @tf_function()
57
- def fc_fn(tensors):
58
- fc.transform_feature(
59
- tf.__internal__.feature_column.FeatureTransformationCache(tensors),
60
- None,
61
- )
62
-
63
- # Benchmark runs
64
- keras_data = {"data": data.to_tensor(default_value=0.0)}
65
- k_avg_time = fc_bm.run_keras(keras_data, model, batch_size, NUM_REPEATS)
66
-
67
- fc_data = {"data": data.to_tensor(default_value=0.0)}
68
- fc_avg_time = fc_bm.run_fc(fc_data, fc_fn, batch_size, NUM_REPEATS)
69
-
70
- return k_avg_time, fc_avg_time
71
-
72
-
73
- class BenchmarkLayer(fc_bm.LayerBenchmark):
74
- """Benchmark the layer forward pass."""
75
-
76
- def benchmark_layer(self):
77
- for batch in BATCH_SIZES:
78
- name = f"bucketized|dense|batch_{batch}"
79
- k_time, f_time = embedding_varlen(batch_size=batch, max_length=256)
80
- self.report(name, k_time, f_time, NUM_REPEATS)
81
-
82
-
83
- if __name__ == "__main__":
84
- tf.test.main()
85
-
@@ -1,84 +0,0 @@
1
- # Copyright 2020 The TensorFlow Authors. All Rights Reserved.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- # ==============================================================================
15
- """Benchmark for TF-Keras category_encoding preprocessing layer."""
16
-
17
- import time
18
-
19
- import numpy as np
20
- import tensorflow.compat.v2 as tf
21
-
22
- import tf_keras.src as keras
23
- from tf_keras.src.layers.preprocessing import category_encoding
24
-
25
-
26
- class BenchmarkLayer(tf.test.Benchmark):
27
- """Benchmark the layer forward pass."""
28
-
29
- def run_dataset_implementation(
30
- self, output_mode, batch_size, sequence_length, max_tokens
31
- ):
32
- input_t = keras.Input(shape=(sequence_length,), dtype=tf.int32)
33
- layer = category_encoding.CategoryEncoding(
34
- max_tokens=max_tokens, output_mode=output_mode
35
- )
36
- _ = layer(input_t)
37
-
38
- num_repeats = 5
39
- starts = []
40
- ends = []
41
- for _ in range(num_repeats):
42
- ds = tf.data.Dataset.from_tensor_slices(
43
- tf.random.uniform(
44
- [batch_size * 10, sequence_length],
45
- minval=0,
46
- maxval=max_tokens - 1,
47
- dtype=tf.int32,
48
- )
49
- )
50
- ds = ds.shuffle(batch_size * 100)
51
- ds = ds.batch(batch_size)
52
- num_batches = 5
53
- ds = ds.take(num_batches)
54
- ds = ds.prefetch(num_batches)
55
- starts.append(time.time())
56
- # Benchmarked code begins here.
57
- for i in ds:
58
- _ = layer(i)
59
- # Benchmarked code ends here.
60
- ends.append(time.time())
61
-
62
- avg_time = np.mean(np.array(ends) - np.array(starts)) / num_batches
63
- name = "category_encoding|batch_%s|seq_length_%s|%s_max_tokens" % (
64
- batch_size,
65
- sequence_length,
66
- max_tokens,
67
- )
68
- self.report_benchmark(iters=num_repeats, wall_time=avg_time, name=name)
69
-
70
- def benchmark_vocab_size_by_batch(self):
71
- for batch in [32, 256, 2048]:
72
- for sequence_length in [10, 1000]:
73
- for num_tokens in [100, 1000, 20000]:
74
- self.run_dataset_implementation(
75
- output_mode="count",
76
- batch_size=batch,
77
- sequence_length=sequence_length,
78
- max_tokens=num_tokens,
79
- )
80
-
81
-
82
- if __name__ == "__main__":
83
- tf.test.main()
84
-