
    &Vf                     Z    d dl Zd dlmZ d dlmZ d dlmZ d dlmZ  G d de          Z	dS )    N)tree)KerasAutoTrackable)tf_utils)trackingc                   r     e Zd Zd Zej        j        j        dd            Zd fd	Z	e
d             Z xZS )	TFLayerc                 0    d | _         d | _        g | _        d S N)_saved_model_inputs_spec_saved_model_arg_spec_tracked)selfargskwargss      _/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/backend/tensorflow/layer.py__init__zTFLayer.__init__
   s    (,%%)"    Nc                    | j         dS t          j        t          j        |          }t          j        t          j        |pg           }i }|                                D ]W\  }}t          j        |          }	d |	D             }
t          d |
D                       r?t          j        ||
          ||<   X|| _         |gt          |          z   |f| _
        dS )a  Defines the save spec so that serialization can trace layer calls.

        The TensorSpecs of the call function `inputs`, `args`, and `kwargs` are
        saved into a tuple of `([inputs] + args, kwargs)`.

        Args:
          inputs: possibly nested inputs passed into the call function.
          args: a list of positional arguments passed into call.
          kwargs: a dictionary of keyword arguments passed into call.
        Nc                 6    g | ]}t          j        |          S  )r   get_tensor_spec).0xs     r   
<listcomp>z*TFLayer._set_save_spec.<locals>.<listcomp>%   s#    JJJ!(2155JJJr   c              3      K   | ]}|d u V  	d S r
   r   )r   ss     r   	<genexpr>z)TFLayer._set_save_spec.<locals>.<genexpr>&   s&      1119111111r   )r   r   map_structurer   r   itemsflattenanypack_sequence_aslistr   )r   inputsr   r   inputs_spec	args_speckwargs_speckeykwarg
flat_kwarg
flat_specss              r   _set_save_speczTFLayer._set_save_spec   s     (4F()A6JJ&x'?LL	 ,,.. 	H 	HJCe,,JJJzJJJJ11j11111 #4UJGGK(3%MDOO+&
"""r   
checkpointc                 J   |dk    rHt          | dd           }t          | dd           }t          | dd           }d | _        d | _        d | _         t	                      j        |fi |}|dk    r|| _        || _        || _        | j        D ]}t          | |          }t          |t          j	                  rt          |          ||<   t          |t          j                  rt          |          ||<   t          |t          j                  rt          |          ||<   |S )N
savedmodeltrain_functiontest_functionpredict_function)getattrr0   r1   r2   super_trackable_childrenr   
isinstancer   TrackedListr#   TrackedDictdict
TrackedSet)
r   	save_typer   r0   r1   r2   childrentracked_attrtracked_item	__class__s
            r   r5   zTFLayer._trackable_children0   s=   $$$T+;TBBN#D/4@@M&t-?FF"&D!%D$(D!.577.yCCFCC$$"0D!.D$4D! $ @ @&t\::lH,@AA @-1,-?-?H\*lH,@AA @-1,-?-?H\*lH,?@@ @-1,-?-?H\*r   c                 B    ddl m} ddlm} ddlm} t           |          sdS d}t           |          rt           dd           j        j	        }nt           |          r j	        }|t          j         fd|          g}nv j        }t          |          dk    rCt          |                                          d         }t!          j        | j                  g}nt          j         fd	|          g}t!          j        |
           fd            }|S )z>For SavedModel support: returns the default serving signature.r   )
Functional)Model)
SequentialN_functionalc                 B    t          j        | j        j                  S r
   tf
TensorSpecshapecompute_dtyper   r   s    r   <lambda>z1TFLayer._default_save_signature.<locals>.<lambda>c   s    bmAGT5GHH r      c                 B    t          j        | j        j                  S r
   rF   rK   s    r   rL   z1TFLayer._default_save_signature.<locals>.<lambda>q   s    "-9K"L"L r   )input_signaturec                      |           S r
   r   )r$   r   s    r   serving_defaultz8TFLayer._default_save_signature.<locals>.serving_defaultv   s    4<<r   )keras.src.models.functionalrA   keras.src.models.modelrB   keras.src.models.sequentialrC   r6   r3   rD   inputr   r   _build_shapes_dictlentuplevaluesrG   rH   rJ   function)	r   rA   rB   rC   r$   rO   shapes_dictinput_shaperQ   s	   `        r   _default_save_signaturezTFLayer._default_save_signatureL   s    	;:::::000000::::::$&& 	4tZ((	 mT22>%+FFj)) 	 ZF"HHHH OO 1K;1$$#K$6$6$8$899!<M+t/ABB#
 &LLLL# # 
_	5	5	5	  	  	  	  
6	5	  r   )NN)r-   )__name__
__module____qualname__r   rG   __internal__r    no_automatic_dependency_trackingr,   r5   propertyr]   __classcell__)r?   s   @r   r   r   	   s           _>
 
 
 ?>
>     8 - - X- - - - -r   r   )

tensorflowrG   	keras.srcr   &keras.src.backend.tensorflow.trackabler   keras.src.utilsr   r   r   r   r   r   <module>ri      s              E E E E E E $ $ $ $ $ $ $ $ $ $ $ $q q q q q  q q q q qr   