Ë
     |hè'  ã                   ó”  — d Z ddlZddlmc mZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddl
mZ ddl
mZ dd	l
mZ dd
l
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z# ddlm$Z$ ddlm%Z% ddl&m'Z' ddl&m(Z( dd l&m)Z) dd!l*m+Z+ dd"l,m-Z- dd#l.m/Z0 dd$l1m2Z2 dd%l3m4Z4 dd&l3m5Z6 dd'l7m8Z8 eeeeeeeeeeeeee eeeeeeee!e#e$e%fZ9eee'e(e)fZ: ejv                  «       a<d(„ Z= e8d)«      d/d*„«       Z> e8d+«      d0d,„«       Z?d-„ Z@d1d.„ZAy)2z.Layer serialization/deserialization functions.é    N)Ú
base_layer)Úinput_layer)Ú
input_spec)Ú
activation)Ú	attention)Úconvolutional)Úcore)Úlocally_connected)Úmerging)Úpooling)Úregularization)Ú	reshaping)Úrnn)Úbatch_normalization)Úbatch_normalization_v1)Úgroup_normalization)Úlayer_normalization)Úunit_normalization)Úcategory_encoding)Údiscretization)Úhashed_crossing)Úhashing)Úimage_preprocessing)Úinteger_lookup)Únormalization)Ústring_lookup)Útext_vectorization)Úcell_wrappers)Úgru)Úlstm)Úbase_metric)Úserialization_lib)Úserialization)Ú
json_utils)Úgeneric_utils)Ú
tf_inspect)Úkeras_exportc                  ó   ‡— t        t        d«      si t        _        dt        _        t        j                  r:t        j                  t        j
                  j                  j                  «       k(  ryi t        _        t        j
                  j                  j                  «       t        _        t        j                  Št        j                  t        j                  t        ˆfd„¬«       t        j
                  j                  j                  «       r-t        j                  t        j                  t        ˆfd„¬«       t        j                  t        j                  d<   t         j                  t        j                  d<   dd	lm}  dd
lm} ddlm} ddlm} t2        j4                  t        j                  d<   t6        j8                  t        j                  d<   | j:                  t        j                  d<   | j<                  t        j                  d<   |t        j                  d<   | j>                  t        j                  d<   |t        j                  d<   |t        j                  d<   t        j
                  j                  j                  «       rddl m!} |t        j                  d<   nddl"m!} |t        j                  d<   tF        jH                  t        j                  d<   tF        jJ                  t        j                  d<   tF        jL                  t        j                  d<   tF        jN                  t        j                  d<   tF        jP                  t        j                  d<   tF        jR                  t        j                  d<   tF        jT                  t        j                  d<   tF        jV                  t        j                  d<   y)z5Populates dict ALL_OBJECTS with every built-in layer.ÚALL_OBJECTSNc                 óJ   •— t        j                  | «      xr t        | ‰«      S ©N©ÚinspectÚisclassÚ
issubclass©ÚxÚbase_clss    €ú`/var/www/html/test/engine/venv/lib/python3.12/site-packages/tf_keras/src/layers/serialization.pyú<lambda>z1populate_deserializable_objects.<locals>.<lambda>|   s   ø€ œWŸ_™_¨QÓ/ÒK´J¸qÀ(Ó4K€ ó    )Ú
obj_filterc                 óJ   •— t        j                  | «      xr t        | ‰«      S r+   r,   r0   s    €r3   r4   z1populate_deserializable_objects.<locals>.<lambda>„   s   ø€ ¤§¡°Ó!3Ò!O¼
À1ÀhÓ8O€ r5   ÚBatchNormalizationV1ÚBatchNormalizationV2r   )Úmodels)ÚSequenceFeatures)ÚLinearModel)ÚWideDeepModelÚInputÚ	InputSpecÚ
FunctionalÚModelr;   Ú
Sequentialr<   r=   )ÚDenseFeaturesrC   ÚaddÚsubtractÚmultiplyÚaverageÚmaximumÚminimumÚconcatenateÚdot),ÚhasattrÚLOCALr)   ÚGENERATED_WITH_V2ÚtfÚ__internal__Útf2Úenabledr   ÚLayerr%   Ú!populate_dict_with_module_objectsÚALL_MODULESÚALL_V2_MODULESr   ÚBatchNormalizationr   Útf_keras.srcr:   Ú3tf_keras.src.feature_column.sequence_feature_columnr;   Ú"tf_keras.src.premade_models.linearr<   Ú%tf_keras.src.premade_models.wide_deepr=   r   r>   r   r?   r@   rA   rB   Ú-tf_keras.src.feature_column.dense_features_v2rC   Ú*tf_keras.src.feature_column.dense_featuresr   rD   rE   rF   rG   rH   rI   rJ   rK   )r:   r;   r<   r=   rC   r2   s        @r3   Úpopulate_deserializable_objectsr^   f   s«  ø€ ô ”5˜-Ô(ØŒÔØ"&ŒÔô 	×ÒÜ×#Ñ#¤r§¡×':Ñ':×'BÑ'BÓ'DÒDð 	à„EÔÜ Ÿo™o×1Ñ1×9Ñ9Ó;„EÔä×Ñ€HÜ×3Ñ3Ü×ÑÜÛKõô 
‡×Ñ×"Ñ"Ô$Ü×7Ñ7Ü×ÑÜÛOõ	
ô 	×1Ñ1ô 
×ÑØñô
 	×.Ñ.ô 
×ÑØñõ
 $õõõô "-×!2Ñ!2„E×ÑgÑÜ%/×%9Ñ%9„E×ÑkÑ"Ø&,×&7Ñ&7„E×ÑlÑ#Ø!'§¡„E×ÑgÑØ,<„E×ÑÐ(Ñ)Ø&,×&7Ñ&7„E×ÑlÑ#Ø'2„E×ÑmÑ$Ø)6„E×ÑoÑ&ä	‡×Ñ×"Ñ"Ô$õ	
ð .;Œ×Ñ˜/Ò*õ	
ð .;Œ×Ñ˜/Ñ*ô  'Ÿ{™{„E×ÑeÑÜ$+×$4Ñ$4„E×ÑjÑ!Ü$+×$4Ñ$4„E×ÑjÑ!Ü#*§?¡?„E×ÑiÑ Ü#*§?¡?„E×ÑiÑ Ü#*§?¡?„E×ÑiÑ Ü'.×':Ñ':„E×ÑmÑ$Ü&Ÿ{™{„E×ÑeÒr5   zkeras.layers.serializec                 ó¬   — t        | t        j                  «      rt        d| › d«      ‚|rt	        j
                  | «      S t        j
                  | «      S )a   Serializes a `Layer` object into a JSON-compatible representation.

    Args:
      layer: The `Layer` object to serialize.

    Returns:
      A JSON-serializable dict representing the object's config.

    Example:

    ```python
    from pprint import pprint
    model = tf.keras.models.Sequential()
    model.add(tf.keras.Input(shape=(16,)))
    model.add(tf.keras.layers.Dense(32, activation='relu'))

    pprint(tf.keras.layers.serialize(model))
    # prints the configuration of the model, as a dict.
    zCannot serialize zŽ since it is a metric. Please use the `keras.metrics.serialize()` and `keras.metrics.deserialize()` APIs to serialize and deserialize metrics.)Ú
isinstancer!   ÚMetricÚ
ValueErrorÚlegacy_serializationÚserialize_keras_objectr"   )ÚlayerÚuse_legacy_formats     r3   Ú	serializerg   ¿   sY   € ô* %œ×+Ñ+Ô,ÜØ ˜wð ''ð 'ó
ð 	
ñ Ü#×:Ñ:¸5ÓAÐAä×3Ñ3°EÓ:Ð:r5   zkeras.layers.deserializec                 óÖ   — t        «        | st        d| › «      ‚|r't        j                  | t        j
                  |d¬«      S t        j                  | t        j
                  |d¬«      S )a8  Instantiates a layer from a config dictionary.

    Args:
        config: dict of the form {'class_name': str, 'config': dict}
        custom_objects: dict mapping class names (or function names) of custom
          (non-Keras) objects to class/functions

    Returns:
        Layer instance (may be Model, Sequential, Network, Layer...)

    Example:

    ```python
    # Configuration of Dense(32, activation='relu')
    config = {
      'class_name': 'Dense',
      'config': {
        'activation': 'relu',
        'activity_regularizer': None,
        'bias_constraint': None,
        'bias_initializer': {'class_name': 'Zeros', 'config': {}},
        'bias_regularizer': None,
        'dtype': 'float32',
        'kernel_constraint': None,
        'kernel_initializer': {'class_name': 'GlorotUniform',
                               'config': {'seed': None}},
        'kernel_regularizer': None,
        'name': 'dense',
        'trainable': True,
        'units': 32,
        'use_bias': True
      }
    }
    dense_layer = tf.keras.layers.deserialize(config)
    ```
    z2Cannot deserialize empty config. Received: config=re   )Úmodule_objectsÚcustom_objectsÚprintable_module_name)r^   rb   rc   Údeserialize_keras_objectrM   r)   r"   )Úconfigrj   rf   s      r3   Údeserializern   á   sv   € ôL $Ô%ÙÜØ@ÀÀÐIó
ð 	
ñ Ü#×<Ñ<ØÜ ×,Ñ,Ø)Ø")ô	
ð 	
ô ×5Ñ5ØÜ×(Ñ(Ø%Ø%ô	ð r5   c                 ót   — t        t        d«      s
t        «        t        j                  j	                  | «      S )z?Returns class if `class_name` is registered, else returns None.r)   )rL   rM   r^   r)   Úget)Ú
class_names    r3   Úget_builtin_layerrr     s)   € ä”5˜-Ô(Ü'Ô)Ü×Ñ× Ñ  Ó,Ð,r5   c                 óz   — t        «        t        j                  | t        j                  |¬«      }t        ||«      S )z(Instantiates a layer from a JSON string.)ri   rj   )r^   r$   Údecode_and_deserializerM   r)   rn   )Újson_stringrj   rm   s      r3   Údeserialize_from_jsonrv   #  s6   € ä#Ô%Ü×.Ñ.ØÜ×(Ñ(Ø%ô€Fô
 v˜~Ó.Ð.r5   )F)NFr+   )BÚ__doc__Ú	threadingÚtensorflow.compat.v2ÚcompatÚv2rO   Útf_keras.src.enginer   r   r   Útf_keras.src.layersr   r   r   r	   r
   r   r   r   r   r   Ú!tf_keras.src.layers.normalizationr   r   r   r   r   Ú!tf_keras.src.layers.preprocessingr   r   r   r   r   r   r   Úpreprocessing_normalizationr   r   Útf_keras.src.layers.rnnr   r   r    Útf_keras.src.metricsr!   Útf_keras.src.savingr"   Útf_keras.src.saving.legacyr#   rc   Ú&tf_keras.src.saving.legacy.saved_modelr$   Útf_keras.src.utilsr%   r&   r-   Ú tensorflow.python.util.tf_exportr'   rU   rV   ÚlocalrM   r^   rg   rn   rr   rv   © r5   r3   ú<module>rŠ      sK  ðñ 5ã ç !Ð !å *Ý +Ý *Ý *Ý )Ý -Ý $Ý 1Ý 'Ý 'Ý .Ý )Ý #Ý AÝ DÝ AÝ AÝ @Ý ?Ý <Ý =Ý 5Ý AÝ <õõ <Ý @Ý 1Ý 'Ý (Ý ,Ý 1Ý LÝ =Ý ,Ý 4õ :ð ØØØØØØØØØØØØØØØØØØØØØØØØð3€ð8 ØØØØð€ð 	ˆ	‰Ó€òV+ñr Ð&Ó'ò;ó (ð;ñB Ð(Ó)ò7ó *ð7òt-ô/r5   