
    &VfI                     V    d dl Z d dlmZ d dlmZ  G d de j        j                  ZdS )    N)in_stateless_scope)	Operationc                   :    e Zd Zd Zd Zd
dZd Zd Zd Zd Z	d	S )
TorchLayerc                 N    t                      rd S |                                  d S N)r   _track_variablesselfs    Z/var/www/html/software/conda/lib/python3.11/site-packages/keras/src/backend/torch/layer.py_post_buildzTorchLayer._post_build   s/      	F    c                 l    t           j                            d | j        D                       | _        d S )Nc                 R    i | ]$}t          t          |                    |j        %S  )stridvalue).0variables     r   
<dictcomp>z/TorchLayer._track_variables.<locals>.<dictcomp>   s*    NNN8SHNNNr   )torchnnParameterDict	variablestorch_paramsr
   s    r   r	   zTorchLayer._track_variables   s5    !H22NNt~NNN
 
r   Tc                     t          | d          s|                                  t          j        j                            | |          S )Nr   )recurse)hasattrr	   r   r   Module
parameters)r   r   s     r   r!   zTorchLayer.parameters   sC    t^,, 	$!!###x))$)@@@r   c                 ,    t          j        | g|R i |S r   )r   __call__)r   argskwargss      r   forwardzTorchLayer.forward   s#    !$8888888r   c                     ddl m} t          |t          j        j                  r7t          ||          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   s    ****** ueho..	2ue,,	2 N**FFFFFFd$677 2**511U{r   c                     t          | d          r6t          t          |                    }|| j        vr|j        | j        |<   d S d S d S Nr   )r   r   r   r   r   r   r   keys      r   _post_track_variablezTorchLayer._post_track_variable+   s\    4(( 	8bll##C$+++)1!#&&&		8 	8 ,+r   c                     t          | d          r8t          t          |                    }| j                            |           d S d S r0   )r   r   r   r   popr1   s      r   _post_untrack_variablez!TorchLayer._post_untrack_variable2   sN    4(( 	'bll##C!!#&&&&&	' 	'r   N)T)
__name__
__module____qualname__r   r	   r!   r&   r.   r3   r6   r   r   r   r   r      s             
 
 
A A A A
9 9 9  8 8 8' ' ' ' 'r   r   )r   (keras.src.backend.common.stateless_scoper   keras.src.ops.operationr   r   r    r   r   r   r   <module>r<      sj     G G G G G G - - - - - -/' /' /' /' /' /' /' /' /' /'r   