
    Z j7                     `   S r SSKrSSKrSSKJrJr  SSKJr  SSKJ	r	  SSK
JrJrJr  SSKJr  SS	KJrJr  S
SKJr  \R*                  " \5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r " S S\R0                  5      r \ " S S\5      5       r!\ " S S\!5      5       r"\" S S!9 " S" S#\!5      5       r#/ S$Qr$g)%zPyTorch RegNet model.    N)Tensornn   )initialization)ACT2FN)BaseModelOutputWithNoAttention(BaseModelOutputWithPoolingAndNoAttention$ImageClassifierOutputWithNoAttention)PreTrainedModel)auto_docstringlogging   )RegNetConfigc                   \   ^  \ rS rSr    SS\S\S\S\S\S\S-  4U 4S	 jjjrS
 rSrU =r	$ )RegNetConvLayer$   in_channelsout_channelskernel_sizestridegroups
activationNc           
         > [         TU ]  5         [        R                  " UUUUUS-  USS9U l        [        R
                  " U5      U l        Ub  [        U   U l	        g [        R                  " 5       U l	        g )N   F)r   r   paddingr   bias)
super__init__r   Conv2dconvolutionBatchNorm2dnormalizationr   Identityr   )selfr   r   r   r   r   r   	__class__s          {/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/transformers/models/regnet/modeling_regnet.pyr   RegNetConvLayer.__init__%   sk     	99#1$
  ^^L90:0F&,BKKM    c                 l    U R                  U5      nU R                  U5      nU R                  U5      nU$ N)r    r"   r   r$   hidden_states     r&   forwardRegNetConvLayer.forward;   s6    ''5)),7|4r(   )r   r    r"   )r   r   r   relu)
__name__
__module____qualname____firstlineno__intstrr   r-   __static_attributes____classcell__r%   s   @r&   r   r   $   sk    
 !'ZZ Z 	Z
 Z Z $JZ Z, r(   r   c                   :   ^  \ rS rSrSrS\4U 4S jjrS rSrU =r	$ )RegNetEmbeddingsB   zG
RegNet Embeddings (stem) composed of a single aggressive convolution.
configc                    > [         TU ]  5         [        UR                  UR                  SSUR
                  S9U l        UR                  U l        g )Nr   r   )r   r   r   )r   r   r   num_channelsembedding_size
hidden_actembedderr$   r<   r%   s     r&   r   RegNetEmbeddings.__init__G   sH    '!6!6Aa\b\m\m
 #//r(   c                 z    UR                   S   nX R                  :w  a  [        S5      eU R                  U5      nU$ )Nr   zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.)shaper>   
ValueErrorrA   )r$   pixel_valuesr>   r,   s       r&   r-   RegNetEmbeddings.forwardN   sD    #))!,,,,w  }}\2r(   )rA   r>   )
r0   r1   r2   r3   __doc__r   r   r-   r6   r7   r8   s   @r&   r:   r:   B   s    0| 0 r(   r:   c                   R   ^  \ rS rSrSrSS\S\S\4U 4S jjjrS\S\4S	 jrS
r	U =r
$ )RegNetShortCutY   z
RegNet shortcut, used to project the residual features to the correct size. If needed, it is also used to
downsample the input using `stride=2`.
r   r   r   c                    > [         TU ]  5         [        R                  " XSUSS9U l        [        R
                  " U5      U l        g )Nr   F)r   r   r   )r   r   r   r   r    r!   r"   )r$   r   r   r   r%   s       r&   r   RegNetShortCut.__init___   s8    99[AV\chi^^L9r(   inputreturnc                 J    U R                  U5      nU R                  U5      nU$ r*   r    r"   )r$   rO   r,   s      r&   r-   RegNetShortCut.forwardd   s(    ''.)),7r(   rR   )r   )r0   r1   r2   r3   rI   r4   r   r   r-   r6   r7   r8   s   @r&   rK   rK   Y   s?    
:C :s :C : :
V   r(   rK   c                   >   ^  \ rS rSrSrS\S\4U 4S jjrS rSrU =r	$ )RegNetSELayerj   z|
Squeeze and Excitation layer (SE) proposed in [Squeeze-and-Excitation Networks](https://huggingface.co/papers/1709.01507).
r   reduced_channelsc           
      ,  > [         TU ]  5         [        R                  " S5      U l        [        R
                  " [        R                  " XSS9[        R                  " 5       [        R                  " X!SS9[        R                  " 5       5      U l	        g )Nr   r   r   )r   )
r   r   r   AdaptiveAvgPool2dpooler
Sequentialr   ReLUSigmoid	attention)r$   r   rW   r%   s      r&   r   RegNetSELayer.__init__o   s_    **62IIkCGGIII&CJJL	
r(   c                 R    U R                  U5      nU R                  U5      nX-  nU$ r*   )r[   r_   )r$   r,   pooledr_   s       r&   r-   RegNetSELayer.forwardz   s,    \*NN6*	#/r(   )r_   r[   )
r0   r1   r2   r3   rI   r4   r   r-   r6   r7   r8   s   @r&   rU   rU   j   s%    	
C 	
3 	
 r(   rU   c            	       J   ^  \ rS rSrSrS
S\S\S\S\4U 4S jjjrS rS	r	U =r
$ )RegNetXLayer   zl
RegNet's layer composed by three `3x3` convolutions, same as a ResNet bottleneck layer with reduction = 1.
r<   r   r   r   c                   > [         TU ]  5         X#:g  =(       d    US:g  n[        SX1R                  -  5      nU(       a
  [	        X#US9O[
        R                  " 5       U l        [
        R                  " [        X#SUR                  S9[        X3XFUR                  S9[        X3SS S95      U l        [        UR                     U l        g )Nr   r   r   r   r   r   r   )r   r   maxgroups_widthrK   r   r#   shortcutr\   r   r@   layerr   r   r$   r<   r   r   r   should_apply_shortcutr   r%   s          r&   r   RegNetXLayer.__init__   s     + ; Jv{Q(;(;;<H]N;VDcecncncp 	 ]]K1QWQbQbcLvagararsLARVW


 !!2!23r(   c                 x    UnU R                  U5      nU R                  U5      nX-  nU R                  U5      nU$ r*   rn   rm   r   r$   r,   residuals      r&   r-   RegNetXLayer.forward   ?    zz,/==* |4r(   r   rn   rm   r   r0   r1   r2   r3   rI   r   r4   r   r-   r6   r7   r8   s   @r&   re   re      s9    4| 4# 4S 4Z] 4 4 r(   re   c            	       J   ^  \ rS rSrSrS
S\S\S\S\4U 4S jjjrS rS	r	U =r
$ )RegNetYLayer   z;
RegNet's Y layer: an X layer with Squeeze and Excitation.
r<   r   r   r   c                   > [         TU ]  5         X#:g  =(       d    US:g  n[        SX1R                  -  5      nU(       a
  [	        X#US9O[
        R                  " 5       U l        [
        R                  " [        X#SUR                  S9[        X3XFUR                  S9[        U[        [        US-  5      5      S9[        X3SS S95      U l        [        UR                     U l        g )Nr   rh   ri   rj      )rW   )r   r   rk   rl   rK   r   r#   rm   r\   r   r@   rU   r4   roundrn   r   r   ro   s          r&   r   RegNetYLayer.__init__   s     + ; Jv{Q(;(;;<H]N;VDcecncncp 	 ]]K1QWQbQbcLvagarars,U;QR?=S9TULARVW	

 !!2!23r(   c                 x    UnU R                  U5      nU R                  U5      nX-  nU R                  U5      nU$ r*   rs   rt   s      r&   r-   RegNetYLayer.forward   rw   r(   rx   ry   rz   r8   s   @r&   r|   r|      s9    4| 4# 4S 4Z] 4 4 r(   r|   c                   R   ^  \ rS rSrSr  SS\S\S\S\S\4
U 4S jjjrS	 rS
r	U =r
$ )RegNetStage   z,
A RegNet stage composed by stacked layers.
r<   r   r   r   depthc                    > [         TU ]  5         UR                  S:X  a  [        O[        n[
        R                  " U" UUUUS9/[        US-
  5       Vs/ s H  ov" XU5      PM     snQ76 U l        g s  snf )Nxrh   r   )	r   r   
layer_typere   r|   r   r\   rangelayers)	r$   r<   r   r   r   r   rn   _r%   s	           r&   r   RegNetStage.__init__   s{     	 & 1 1S 8lmm		
 BGuqyAQRAQAeF,7AQR	
 Ss   A3
c                 (    U R                  U5      nU$ r*   r   r+   s     r&   r-   RegNetStage.forward   s    {{<0r(   r   )r   r   rz   r8   s   @r&   r   r      sT     

 
 	

 
 
 
. r(   r   c            	       P   ^  \ rS rSrS\4U 4S jjr S
S\S\S\S\4S jjr	S	r
U =r$ )RegNetEncoder   r<   c           
        > [         TU ]  5         [        R                  " / 5      U l        U R                  R                  [        UUR                  UR                  S   UR                  (       a  SOSUR                  S   S95        [        UR                  UR                  SS  5      n[        X!R                  SS  5       H+  u  u  p4nU R                  R                  [        XXES95        M-     g )Nr   r   r   )r   r   )r   )r   r   r   
ModuleListstagesappendr   r?   hidden_sizesdownsample_in_first_stagedepthszip)r$   r<   in_out_channelsr   r   r   r%   s         r&   r   RegNetEncoder.__init__   s    mmB'%%##A&"<<q!mmA&	
 f1163F3Fqr3JK25o}}UVUWGX2Y.'[KK{6Z[ 3Zr(   r,   output_hidden_statesreturn_dictrP   c                     U(       a  SOS nU R                    H  nU(       a  XA4-   nU" U5      nM     U(       a  XA4-   nU(       d  [        S X4 5       5      $ [        XS9$ )N c              3   .   #    U  H  oc  M  Uv   M     g 7fr*   r   ).0vs     r&   	<genexpr>(RegNetEncoder.forward.<locals>.<genexpr>   s     S$Aq$As   	)last_hidden_statehidden_states)r   tupler   )r$   r,   r   r   r   stage_modules         r&   r-   RegNetEncoder.forward   sc     3 KKL# - ?'5L	 (  )O;MS\$ASSS-jjr(   )r   )FT)r0   r1   r2   r3   r   r   r   boolr   r-   r6   r7   r8   s   @r&   r   r      sH    \| \$ ]ak"k:>kUYk	'k kr(   r   c                   \    \ rS rSr% \\S'   SrSrS/r\	R                  " 5       S 5       rSrg)	RegNetPreTrainedModeli  r<   regnetrG   r|   c                    [        U[        R                  5      (       a!  [        R                  " UR
                  SSS9  g [        U[        R                  5      (       a  [        R                  " UR
                  [        R                  " S5      S9  UR                  bz  [        R                  R                  R                  UR
                  5      u  p#US:  a  S[        R                  " U5      -  OSn[        R                  " UR                  U* U5        g g [        U[        R                  [        R                  45      (       a  [        R                   " UR
                  S5        [        R                   " UR                  S5        [#        USS 5      ba  [        R$                  " UR&                  5        [        R(                  " UR*                  5        [        R$                  " UR,                  5        g g g )	Nfan_outr/   )modenonlinearity   )ar   r   running_mean)
isinstancer   r   initkaiming_normal_weightLinearkaiming_uniform_mathsqrtr   torch_calculate_fan_in_and_fan_outuniform_r!   	GroupNorm	constant_getattrzeros_r   ones_running_varnum_batches_tracked)r$   modulefan_inr   bounds        r&   _init_weights#RegNetPreTrainedModel._init_weights	  sE   fbii((  YVT		**!!&--499Q<@{{&!HHMMGGV	17!DIIf--fkkE659 '  >??NN6==!,NN6;;*v~t4@F//0

6--.F667 A @r(   r   N)r0   r1   r2   r3   r   __annotations__base_model_prefixmain_input_name_no_split_modulesr   no_gradr   r6   r   r(   r&   r   r     s4     $O'(
]]_8 8r(   r   c            
       `   ^  \ rS rSrU 4S jr\  S
S\S\S-  S\S-  S\4S jj5       r	S	r
U =r$ )RegNetModeli  c                    > [         TU ]  U5        Xl        [        U5      U l        [        U5      U l        [        R                  " S5      U l	        U R                  5         g )NrY   )r   r   r<   r:   rA   r   encoderr   rZ   r[   	post_initrB   s     r&   r   RegNetModel.__init__   sI     (0$V,**62r(   NrG   r   r   rP   c                 &   Ub  UOU R                   R                  nUb  UOU R                   R                  nU R                  U5      nU R	                  XRUS9nUS   nU R                  U5      nU(       d	  Xx4USS  -   $ [        UUUR                  S9$ )Nr   r   r   r   )r   pooler_outputr   )r<   r   r   rA   r   r[   r	   r   )	r$   rG   r   r   kwargsembedding_outputencoder_outputsr   pooled_outputs	            r&   r-   RegNetModel.forward)  s     %9$D $++JjJj 	 &1%<k$++BYBY==6,,U` ' 
 ,A.$56%58KKK7/')77
 	
r(   )r<   rA   r   r[   )NN)r0   r1   r2   r3   r   r   r   r   r	   r-   r6   r7   r8   s   @r&   r   r     sR      -1#'	

 #Tk
 D[	
 
2
 
r(   r   z
    RegNet Model with an image classification head on top (a linear layer on top of the pooled features), e.g. for
    ImageNet.
    )custom_introc                      ^  \ rS rSrU 4S jr\    SS\R                  S-  S\R                  S-  S\	S-  S\	S-  S\
4
S	 jj5       rS
rU =r$ )RegNetForImageClassificationiJ  c                   > [         TU ]  U5        UR                  U l        [        U5      U l        [
        R                  " [
        R                  " 5       UR                  S:  a.  [
        R                  " UR                  S   UR                  5      O[
        R                  " 5       5      U l        U R                  5         g )Nr   )r   r   
num_labelsr   r   r   r\   Flattenr   r   r#   
classifierr   rB   s     r&   r   %RegNetForImageClassification.__init__R  s      ++!&)--JJLEKEVEVYZEZBIIf))"-v/@/@A`b`k`k`m

 	r(   NrG   labelsr   r   rP   c                 J   Ub  UOU R                   R                  nU R                  XUS9nU(       a  UR                  OUS   nU R	                  U5      nSn	Ub  U R                  X(U R                   5      n	U(       d  U4USS -   n
U	b  U	4U
-   $ U
$ [        XUR                  S9$ )a  
labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
    Labels for computing the image classification/regression loss. Indices should be in `[0, ...,
    config.num_labels - 1]`. If `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
Nr   r   r   )losslogitsr   )r<   r   r   r   r   loss_functionr
   r   )r$   rG   r   r   r   r   outputsr   r   r   outputs              r&   r-   $RegNetForImageClassification.forward^  s     &1%<k$++BYBY++lcn+o1<--'!*/%%fdkkBDY,F'+'7D7V#CVC3\c\q\qrrr(   )r   r   r   )NNNN)r0   r1   r2   r3   r   r   r   FloatTensor
LongTensorr   r
   r-   r6   r7   r8   s   @r&   r   r   J  s    
  26*.,0#'s''$.s   4's #Tk	s
 D[s 
.s sr(   r   )r   r   r   )%rI   r   r   r   r    r   r   activationsr   modeling_outputsr   r	   r
   modeling_utilsr   utilsr   r   configuration_regnetr   
get_loggerr0   loggerModuler   r:   rK   rU   re   r|   r   r   r   r   r   __all__r   r(   r&   <module>r      s.       & ! 
 . , . 
		H	%bii <ryy .RYY "BII 0299 8299 :")) B#kBII #kL 8O 8 84 (
' (
 (
V ,s#8 ,s,s^ Sr(   