
    ϑi+                       S SK Jr  S SKJr  S SKrS SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  \(       a  S SKJr  S S	KJrJr                                                      SS
 jr " S S\5      rg)    )annotations)TYPE_CHECKINGN)base)LayerHelper)	ParamAttr)Layerinitializer)Tensor)DataLayout2DParamAttrLikec                   [        S0 [        5       D6n[        R                  R                  R
                  R                  n[        R                  R                  R
                  R                  nUR                  U R                  5      nUR                  USS9nUR                  U R                  SS9nUR                  USS9nUR                  USS9n Un!Un"UR                  U R                  SS9n#UR                  USS9n$UR                  USS9n%U
c  UR                  USS9OU
n&Uc  UR                  USS9OUn'U UUUUUUUUU	U
US.n(UUUUUUUUUUUUUS.n)UUUUU U!U"U#U$U%U&U'S.n*UR                  SU(U*U)S9  U$ )	Nresnet_unitT)dtypestop_gradient)XFilterXScaleXBiasXMeanXVarXZFilterZScaleZBiasZMeanZVarZ)stridestride_zpaddingdilationgroupmomentumepsilondata_formatfuse_addhas_shortcutuse_global_statsis_testact_type)YBitMaskConvX
SavedMeanXSavedInvstdXRunningMeanXRunningVarXConvZ
SavedMeanZSavedInvstdZRunningMeanZRunningVarZ)typeinputsoutputsattrs)r   )r   localsr   coreVarDescVarTypeFP32INT32"create_variable_for_type_inferencer   	append_op)+xfilter_xscale_xbias_xmean_xvar_xzfilter_zscale_zbias_zmean_zvar_zr   r   r   r    groupsr"   epsr$   r%   r&   r'   r(   acthelperbn_param_dtypebit_mask_dtypeoutbit_maskconv_xsaved_mean_xsaved_invstd_xrunning_mean_xrunning_var_xconv_zsaved_mean_zsaved_invstd_zrunning_mean_zrunning_var_zr7   r9   r8   s+                                              e/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/incubate/operators/resnet_unit.pyr   r   "   s6   6 3&(3FYY&&..33NYY&&..44N

3
3AGG
<C88D 9 H 66ggT 7 F <<D = L >>D ? N NM66ggT 7 F <<D = L >>D ? N > 	11  	2 	
   = 	11  	2 	
   F  "$,E" "&&$"&&$G 67%   J    c                     ^  \ rS rSrSr                     S                                                 SU 4S jjjrSS	S jjrSrU =r$ )

ResNetUnit   zj
******Temporary version******.
ResNetUnit is designed for optimize the performance by using cudnnv8 API.
c                "  >^  [         T T ]  5         UT l        UT l        ST l        [
        R                  R                  USS5      T l        US-
  S-  T l	        ST l
        UT l        UT l        UT l        UT l        U	T l        U
T l        UT l        UT l        SS1nUU;  a  ['        SU SU S35      eU 4S	 jnUS:H  n[(        R*                  R,                  R.                  R0                  nU(       d  SSSU/nUUUU/nUUUU/nOSUSS/nUUUU/nUUUU/nT R3                  UUU" U5      S
9T l        T R3                  UUU[6        R8                  " S5      S9T l        T R3                  UUUSS9T l        T R3                  [?        U[6        R8                  " S5      SS9UUS9T l         ST R@                  l!        T R3                  [?        U[6        R8                  " S5      SS9UUS9T l"        ST RD                  l!        U
(       a  T R3                  UUU" U5      S
9T l#        T R3                  UUU[6        R8                  " S5      S9T l$        T R3                  UUUSS9T l%        T R3                  [?        U[6        R8                  " S5      SS9UUS9T l&        ST RL                  l!        T R3                  [?        U[6        R8                  " S5      SS9UUS9T l'        ST RN                  l!        g S T l#        S T l$        S T l%        S T l&        S T l'        g )N      kernel_sizeNHWCNCHWzconv_format must be one of z, but got conv_format=''c                   > [         R                  " TR                  5      U -  nSU-  S-  n[        R                  " SU5      $ )Ng       @g      ?        )npprod_kernel_sizeINormal)channelsfilter_elem_numstdselfs      r`   _get_default_param_initializer;ResNetUnit.__init__.<locals>._get_default_param_initializer   s<     ggd&7&788CO(S0C88C%%ra   )shapeattrdefault_initializerg      ?)ry   rz   r   r{   T)ry   rz   r   is_biasrm   F)namer	   	trainable)rz   ry   r   )(super__init___stride	_stride_z	_dilationpaddleutilsconvert_to_listrp   _padding_groups	_momentum_eps_data_format_act	_fuse_add_has_shortcut_use_global_stats_is_test
ValueErrorr   r;   r<   r=   r>   create_parameterrC   rq   ConstantrD   rE   r   rF   r   rG   rI   rJ   rK   rL   rM   )!rv   num_channels_xnum_filtersfilter_sizer   r"   rO   r$   rP   r%   r&   r'   r(   filter_x_attrscale_x_attrbias_x_attrmoving_mean_x_namemoving_var_x_namenum_channels_zr   filter_z_attrscale_z_attrbias_z_attrmoving_mean_z_namemoving_var_z_namevalid_formatrw   is_nchwrR   bn_param_shapefilter_x_shapefilter_z_shape	__class__s!   `                               r`   r   ResNetUnit.__init__   s   6 	!"LL88M
 %qQ.!	'	!)!1 'l*-l^;RS^R__`a 	&
 '**2277A{3N	N 	N  a3N	N 	N --  >~ N . 

 ,,   !

3	 - 
 ++  	 , 
 ++'JJsO
 !  , 
 %)!**&JJsO
 !  + 

 $(

  11$"$B"% 2 DM  00$!$$%JJsO	 1 DL //$ $	 0 DK //+ !

3#
 %$ 0 DK )-DKK%..* !

3#
 %$ / DJ (,DJJ$ DMDLDKDKDJra   c                V   U R                   (       a  Uc  [        S5      e[        UU R                  U R                  U R
                  U R                  U R                  UU R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                  U R                   U R"                  U R$                  U R&                  U R(                  U R                   U R*                  U R,                  U R.                  U R0                  5      nU$ )Nzz can not be None)r   r   r   rC   rD   rE   rF   rG   rI   rJ   rK   rL   rM   r   r   r   r   r   r   r   r   r   r   r   r   )rv   rB   rH   rT   s       r`   forwardResNetUnit.forwardQ  s    >>ai011MMLLKKKKJJMMLLKKKKJJLLNNMMNNLLNNIINN""MMII3
6 
ra   )r   r   r   r   r   r   r   r   rp   r   r   r   r   r   rE   rK   rC   rI   rF   rL   rD   rJ   rG   rM   )rf   g?gh㈵>ri   reluFFFFNNNNNrf   rf   NNNNN)2r   intr   r   r   r   r   r   r"   floatrO   r   r$   r   rP   strr%   boolr&   r   r'   r   r(   r   r   ParamAttrLike | Noner   r   r   r   r   
str | Noner   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   returnNone)N)rB   r
   rH   Tensor | Noner   r
   )	__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes____classcell__)r   s   @r`   rc   rc      sq    $*"!&.2-1,0)-(,.2-1,0)-(,3kk k 	k
 k k k "k k k k k k ,k +k  *!k" '#k$ &%k& 'k( )k* ,+k, +-k. */k0 '1k2 &3k4 
5k kZ ra   rc   )4rB   r
   rC   r
   rD   r
   rE   r
   rF   r
   rG   r
   rH   r   rI   r   rJ   r   rK   r   rL   r   rM   r   r   r   r   r   r   r   r    r   rN   r   r"   r   rO   r   r$   r   r%   r   r&   r   r'   r   r(   r   rP   r   r   r
   )
__future__r   typingr   numpyrn   r   r   paddle.base.layer_helperr   paddle.base.param_attrr   	paddle.nnr   r	   rq   r
   paddle._typingr   r   r   rc    ra   r`   <module>r      s[   #      0 ,
 :yyy y 	y
 y y y y y y y y y y y  !y" #y$ %y& 
'y( )y* +y, -y. /y0 1y2 
3y4 5yxR Rra   