
    2Vh$                     b    d dl Z d dlmZ d dlmZ  G d de j
                  j                        Zy)    N)in_stateless_scope)	Operationc                   N    e Zd Zed        Zd Zd Z	 	 	 d
dZd Zd Z	d Z
d Zy	)
TorchLayerc                 R    t        | d      s| j                          | j                  S N_torch_params)hasattr_track_variablesr	   selfs    M/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/backend/torch/layer.pytorch_paramszTorchLayer.torch_params   s$    t_-!!#!!!    c                 :    t               ry | j                          y N)r   r   r   s    r   _post_buildzTorchLayer._post_build   s     r   c                     t         j                  j                  | j                  D ci c]  }|j                  |j
                   c}      | _        y c c}w r   )torchnnParameterDict	variablespathvaluer	   r   variables     r   r   zTorchLayer._track_variables   s=     #XX33;?>>JxX]]HNN*J
Js   Ac                     t        | d      s| j                          t        j                  j                  j                  | |||      S r   )r
   r   r   r   Modulenamed_parameters)r   prefixrecurseremove_duplicates       r   r   zTorchLayer.named_parameters   s?     t_-!!#xx//&'#3
 	
r   c                 4    t        j                  | g|i |S r   )r   __call__)r   argskwargss      r   forwardzTorchLayer.forward(   s    !!$8888r   c                     ddl m} t        |t        j                  j
                        r+t        ||      s|dk(  sddlm} t        | |      s ||      }||fS )Nr   )Layerr	   )TorchModuleWrapper)keras.src.layersr)   
isinstancer   r   r   keras.src.utils.torch_utilsr*   )r   namer   r)   r*   s        r   _setattr_hookzTorchLayer._setattr_hook+   sM    * uehhoo.ue,O+Fd$67*51U{r   c                     t        | d      r=|j                  | j                  vr$|j                  | j                  |j                  <   y y y r   )r
   r   r   r   r   s     r   _post_track_variablezTorchLayer._post_track_variable9   s@    4)}}D$5$553;>>!!(--0 6 *r   c                     t        | d      r?|j                  | j                  v r&| j                  j                  |j                         y y y r   )r
   r   r   popr   s     r   _post_untrack_variablez!TorchLayer._post_untrack_variable>   s@    4)}} 1 11!!%%hmm4 2 *r   N) TT)__name__
__module____qualname__propertyr   r   r   r   r'   r/   r1   r4    r   r   r   r      sC    " "
 
 	

9B
5r   r   )r   (keras.src.backend.common.stateless_scoper   keras.src.ops.operationr   r   r   r   r:   r   r   <module>r=      s"     G -:5 :5r   