
    ~Wh%                        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/m0Z0 dd$l/m1Z2 dd%l3m4Z4 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Z5eee'e(e)fZ6 ej7                    a8d& Z9 e4d'          d.d)            Z: e4d*          d/d+            Z;d, Z<d0d-Z=dS )1z.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)serialization)
json_utils)generic_utils)
tf_inspect)keras_exportc                  J   t          t          d          si t          _        dt          _        t          j        r3t          j        t          j        j                                        k    rdS i t          _        t          j        j                                        t          _        t          j	        t          j        t          j        t          fd           t          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          j        t          j        d<   t6          j        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                                        rddl m!} |t          j        d<   nddl"m!} |t          j        d<   tF          j$        t          j        d<   tF          j%        t          j        d<   tF          j&        t          j        d<   tF          j'        t          j        d<   tF          j(        t          j        d<   tF          j)        t          j        d<   tF          j*        t          j        d<   tF          j+        t          j        d<   dS )z5Populates dict ALL_OBJECTS with every built-in layer.ALL_OBJECTSNc                 L    t          j        |           ot          |           S Ninspectisclass
issubclassxbase_clss    `/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/keras/layers/serialization.py<lambda>z1populate_deserializable_objects.<locals>.<lambda>z   s     W_Q//KJq(4K4K     )
obj_filterc                 L    t          j        |           ot          |           S r)   r*   r.   s    r1   r2   z1populate_deserializable_objects.<locals>.<lambda>   s     !3!3!O
1h8O8O r3   BatchNormalizationV1BatchNormalizationV2r   )models)SequenceFeatures)LinearModel)WideDeepModelInput	InputSpec
FunctionalModelr9   
Sequentialr:   r;   )DenseFeaturesrA   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   kerasr8   ,keras.feature_column.sequence_feature_columnr9   keras.premade_models.linearr:   keras.premade_models.wide_deepr;   r   r<   r   r=   r>   r?   r@   &keras.feature_column.dense_features_v2rA   #keras.feature_column.dense_featuresr   rB   rC   rD   rE   rF   rG   rH   rI   )r8   r9   r:   r;   rA   r0   s        @r1   populate_deserializable_objectsr\   d   s    5-(( '"& 	#r':'B'B'D'DDD 	E o199;;EH3KKKK    
""$$ 
7OOOO	
 	
 	
 	
 	1 

 	. 

                 "-!2Eg%/%9Ek"&,&7El#!'Eg,<E()&,&7El#'2Em$)6Eo&	""$$ ;	
 	
 	
 	
 	
 	
 .;/**	
 	
 	
 	
 	
 	
 .;/*  '{Ee$+$4Ej!$+$4Ej!#*?Ei #*?Ei #*?Ei '.':Em$&{Eer3   zkeras.layers.serializeFc                 V    |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.
    )legacy_serializationserialize_keras_object)layeruse_legacy_formats     r1   	serializerb      s1    *  B#:5AAA  6u===r3   zkeras.layers.deserializec                     t                       |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)
    ```
    r`   )module_objectscustom_objectsprintable_module_name)r\   r^   deserialize_keras_objectrK   r'   )configre   ra   s      r1   deserializeri      sm    L $%%% 
#< ,)")	
 
 
 	
  8(%%	   r3   c                     t          t          d          st                       t          j                            |           S )z?Returns class if `class_name` is registered, else returns None.r'   )rJ   rK   r\   r'   get)
class_names    r1   get_builtin_layerrm     s7    5-(( *')))  ,,,r3   c                     t                       t          j        | t          j        |          }t          ||          S )z(Instantiates a layer from a JSON string.)rd   re   )r\   r"   decode_and_deserializerK   r'   ri   )json_stringre   rh   s      r1   deserialize_from_jsonrq     sC    #%%%.(%  F
 v~...r3   )F)NFr)   )>__doc__	threadingtensorflow.compat.v2compatv2rM   keras.enginer   r   r   keras.layersr   r   r   r	   r
   r   r   r   r   r   keras.layers.normalizationr   r   r   r   r   keras.layers.preprocessingr   r   r   r   r   r   r   preprocessing_normalizationr   r   keras.layers.rnnr   r   r    keras.saving.legacyr!   r^   keras.saving.legacy.saved_modelr"   keras.utilsr#   r$   r+    tensorflow.python.util.tf_exportr%   rS   rT   localrK   r\   rb   ri   rm   rq    r3   r1   <module>r      s   5 4     ! ! ! ! ! ! ! ! ! # # # # # # $ $ $ $ $ $ # # # # # # # # # # # # " " " " " " & & & & & &       * * * * * *                         ' ' ' ' ' ' " " " " " "       : : : : : : = = = = = = : : : : : : : : : : : : 9 9 9 9 9 9 8 8 8 8 8 8 5 5 5 5 5 5 6 6 6 6 6 6 . . . . . . : : : : : : 5 5 5 5 5 5      5 4 4 4 4 4 9 9 9 9 9 9 * * * * * *             ! ! ! ! ! ! E E E E E E 6 6 6 6 6 6 % % % % % % - - - - - - : 9 9 9 9 9 38  		V+ V+ V+r &''> > > ('>6 ())4 4 4 *)4n- - -/ / / / / /r3   