
    %h                     x    d dl mZ d Z	 	 	 ddZ G d dej                        Z G d dej                        Zy)	    Nc                     | dk(  rt        j                  d      S | dk(  rt        j                  d      S | dk(  rt        j                         S t	        d|        )NReLUT)inplaceSiLUGELUz!build_act_layer does not support )nnr   r   r   NotImplementedError)	act_layers    6/var/www/html/mariraj/BiRefNet/models/modules/utils.pybuild_act_layerr      sW    Fwwt$$	f	wwt$$	f	wwy
 A)M
NN    c                    g }|dk(  ra|dk(  r|j                  t                      |j                  t        j                  |              |dk(  r|j                  t	                      nv|dk(  rc|dk(  r|j                  t	                      |j                  t        j
                  | |             |dk(  r(|j                  t                      nt        d|       t        j                  | S )NBNchannels_lastLNchannels_first)epsz"build_norm_layer does not support )appendto_channels_firstr   BatchNorm2dto_channels_last	LayerNormr	   
Sequential)dim
norm_layer	in_format
out_formatr   layerss         r   build_norm_layerr      s    
 FT'MM+-.bnnS)*(MM*,-	t	((MM*,-bll3C01))MM+-.!0=? 	?==&!!r   c                   $     e Zd Z fdZd Z xZS )r   c                 "    t         |           y Nsuper__init__self	__class__s    r   r%   zto_channels_first.__init__)       r   c                 *    |j                  dddd      S )Nr            permuter'   xs     r   forwardzto_channels_first.forward,       yyAq!$$r   __name__
__module____qualname__r%   r2   __classcell__r(   s   @r   r   r   '       %r   r   c                   $     e Zd Z fdZd Z xZS )r   c                 "    t         |           y r"   r#   r&   s    r   r%   zto_channels_last.__init__2   r)   r   c                 *    |j                  dddd      S )Nr   r-   r+   r,   r.   r0   s     r   r2   zto_channels_last.forward5   r3   r   r4   r9   s   @r   r   r   0   r:   r   r   )r   r   gư>)torch.nnr   r   r   Moduler   r    r   r   <module>rA      s>    O  / /	"0%		 %%ryy %r   