
    x-j+                        d dl mZ d dlmZ d dl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mZ erd dlmZ d d	lmZmZ d.d+Z G d, d-e          ZdS )/    )annotations)TYPE_CHECKINGN)base)LayerHelper)	ParamAttr)Layerinitializer)Tensor)DataLayout2DParamAttrLikexr
   filter_xscale_xbias_xmean_xvar_xzTensor | Nonefilter_zscale_zbias_zmean_zvar_zstrideintstride_zpaddingdilationgroupsmomentumfloatepsdata_formatr   fuse_addboolhas_shortcutuse_global_statsis_testactstrreturnc                .   t          di t                      }t          j        j        j        j        }t          j        j        j        j        }|                    | j	                  }|                    |d          }|                    | j	        d          }|                    |d          }|                    |d          } |}!|}"|                    | j	        d          }#|                    |d          }$|                    |d          }%|
|                    |d          n|
}&||                    |d          n|}'| |||||||||	|
|d}(|||||||||||||d})||||| |!|"|#|$|%|&|'d}*|
                    d|(|*|)           |S )	Nresnet_unitT)dtypestop_gradient)XFilterXScaleXBiasXMeanXVarXZFilterZScaleZBiasZMeanZVarZ)r   r   r   r   groupr    epsilonr#   r$   r&   r'   r(   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)+r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r"   r#   r$   r&   r'   r(   r)   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_zrL   rN   rM   s+                                              e/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/incubate/operators/resnet_unit.pyr-   r-   "   su   6 33&((33FY&.3NY&.4N

3
3AG
<
<C88D 9  H 66gT 7  F <<D =  L >>D ?  N NM66gT 7  F <<D =  L >>D ?  N > 	11  	2 	
 	
 	
   = 	11  	2 	
 	
 	
    F  "$, E" "&&$"&&$ G 67%     J    c                  Z     e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d0d1 fd*Zd2d3d/Z xZS )4
ResNetUnitzv
    ******Temporary version******.
    ResNetUnit is designed for optimize the performance by using cudnnv8 API.
       ?h㈵>NHWCreluFNnum_channels_xr   num_filtersfilter_sizer   r    r!   r"   r#   r   r)   r*   r$   r%   r&   r'   r(   filter_x_attrParamAttrLike | Nonescale_x_attrbias_x_attrmoving_mean_x_name
str | Nonemoving_var_x_namenum_channels_zr   filter_z_attrscale_z_attrbias_z_attrmoving_mean_z_namemoving_var_z_namer+   Nonec                    t                                                       | _        | _        d _        t
          j                            |dd           _        |dz
  dz   _	        d _
        | _        | _        | _        | _        |	 _        |
 _        | _        | _        ddh}||vrt'          d| d| d           fd	}|dk    }t(          j        j        j        j        }|sddd|g}||||g}||||g}nd|ddg}||||g}||||g}                     || ||          
           _                             |||t7          j        d                     _                             |||d           _                             t?          |t7          j        d          d          ||           _         d j         _!                             t?          |t7          j        d          d          ||           _"        d j"        _!        |
r                     || ||          
           _#                             |||t7          j        d                     _$                             |||d           _%                             t?          |t7          j        d          d          ||           _&        d j&        _!                             t?          |t7          j        d          d          ||           _'        d j'        _!        d S d  _#        d  _$        d  _%        d  _&        d  _'        d S )Nrj      kernel_sizerm   NCHWzconv_format must be one of z, but got conv_format=''c                v    t          j        j                  | z  }d|z  dz  }t          j        d|          S )Ng       @g      ?        )npprod_kernel_sizeINormal)channelsfilter_elem_numstdselfs      rf   _get_default_param_initializerz;ResNetUnit.__init__.<locals>._get_default_param_initializer   s;     gd&7888CO(S0C8C%%%rg   )shapeattrdefault_initializerg      ?)r   r   r.   r   T)r   r   r.   is_biasr   F)namer	   	trainable)r   r   r.   )(super__init___stride	_stride_z	_dilationpaddleutilsconvert_to_listr   _padding_groups	_momentum_eps_data_format_act	_fuse_add_has_shortcut_use_global_stats_is_test
ValueErrorr   rP   rQ   rR   rS   create_parameterr   r   Constantr   r   r   r   r/   r   r   r   r   r   r   )!r   ro   rp   rq   r   r    r"   r#   r)   r$   r&   r'   r(   rr   rt   ru   rv   rx   ry   r   rz   r{   r|   r}   r~   valid_formatr   is_nchwrX   bn_param_shapefilter_x_shapefilter_z_shape	__class__s!   `                               rf   r   zResNetUnit.__init__   s7   6 	!"L88M
 
 %qQ.!	'	!)!1 'l**alaaS^aaa  	& 	& 	& 	& 	&
 '*27 	A{3N	N 	NN  a3N	N 	N --  > >~ N N . 
 

 ,,   !
3	 - 
 
 ++  	 , 
 
 ++'JsOO  
 !  , 
 
 %)!**&JsOO  
 !  + 
 

 $(
  -	 11$"$B$B"% % 2  DM  00$!$$%JsOO	 1  DL //$ $	 0  DK //+ !
3#  
 %$ 0  DK )-DK%..* !
3#  
 %$ /  DJ (,DJ$$$ DMDLDKDKDJJJrg   r   r
   r   r   c                j   | j         r|t          d          t          || j        | j        | j        | j        | j        || j        | j	        | j
        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j        | j         | j        | j        | j        | j                  }|S )Nzz can not be None)r   r   r-   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rZ   s       rf   forwardzResNetUnit.forwardQ  s    > 	2ai0111MLKKJMLKKJLNMNLNIN"MI3
 
6 
rg   )rj   rk   rl   rm   rn   FFFFNNNNNrj   rj   NNNNN)2ro   r   rp   r   rq   r   r   r   r    r!   r"   r!   r#   r   r)   r*   r$   r%   r&   r%   r'   r%   r(   r%   rr   rs   rt   rs   ru   rs   rv   rw   rx   rw   ry   r   r   r   rz   rs   r{   rs   r|   rs   r}   rw   r~   rw   r+   r   )N)r   r
   r   r   r+   r
   )__name__
__module____qualname____doc__r   r   __classcell__)r   s   @rf   ri   ri      s          $*"!&.2-1,0)-(,.2-1,0)-(,3k k k k k k kZ        rg   ri   )4r   r
   r   r
   r   r
   r   r
   r   r
   r   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r!   r#   r   r$   r%   r&   r%   r'   r%   r(   r%   r)   r*   r+   r
   )
__future__r   typingr   numpyr   r   r   paddle.base.layer_helperr   paddle.base.param_attrr   	paddle.nnr   r	   r   r
   paddle._typingr   r   r-   ri    rg   rf   <module>r      s)   # " " " " "                        0 0 0 0 0 0 , , , , , ,       
  ;::::::::y y y yxR R R R R R R R R Rrg   