
    ͑i|                        S SK Jr  S SKrS SKJrJr  S SKrSSKJr  SSK	J
r
  SSKJrJrJrJr  SSKJr  SS	KJr  \(       a  S S
KJr  S SKJr  S SKJr   " S S\5      rg)    )annotationsN)TYPE_CHECKINGAny   )unique_name)_append_activation_in_dygraph)	Parameterdtype_is_floatingin_dygraph_modein_pir_mode)LayerHelperBase)	ParamAttr)	Generator)Tensor)Operatorc                     ^  \ rS rSrSU 4S jjrSS jrSSS jjrSSS jjr\SS j5       r	\SS j5       r
SS jr S   SS	 jjr S   SS
 jjrSS jr S       SS jjrSS jrS rSS jrSrU =r$ )LayerHelper'   c                P  > X l         U R                   R                  SS 5      nUce  [        5       (       a$  [        R                  " U5      U R                   S'   O2U R
                  R                  R	                  U5      U R                   S'   [        TU ]!  U R                   S   US9  g )Nname)
layer_type)	kwargsgetr   r   generatemain_program_name_generatorsuper__init__)selfr   r   r   	__class__s       X/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/base/layer_helper.pyr   LayerHelper.__init__(   s    {{vt, <  &1&:&::&FF# %%55>>zJ F# 	V,D    c                V    U R                   R                  5       R                  " U0 UD6$ N)r   current_block	append_op)r   argsr   s      r!   r'   LayerHelper.append_op8   s'      ..0::DKFKKr#   c                   U R                   R                  U/ 5      n/ n[        U[        [        45      (       a+  U H#  nUR                  U R                  U5      5        M%     U$ UR                  U R                  U5      5        U$ r%   )r   r   
isinstancelisttupleappendto_variable)r   input_param_nameinputsretinps        r!   multiple_inputLayerHelper.multiple_input;   ss    !126ftUm,,

4++C01  
 JJt''/0
r#   c                j    U R                  U5      n[        U5      S:w  a  U R                   S3eUS   $ )Nr   z layer only takes one inputr   )r4   lenr   )r   r0   r1   s      r!   inputLayerHelper.inputE   s<    $$%56v;!__%%@AAayr#   c                b    [         R                  " U R                  R                  SS 5      5      $ )N
param_attrr   _to_attrr   r   r   s    r!   r;   LayerHelper.param_attrK   s"    !!$++//,"EFFr#   c                b    [         R                  " U R                  R                  SS 5      5      $ )N	bias_attrr<   r>   s    r!   rA   LayerHelper.bias_attrO   s"    !!$++//+t"DEEr#   c                4   U R                   n[        U[        5      (       a  U/n[        U5      S:w  a  [        U5      U:w  a  [	        S5      e[        U5      S:X  a;  US:w  a5  S /U-  n[        U5       H  n[        R                  " US   5      X4'   M      UnU$ )Nr   zparameter number mismatchr   )r;   r+   r   r7   
ValueErrorrangecopydeepcopy)r   lengthr;   tmpis        r!   multiple_param_attrLayerHelper.multiple_param_attrT   s    __
j),,$Jz?aC
Ov$=899_!fk&6/C6]z!}5 #Jr#   c              #     #    U R                  U5      nU R                  [        U5      5      n[        X#5       S h  vN   g  N7fr%   )r4   rK   r7   zip)r   r0   r1   param_attrss       r!   iter_inputs_and_params"LayerHelper.iter_inputs_and_paramsb   s:      $$%56..s6{;v+++s   :AAAc                    U R                  U5      nS nU H>  nUc  UR                  nM  X4R                  :w  d  M%  [        SU SUR                   35      e   U$ )NzData Type mismatch: z to )r4   dtyperD   )r   r0   r1   rS   eachs        r!   input_dtypeLayerHelper.input_dtypei   s`     $$%56D}

**$ #7wd4::,!OPP	 
 r#   c                    U R                   R                  5       R                  U5      n[        U[        5      (       d  [        SU S35      eU$ )Nzno Parameter name z found)r   global_blockvarr+   r	   rD   )r   r   params      r!   get_parameterLayerHelper.get_parameteru   sH    !!..044T:%++1$v>??r#   c                $   [        UR                  X# 5      nU R                  nU(       d  U$ U R                  XTUR                  SS9n[        5       (       a  X-   $ U R                  UR                  S9nU R                  SU/U/S.SU/0SU0S9  U$ )	a  
Append bias operator and return its output. If the user does not set
bias_attr, append_bias_op will return input_var

:param input_var: the input variable. The len(input_var.shape) is
larger or equal than 2.
:bias_initializer: an instance of a subclass of Initializer used to
initialize the bias
:param dim_start:
:param dim_end: the shape of the bias will be
input_var.shape[dim_start:dim_end]. The bias is broadcasted to other
dimensions and added to input_var to get the output
T)attrshaperS   is_biasrS   elementwise_add)XYOutaxistyper1   outputsattrs)r,   r_   rA   create_parameterrS   r   "create_variable_for_type_inferencer'   )r   	input_var	dim_startdim_endsizerA   brI   s           r!   append_bias_opLayerHelper.append_bias_op|   s      IOOI67NN	!!ioot " 
 === 55IOO5L"#A3/SEN9%	 	 	
 
r#   c                h   U R                   R                  SS 5      nUc  U$ [        U[        5      (       a  SU0nO[	        [        U5      S-   5      eS nSU R                   ;   a?  U R                   R                  S5      (       a  U R                   R                  S5      nX2S'   UR                  S5      n[        5       (       a  [        XU5      nU$ [        5       (       a   [        R                  R                  XU5      $ U R                  UR                  S9nU R                  USU/0SU/0US9  U$ )	Nactrh   z should be unicode or str	use_cudnnra   rc   re   rg   )r   r   r+   str	TypeErrorpopr   r   r   paddle	pir_utilsappend_activation_in_pirrl   rS   r'   )r   rm   ru   rv   act_typeresrI   s          r!   append_activationLayerHelper.append_activation   s   kkooeT*;c33-CCH'BBCC	$++%$++//+*F*F4I(776?/	YOCJ]]##<<Y  99	9PCNNi[)	   Jr#   c                    Ub  [        U5      SL a(  [        R                  R                  R	                  5       $ [        R                  R                  R                  5       $ )NT)r
   rz   nninitializerXavierUniformConstant)r   rS   s     r!   _get_default_initializer$LayerHelper._get_default_initializer   sH    =-e4<99((6688 99((1133r#   c                    U R                   R                  US 5      n[        X25      (       d"  [        SUU R                  UR
                  5      eg )Nz1The input {0} parameter of method {1} must be {2})r   r   r+   rx   r   __name__)r   
param_nameclsrZ   s       r!   is_instanceLayerHelper.is_instance   sG    
D1%%%C	  &r#   )r   )r   rw   r   r   returnNone)r(   r   r   r   r   r   )r8   )r0   rw   r   zlist[Tensor])r0   rw   r   r   )r   r   )rH   intr   zlist[ParamAttr])r0   rw   r   z#Generator[tuple[Tensor, ParamAttr]])r0   rw   r   zNone | paddle.dtype)r   rw   r   r   )r   N)rm   r   rn   r   ro   z
int | Noner   r   )rm   r   r   r   )r   rw   r   r   r   r   )r   
__module____qualname____firstlineno__r   r'   r4   r8   propertyr;   rA   rK   rP   rU   r[   rr   r   r   r   __static_attributes____classcell__)r    s   @r!   r   r   '   s    E L G G F F '., #,	,, '.
 #
	
 LP!!,/!>H!	!H@4 r#   r   )
__future__r   rF   typingr   r   rz    r   dygraph_utilsr   	frameworkr	   r
   r   r   layer_helper_baser   r;   r   collections.abcr   r   paddle.base.frameworkr   r    r#   r!   <module>r      sE    #  %   8  / !).i/ ir#   