
    9it                         S r SSKrSSKJs  Jr  SSKJr  SSKJrJrJ	r	J
r
Jr  SSKJr  S/r " S S\
5      r " S S	\R                  5      rg)
zSplit-Attention    N)nn)BatchNorm2dConv2dLinearModuleReLU)_pairSplAtConv2dc                   L   ^  \ rS rSrSr           SU 4S jjrS rSrU =r$ )r
      zSplit-Attention Conv2d
    c                   > [         [        U ]  5         [        U5      nU=(       a    US   S:  =(       d    US   S:  U l        Xl        [        X-  U
-  S5      nXl        Xpl        X l	        Xl
        U R                  (       a  [        UX)-  UUUU4Xy-  US.UD6U l        O[        UX)-  UUUU4Xy-  US.UD6U l        US LU l        U R                  (       a  U" X)-  5      U l        [        SS9U l        [        UUSU R                  S9U l        U R                  (       a  U" U5      U l        [        UX)-  SU R                  S9U l        US:  a  [)        US	5      U l        [-        X5      U l        g )
Nr          )groupsbiasT)inplace)r              )superr
   __init__r	   rectifyrectify_avgmaxradixcardinalitychannelsdropblock_probr   convuse_bnbn0r   relufc1bn1fc2DropBlock2D	dropblockrSoftMaxrsoftmax)selfin_channelsr   kernel_sizestridepaddingdilationr   r   r   reduction_factorr   r   
norm_layerr   kwargsinter_channels	__class__s                    m/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/models/cv/animal_recognition/splat.pyr   SplAtConv2d.__init__   s     	k4)+.EGAJN$Dgaj1n&[04DDbI
! ,<< 	 ~	 	DI  	 ~	 	DI !,;;!("23DH&	(NAd>N>NO;;!.1DHH,a8H8HJC(;DN /    c                    U R                  U5      nU R                  (       a  U R                  U5      nU R                  S:  a  U R	                  U5      nU R                  U5      nUR                  S S u  p#U R                  S:  a.  [        R                  " XU R                  -  SS9n[        U5      nOUn[        R                  " US5      nU R                  U5      nU R                  (       a  U R                  U5      nU R                  U5      nU R                  U5      nU R!                  U5      R#                  USSS5      nU R                  S:  a^  [        R                  " XcU R                  -  SS9n[        [%        UW5       VV	s/ s H	  u  pX-  PM     sn	n5      n
U
R'                  5       $ Xa-  n
U
R'                  5       $ s  sn	nf )Nr      r   dim)r   r   r    r   r&   r!   shaper   torchsplitsumFadaptive_avg_pool2dr"   r#   r$   r(   viewzip
contiguous)r)   xbatchrchannelsplitedgapattenattensattr>   outs              r4   forwardSplAtConv2d.forwardO   sp   IIaL;;A$q!AIIaL''"1+::>kk!%;CGg,CC##C+hhsm;;((3-Ciine$))%Q:::>[[DJJ(>AFFs677KL7K|s{7KLMC ~~ )C~~ Ms   G
)r    r#   r   r   r   r&   r   r"   r$   r   r   r   r!   r(   r   )r   r   )r   r   rP   r   Tr8      FFNr   )	__name__
__module____qualname____firstlineno____doc__r   rN   __static_attributes____classcell__r3   s   @r4   r
   r
      s;      "#"  #:0x   r6   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )r'   o   c                 :   > [         TU ]  5         Xl        X l        g )N)r   r   r   r   )r)   r   r   r3   s      r4   r   rSoftMax.__init__q   s    
&r6   c                 4   UR                  S5      nU R                  S:  a`  UR                  X R                  U R                  S5      R	                  SS5      n[
        R                  " USS9nUR                  US5      nU$ [        R                  " U5      nU$ )Nr   r   r;   r8   r9   )
sizer   rB   r   	transposer@   softmaxreshaper=   sigmoid)r)   rE   rF   s      r4   rN   rSoftMax.forwardv   s    q	::>u..

B?II!QOA		!#A		%$A  a Ar6   )r   r   )rR   rS   rT   rU   r   rN   rW   rX   rY   s   @r4   r'   r'   o   s    '
 r6   r'   )rV   r=   torch.nn.functionalr   
functionalr@   torch.nnr   r   r   r   r   torch.nn.modules.utilsr	   __all__r
   r'    r6   r4   <module>rk      sE         > > (/] & ] @ryy r6   