ó
    ˆŽ¡j¼6  ã                   ó`  • 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          €Ú¸C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/models/regnet/modeling_regnet.pyr   ÚRegNetConvLayer.__init__%   sk   ø€ ô 	‰ÑÔÜŸ9š9ØØØ#ØØ 1Ñ$ØØñ
ˆÔô  Ÿ^š^¨LÓ9ˆÔØ0:Ñ0Fœ& Ñ,ˆ�ÌBÏKÊKËMˆ�ó    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	$ )ÚRegNetEmbeddingséB   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Ñ!6ÀAÈaÐ\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
$ )ÚRegNetShortCutéY   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   ø€ Ü‰ÑÔÜŸ9š9 [ÈAÐV\Ð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	$ )ÚRegNetSELayeréj   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ˆŒÜŸšÜ�IŠI�kÀÑCÜ�GŠG‹IÜ�IŠIÐ&ÀÑCÜ�JŠJ‹Ló	
ˆ�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,   € à—‘˜\Ó*ˆØ—N‘N 6Ó*ˆ	Ø#Ñ/ˆØÐ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­   ø€ Ü‰ÑÔØ +Ñ ;× J¸vÈ¹{ÐÜ�Q˜×(;Ñ(;Ñ;Ó<ˆæH]ŒN˜;¸VÒDÔce×cnÒcnÓcpð 	Œô —]’]Ü˜KÀ1ÐQW×QbÑQbÑcÜ˜L¸vÐag×arÑarÑsÜ˜LÀAÐRVÑ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•   ó?   € ØˆØ—z‘z ,Ó/ˆØ—=‘= Ó*ˆØÑ ˆØ—‘ |Ó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¸#ð 4ÈSð 4ÐZ]÷ 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Æ   ø€ Ü‰ÑÔØ +Ñ ;× J¸vÈ¹{ÐÜ�Q˜×(;Ñ(;Ñ;Ó<ˆæH]ŒN˜;¸VÒDÔce×cnÒcnÓcpð 	Œô —]’]Ü˜KÀ1ÐQW×QbÑQbÑcÜ˜L¸vÐag×arÑarÑsÜ˜,¼¼UÀ;ÐQRÁ?Ó=SÓ9TÑUÜ˜LÀAÐRVÑ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¸#ð 4ÈSð 4ÐZ]÷ 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Ñ 1°SÓ 8•¼lˆä—m’máØØØØñ	ð	
ô BGÀuÈqÁyÔAQÓRÒAQ¸Aˆe�F¨,Ö7ÑAQÑ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Ê   ø€ Ü‰ÑÔÜ—m’m BÓ'ˆŒà�‰×ÑÜØØ×%Ñ%Ø×#Ñ# AÑ&Ø"×<×<‘qÀ!Ø—m‘m AÑ&ñô	
ô ˜f×1Ñ1°6×3FÑ3FÀqÀrÐ3JÓKˆÜ25°oÇ}Á}ÐUVÐUWÐGXÖ2YÑ.Ñ'ˆ[¨Ø�K‰K×Ñœ{¨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Ò$A˜qŸ™Ò$Aùs   ‚Œ	)Úlast_hidden_stateÚhidden_states)r—   Útupler   )r$   r,   rŸ   r    r©   Ústage_modules         r&   r-   ÚRegNetEncoder.forwardî   sc   € ö 3™¸ˆà ŸKœKˆLÞ#Ø -°Ñ ?�á'¨Ó5ŠLñ	 (ö  Ø)¨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                   ój   ^ • \ rS rSr% \\S'   SrSrS/r\	R                  " 5       U 4S j5       rSrU =r$ )ÚRegNetPreTrainedModeli  r<   ÚregnetrG   r|   c                 óX  >• [        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 [        TU ]=  U5        g )NÚfan_outr/   )ÚmodeÚnonlinearityé   )Úar   r   )Ú
isinstancer   r   ÚinitÚkaiming_normal_ÚweightÚLinearÚkaiming_uniform_ÚmathÚsqrtr   ÚtorchÚ_calculate_fan_in_and_fan_outÚuniform_r   Ú_init_weights)r$   ÚmoduleÚfan_inr�   Úboundr%   s        €r&   rÂ   Ú#RegNetPreTrainedModel._init_weights	  sÄ   ø€ ä�fœbŸi™i×(Ñ(Ü× Ò  §¡°YÈVÓTä˜¤§	¡	×*Ñ*Ü×!Ò! &§-¡-´4·9²9¸Q³<Ò@Ø�{‰{Ñ&Ü!ŸH™HŸM™M×GÑGÈÏÉÓV‘	�Ø17¸!³˜œDŸIšI fÓ-Ò-À�Ü—’˜fŸk™k¨E¨6°5Õ9ð 'ô
 ‰GÑ! &Õ)r(   r¢   )r0   r1   r2   r3   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚ_no_split_modulesr¿   Úno_gradrÂ   r6   r7   r8   s   @r&   r¯   r¯     s5   ø‡ àÓØ ÐØ$€OØ'Ð(Ðà
‡]‚]ƒ_ô*ó ö*r(   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Ñ È$Ï+É+×JjÑJjð 	ð &1Ñ%<‘kÀ$Ç+Á+×BYÑBYˆàŸ=™=¨Ó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Ø#'ñ	
àð
ð # T™kð
ð ˜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$ )ÚRegNetForImageClassificationiE  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__M  s‡   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ! &Ó)ˆŒäŸ-š-Ü�JŠJ‹LØEK×EVÑEVÐYZÓEZŒB�IŠI�f×)Ñ)¨"Ñ-¨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
$ [        X˜U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.forwardY  s¯   € ð &1Ñ%<‘kÀ$Ç+Á+×BYÑBYˆà—+‘+˜lÐcn�+Ðoˆæ1<˜×-Ò-À'È!Á*ˆà—‘ Ó/ˆàˆàÑØ×%Ñ% f°d·k±kÓBˆDæØ�Y ¨¨ Ñ,ˆFØ'+Ñ'7�D�7˜VÑ#ÐC¸VÐ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Ü   E  s   ø† õ
ð ð 26Ø*.Ø,0Ø#'ñsà×'Ñ'¨$Ñ.ðsð × Ñ  4Ñ'ðsð # T™kð	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Ó	%€ô�b—i‘iô ô<�r—y‘yô ô.�R—Y‘Yô ô"�B—I‘Iô ô0�2—9‘9ô ô8�2—9‘9ô ô:�"—)‘)ô ôB#k�B—I‘Iô #kðL ô*˜Oó *ó ð*ð* ô(
Ð'ó (
ó ð(
ñV ðñô,sÐ#8ó ,sóð,sò^ S�r(   