§
    ‚Štj£B  ã                   óª  — d Z ddlZddlZddlmZmZ ddlmZ ddlm	Z	 ddl
mZmZ ddlmZmZmZmZ dd	lmZ dd
lmZmZ ddlmZ ddlmZ  ej        e¦  «        Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Z  G d„ dej        ¦  «        Z! G d„ dej        ¦  «        Z" G d„ dej        ¦  «        Z# G d„ dej        ¦  «        Z$ G d„ dej        ¦  «        Z%e G d„ de¦  «        ¦   «         Z&e G d„ de&¦  «        ¦   «         Z' ed ¬!¦  «         G d"„ d#e&¦  «        ¦   «         Z( ed$¬!¦  «         G d%„ d&ee&¦  «        ¦   «         Z)g d'¢Z*dS )(zPyTorch ResNet model.é    N)ÚTensorÚnné   )Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚBackboneOutputÚBaseModelOutputWithNoAttentionÚ(BaseModelOutputWithPoolingAndNoAttentionÚ$ImageClassifierOutputWithNoAttention)ÚPreTrainedModel)Úauto_docstringÚlogging)Úcan_return_tupleé   )ÚResNetConfigc                   óž   ‡ — e Zd Z	 	 	 	 	 	 ddededeeeef         z  ded	ed
eeeef         z  dedefˆ fd„Zdej	        dej	        fd„Z
ˆ xZS )ÚResNetConvLayerr   r   FÚreluÚin_channelsÚout_channelsÚkernel_sizeÚstrideÚbiasÚdilationÚgroupsÚ
activationc	           
      ó  •— t          ¦   «                              ¦   «          t          j        |||||dz  |||¬¦  «        | _        t          j        |¦  «        | _        |�t          |         nt          j        ¦   «         | _	        d S )Né   )r   r   r   r   Úpaddingr   r   r   )
ÚsuperÚ__init__r   ÚConv2dÚconvolutionÚBatchNorm2dÚnormalizationr   ÚIdentityr   )
Úselfr   r   r   r   r   r   r   r   Ú	__class__s
            €úh/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/resnet/modeling_resnet.pyr#   zResNetConvLayer.__init__(   s…   ø€ õ 	‰Œ×ÒÑÔÐÝœ9Ø#Ø%Ø#ØØ 1Ñ$ØØØð	
ñ 	
ô 	
ˆÔõ  œ^¨LÑ9Ô9ˆÔØ0:Ð0F�& Ô,Ð,ÍBÌKÉMÌMˆŒˆˆó    Úhidden_statesÚreturnc                 ó„   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|S ©N)r%   r'   r   )r)   r-   s     r+   ÚforwardzResNetConvLayer.forwardA   s?   € Ø×(Ò(¨Ñ7Ô7ˆØ×*Ò*¨=Ñ9Ô9ˆØŸš¨Ñ6Ô6ˆØÐr,   )r   r   Fr   r   r   )Ú__name__Ú
__module__Ú__qualname__ÚintÚtupleÚboolÚstrr#   Útorchr   r1   Ú__classcell__©r*   s   @r+   r   r   '   só   ø€ € € € € ð
 ./ØØØ*+ØØ ðZð ZàðZð ðZð ˜5  c œ?Ñ*ð	Zð
 ðZð ðZð ˜˜c 3˜hœÑ'ðZð ðZð ðZð Zð Zð Zð Zð Zð2 U¤\ð °e´lð ð ð ð ð ð ð ð r,   r   c                   ó8   ‡ — e Zd ZdZdefˆ fd„Zdedefd„Zˆ xZS )ÚResNetEmbeddingszO
    ResNet Embeddings (stem) composed of a single aggressive convolution.
    Úconfigc                 óè   •— t          ¦   «                              ¦   «          t          |j        |j        dd|j        ¬¦  «        | _        t          j        ddd¬¦  «        | _	        |j        | _        d S )Né   r    )r   r   r   r   r   )r   r   r!   )
r"   r#   r   Únum_channelsÚembedding_sizeÚ
hidden_actÚembedderr   Ú	MaxPool2dÚpooler©r)   r>   r*   s     €r+   r#   zResNetEmbeddings.__init__M   so   ø€ Ý‰Œ×ÒÑÔÐÝ'ØÔ Ô!6ÀAÈaÐ\bÔ\mð
ñ 
ô 
ˆŒõ ”l¨q¸ÀAÐFÑFÔFˆŒØ"Ô/ˆÔÐÐr,   Úpixel_valuesr.   c                 ó¨   — |j         d         }|| j        k    rt          d¦  «        ‚|                      |¦  «        }|                      |¦  «        }|S )Nr   zeMake sure that the channel dimension of the pixel values match with the one set in the configuration.)ÚshaperA   Ú
ValueErrorrD   rF   )r)   rH   rA   Ú	embeddings       r+   r1   zResNetEmbeddings.forwardU   s\   € Ø#Ô)¨!Ô,ˆØ˜4Ô,Ò,Ð,ÝØwñô ð ð —M’M ,Ñ/Ô/ˆ	Ø—K’K 	Ñ*Ô*ˆ	ØÐr,   )	r2   r3   r4   Ú__doc__r   r#   r   r1   r:   r;   s   @r+   r=   r=   H   sp   ø€ € € € € ðð ð0˜|ð 0ð 0ð 0ð 0ð 0ð 0ð Fð ¨vð ð ð ð ð ð ð ð r,   r=   c                   óB   ‡ — e Zd ZdZd
dededefˆ fd„Zdedefd	„Zˆ xZS )ÚResNetShortCutzž
    ResNet 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   r   c                 ó¶   •— t          ¦   «                              ¦   «          t          j        ||d|d¬¦  «        | _        t          j        |¦  «        | _        d S )Nr   F)r   r   r   )r"   r#   r   r$   r%   r&   r'   )r)   r   r   r   r*   s       €r+   r#   zResNetShortCut.__init__f   sP   ø€ Ý‰Œ×ÒÑÔÐÝœ9 [°,ÈAÐV\ÐchÐiÑiÔiˆÔÝœ^¨LÑ9Ô9ˆÔÐÐr,   Úinputr.   c                 óZ   — |                       |¦  «        }|                      |¦  «        }|S r0   )r%   r'   )r)   rQ   Úhidden_states      r+   r1   zResNetShortCut.forwardk   s.   € Ø×'Ò'¨Ñ.Ô.ˆØ×)Ò)¨,Ñ7Ô7ˆØÐr,   )r    )	r2   r3   r4   rM   r5   r#   r   r1   r:   r;   s   @r+   rO   rO   `   sƒ   ø€ € € € € ðð ð
:ð : Cð :°sð :ÀCð :ð :ð :ð :ð :ð :ð
˜Vð ¨ð ð ð ð ð ð ð ð r,   rO   c            	       ó<   ‡ — e Zd ZdZd
dedededefˆ fd„Zd	„ Zˆ xZS )ÚResNetBasicLayerzO
    A classic ResNet's residual layer composed by two `3x3` convolutions.
    r   r   r   r   r   r   c                 óP  •— t          ¦   «                              ¦   «          ||k    p|dk    }|rt          |||¬¦  «        nt          j        ¦   «         | _        t          j        t          |||¬¦  «        t          ||d ¬¦  «        ¦  «        | _        t          |         | _
        d S )Nr   ©r   ©r   ©r"   r#   rO   r   r(   ÚshortcutÚ
Sequentialr   Úlayerr   r   )r)   r   r   r   r   Úshould_apply_shortcutr*   s         €r+   r#   zResNetBasicLayer.__init__v   s¥   ø€ Ý‰Œ×ÒÑÔÐØ +¨|Ò ;Ð J¸vÈº{ÐàH]Ðp�N˜;¨¸VÐDÑDÔDÐDÕceÔcnÑcpÔcpð 	Œõ ”]Ý˜K¨¸fÐEÑEÔEÝ˜L¨,À4ÐHÑHÔHñ
ô 
ˆŒ
õ ! Ô,ˆŒˆˆr,   c                 ó’   — |}|                       |¦  «        }|                      |¦  «        }||z  }|                      |¦  «        }|S r0   ©r\   rZ   r   ©r)   rS   Úresiduals      r+   r1   zResNetBasicLayer.forward‚   óJ   € ØˆØ—z’z ,Ñ/Ô/ˆØ—=’= Ñ*Ô*ˆØ˜Ñ ˆØ—’ |Ñ4Ô4ˆØÐr,   )r   r   )	r2   r3   r4   rM   r5   r8   r#   r1   r:   r;   s   @r+   rU   rU   q   sx   ø€ € € € € ðð ð
-ð 
- Cð 
-°sð 
-ÀCð 
-ÐY\ð 
-ð 
-ð 
-ð 
-ð 
-ð 
-ðð ð ð ð ð ð r,   rU   c                   óL   ‡ — e Zd ZdZ	 	 	 	 ddededed	ed
edefˆ fd„Zd„ Zˆ xZ	S )ÚResNetBottleNeckLayera“  
    A classic ResNet's bottleneck layer composed by three `3x3` convolutions.

    The first `1x1` convolution reduces the input by a factor of `reduction` in order to make the second `3x3`
    convolution faster. The last `1x1` convolution remaps the reduced features to `out_channels`. If
    `downsample_in_bottleneck` is true, downsample will be in the first layer instead of the second layer.
    r   r   é   Fr   r   r   r   Ú	reductionÚdownsample_in_bottleneckc           
      ó�  •— t          ¦   «                              ¦   «          ||k    p|dk    }||z  }|rt          |||¬¦  «        nt          j        ¦   «         | _        t          j        t          ||d|r|nd¬¦  «        t          |||s|nd¬¦  «        t          ||dd ¬¦  «        ¦  «        | _        t          |         | _
        d S )Nr   rW   )r   r   )r   r   rY   )
r)   r   r   r   r   rf   rg   r]   Úreduces_channelsr*   s
            €r+   r#   zResNetBottleNeckLayer.__init__”   sì   ø€ õ 	‰Œ×ÒÑÔÐØ +¨|Ò ;Ð J¸vÈº{ÐØ'¨9Ñ4ÐàH]Ðp�N˜;¨¸VÐDÑDÔDÐDÕceÔcnÑcpÔcpð 	Œõ ”]ÝØÐ-¸1ÐOgÐEnÀVÀVÐmnðñ ô õ Ð,Ð.>ÐUmÐGtÀvÀvÐstÐuÑuÔuÝÐ,¨lÈÐVZÐ[Ñ[Ô[ñ
ô 
ˆŒ
õ ! Ô,ˆŒˆˆr,   c                 ó’   — |}|                       |¦  «        }|                      |¦  «        }||z  }|                      |¦  «        }|S r0   r_   r`   s      r+   r1   zResNetBottleNeckLayer.forward¬   rb   r,   )r   r   re   F)
r2   r3   r4   rM   r5   r8   r7   r#   r1   r:   r;   s   @r+   rd   rd   ‹   s£   ø€ € € € € ðð ð Ø ØØ).ð-ð -àð-ð ð-ð ð	-ð
 ð-ð ð-ð #'ð-ð -ð -ð -ð -ð -ð0ð ð ð ð ð ð r,   rd   c                   óN   ‡ — e Zd ZdZ	 	 ddededededef
ˆ fd„Zd	ed
efd„Zˆ xZ	S )ÚResNetStagez4
    A ResNet stage composed by stacked layers.
    r    r>   r   r   r   Údepthc                 ó^  •‡‡‡— t          ¦   «                              ¦   «          ‰j        dk    rt          nt          Š‰j        dk    r ‰|‰|‰j        ‰j        ¬¦  «        }n ‰|‰|‰j        ¬¦  «        }t          j        |gˆˆˆfd„t          |dz
  ¦  «        D ¦   «         ¢R Ž | _
        d S )NÚ
bottleneck)r   r   rg   )r   r   c                 ó6   •— g | ]} ‰‰‰‰j         ¬ ¦  «        ‘ŒS )rX   )rC   )Ú.0Ú_r>   r\   r   s     €€€r+   ú
<listcomp>z(ResNetStage.__init__.<locals>.<listcomp>Ñ   s.   ø€ ÐuÐuÐuÐ_`˜5˜5 ¨|ÈÔHYÐZÑZÔZÐuÐuÐur,   r   )r"   r#   Ú
layer_typerd   rU   rC   rg   r   r[   ÚrangeÚlayers)	r)   r>   r   r   r   rm   Úfirst_layerr\   r*   s	    ` `   @€r+   r#   zResNetStage.__init__º   sá   øøøø€ õ 	‰Œ×ÒÑÔÐà)/Ô):¸lÒ)JÐ)JÕ%Ð%ÕP`ˆàÔ Ò,Ð,Ø˜%ØØØØ!Ô,Ø)/Ô)Hðñ ô ˆKˆKð  ˜% ¨\À&ÐU[ÔUfÐgÑgÔgˆKÝ”mØð
ØuÐuÐuÐuÐuÐuÕdiÐjoÐrsÑjsÑdtÔdtÐuÑuÔuð
ð 
ð 
ˆŒˆˆr,   rQ   r.   c                 ó4   — |}| j         D ]} ||¦  «        }Œ|S r0   )rv   )r)   rQ   rS   r\   s       r+   r1   zResNetStage.forwardÔ   s/   € ØˆØ”[ð 	/ð 	/ˆEØ ˜5 Ñ.Ô.ˆLˆLØÐr,   )r    r    )
r2   r3   r4   rM   r   r5   r#   r   r1   r:   r;   s   @r+   rl   rl   µ   s¦   ø€ € € € € ðð ð Øð
ð 
àð
ð ð
ð ð	
ð
 ð
ð ð
ð 
ð 
ð 
ð 
ð 
ð4˜Vð ¨ð ð ð ð ð ð ð ð r,   rl   c            	       ó@   ‡ — e Zd Zdefˆ fd„Z	 d
dedededefd	„Zˆ xZ	S )ÚResNetEncoderr>   c           
      ó   •— t          ¦   «                              ¦   «          t          j        g ¦  «        | _        | j                             t          ||j        |j        d         |j	        rdnd|j
        d         ¬¦  «        ¦  «         t          |j        |j        dd …         ¦  «        }t          ||j
        dd …         ¦  «        D ]3\  \  }}}| j                             t          ||||¬¦  «        ¦  «         Œ4d S )Nr   r    r   )r   rm   )rm   )r"   r#   r   Ú
ModuleListÚstagesÚappendrl   rB   Úhidden_sizesÚdownsample_in_first_stageÚdepthsÚzip)r)   r>   Úin_out_channelsr   r   rm   r*   s         €r+   r#   zResNetEncoder.__init__Ü   s  ø€ Ý‰Œ×ÒÑÔÐÝ”m BÑ'Ô'ˆŒàŒ×ÒÝØØÔ%ØÔ# AÔ&Ø"Ô<ÐC�q�qÀ!Ø”m AÔ&ðñ ô ñ	
ô 	
ð 	
õ ˜fÔ1°6Ô3FÀqÀrÀrÔ3JÑKÔKˆÝ25°oÀvÄ}ÐUVÐUWÐUWÔGXÑ2YÔ2Yð 	\ð 	\Ñ.Ñ'ˆ[˜,¨ØŒK×Ò�{¨6°;ÀÐTYÐZÑZÔZÑ[Ô[Ð[Ð[ð	\ð 	\r,   FTrS   Úoutput_hidden_statesÚreturn_dictr.   c                 ó´   — |rdnd }| j         D ]}|r||fz   } ||¦  «        }Œ|r||fz   }|st          d„ ||fD ¦   «         ¦  «        S t          ||¬¦  «        S )N© c              3   ó   K  — | ]}|®|V — Œ	d S r0   r‡   )rq   Úvs     r+   ú	<genexpr>z(ResNetEncoder.forward.<locals>.<genexpr>ü   s"   è è € ÐSÐS˜qÀQÀ]˜À]À]À]À]ÐSÐSr,   )Úlast_hidden_stater-   )r}   r6   r   )r)   rS   r„   r…   r-   Ústage_modules         r+   r1   zResNetEncoder.forwardí   s¥   € ð 3Ð<˜˜¸ˆà œKð 	6ð 	6ˆLØ#ð @Ø -°°Ñ ?�à'˜<¨Ñ5Ô5ˆLˆLàð 	<Ø)¨\¨OÑ;ˆMàð 	TÝÐSÐS \°=Ð$AÐSÑSÔSÑSÔSÐSå-Ø*Ø'ð
ñ 
ô 
ð 	
r,   )FT)
r2   r3   r4   r   r#   r   r7   r   r1   r:   r;   s   @r+   rz   rz   Û   s‹   ø€ € € € € ð\˜|ð \ð \ð \ð \ð \ð \ð$ ]að
ð 
Ø"ð
Ø:>ð
ØUYð
à	'ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r,   rz   c                   óh   ‡ — e Zd ZU eed<   dZdZdZddgZ e	j
        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚResNetPreTrainedModelr>   ÚresnetrH   )Úimager   rO   c                 ól  •— t          ¦   «                              |¦  «         t          |t          j        ¦  «        rt          j        |j        dd¬¦  «         d S t          |t          j        ¦  «        rŸt          j	        |j        t          j        d¦  «        ¬¦  «         |j        �it          j        j                             |j        ¦  «        \  }}|dk    rdt          j        |¦  «        z  nd}t          j        |j        | |¦  «         d S d S d|j        j        v r�t          j        |j        ¦  «         t          j        |j        ¦  «         t          j        |j        ¦  «         t          j        |j        ¦  «         t-          |d	d ¦  «        �t          j        |j        ¦  «         d S d S d S )
NÚfan_outr   )ÚmodeÚnonlinearityé   )Úar   r   Ú	BatchNormÚnum_batches_tracked)r"   Ú_init_weightsÚ
isinstancer   r$   ÚinitÚkaiming_normal_ÚweightÚLinearÚkaiming_uniform_ÚmathÚsqrtr   r9   Ú_calculate_fan_in_and_fan_outÚuniform_r*   r2   Úones_Úzeros_Úrunning_meanÚrunning_varÚgetattrr˜   )r)   ÚmoduleÚfan_inrr   Úboundr*   s        €r+   r™   z#ResNetPreTrainedModel._init_weights  s‰  ø€ å‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�bœiÑ(Ô(ð 	8ÝÔ  ¤°YÈVÐTÑTÔTÐTÐTÐTå˜¥¤	Ñ*Ô*ð 	8ÝÔ! &¤-µ4´9¸Q±<´<Ð@Ñ@Ô@Ð@ØŒ{Ð&Ý!œHœM×GÒGÈÌÑVÔV‘	�˜Ø17¸!²°˜�DœI fÑ-Ô-Ñ-Ð-À�Ý”˜fœk¨E¨6°5Ñ9Ô9Ð9Ð9Ð9ð 'Ð&ð
 ˜FÔ,Ô5Ð5Ð5ÝŒJ�v”}Ñ%Ô%Ð%ÝŒK˜œÑ$Ô$Ð$ÝŒK˜Ô+Ñ,Ô,Ð,ÝŒJ�vÔ)Ñ*Ô*Ð*Ý�vÐ4°dÑ;Ô;ÐGÝ”˜FÔ6Ñ7Ô7Ð7Ð7Ð7ð 6Ð5ð
 HÐGr,   )r2   r3   r4   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesr9   Úno_gradr™   r:   r;   s   @r+   rŽ   rŽ     su   ø€ € € € € € àÐÐÑØ ÐØ$€OØ!ÐØ*Ð,<Ð=Ðà€U„]�_„_ð8ð 8ð 8ð 8ñ „_ð8ð 8ð 8ð 8ð 8r,   rŽ   c            
       óX   ‡ — e Zd Zˆ fd„Ze	 	 ddededz  dedz  defd„¦   «         Zˆ xZ	S )	ÚResNetModelc                 ó  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          j        d¦  «        | _	        |  
                    ¦   «          d S )N)r   r   )r"   r#   r>   r=   rD   rz   Úencoderr   ÚAdaptiveAvgPool2drF   Ú	post_initrG   s     €r+   r#   zResNetModel.__init__$  sh   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒÝ(¨Ñ0Ô0ˆŒÝ$ VÑ,Ô,ˆŒÝÔ*¨6Ñ2Ô2ˆŒà�ŠÑÔÐÐÐr,   NrH   r„   r…   r.   c                 ó&  — |�|n| j         j        }|�|n| j         j        }|                      |¦  «        }|                      |||¬¦  «        }|d         }|                      |¦  «        }|s||f|dd …         z   S t          |||j        ¬¦  «        S )N©r„   r…   r   r   )r‹   Úpooler_outputr-   )r>   r„   r…   rD   rµ   rF   r   r-   )	r)   rH   r„   r…   ÚkwargsÚembedding_outputÚencoder_outputsr‹   Úpooled_outputs	            r+   r1   zResNetModel.forward-  sÈ   € ð %9Ð$DÐ Ð È$Ì+ÔJjð 	ð &1Ð%<�k�kÀ$Ä+ÔBYˆàŸ=š=¨Ñ6Ô6ÐàŸ,š,ØÐ3GÐU`ð 'ñ 
ô 
ˆð ,¨AÔ.ÐàŸšÐ$5Ñ6Ô6ˆàð 	LØ% }Ð5¸ÈÈÈÔ8KÑKÐKå7Ø/Ø'Ø)Ô7ð
ñ 
ô 
ð 	
r,   ©NN)
r2   r3   r4   r#   r   r   r7   r   r1   r:   r;   s   @r+   r³   r³   "  s“   ø€ € € € € ðð ð ð ð ð ð -1Ø#'ð	
ð 
àð
ð # T™kð
ð ˜D‘[ð	
ð 
2ð
ð 
ð 
ñ „^ð
ð 
ð 
ð 
ð 
r,   r³   z†
    ResNet Model with an image classification head on top (a linear layer on top of the pooled features), e.g. for
    ImageNet.
    )Úcustom_introc                   ó€   ‡ — e Zd Zˆ fd„Ze	 	 	 	 d	dej        dz  dej        dz  dedz  dedz  de	f
d„¦   «         Z
ˆ xZS )
ÚResNetForImageClassificationc                 óŠ  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        t          j        ¦   «         |j        dk    r%t          j        |j	        d         |j        ¦  «        nt          j
        ¦   «         ¦  «        | _        |                      ¦   «          d S )Nr   éÿÿÿÿ)r"   r#   Ú
num_labelsr³   r�   r   r[   ÚFlattenrž   r   r(   Ú
classifierr·   rG   s     €r+   r#   z%ResNetForImageClassification.__init__U  sŸ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒÝ! &Ñ)Ô)ˆŒåœ-ÝŒJ‰LŒLØEKÔEVÐYZÒEZÐEZ�BŒI�fÔ)¨"Ô-¨vÔ/@ÑAÔAÐAÕ`bÔ`kÑ`mÔ`mñ
ô 
ˆŒð
 	�ŠÑÔÐÐÐr,   NrH   Úlabelsr„   r…   r.   c                 ó@  — |�|n| j         j        }|                      |||¬¦  «        }|r|j        n|d         }|                      |¦  «        }d}	|�|                      ||| j         ¦  «        }	|s|f|dd…         z   }
|	�|	f|
z   n|
S t          |	||j        ¬¦  «        S )a0  
        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)   rH   rÈ   r„   r…   r»   Úoutputsr¾   rË   rÊ   Úoutputs              r+   r1   z$ResNetForImageClassification.forwarda  sÈ   € ð &1Ð%<�k�kÀ$Ä+ÔBYˆà—+’+˜lÐAUÐcn�+ÑoÔoˆà1<ÐL˜Ô-Ð-À'È!Ä*ˆà—’ Ñ/Ô/ˆàˆàÐØ×%Ò% f¨f°d´kÑBÔBˆDàð 	DØ�Y ¨¨¨¤Ñ,ˆFØ'+Ð'7�D�7˜VÑ#Ð#¸VÐCå3¸ÀfÐ\cÔ\qÐrÑrÔrÐrr,   )NNNN)r2   r3   r4   r#   r   r9   ÚFloatTensorÚ
LongTensorr7   r   r1   r:   r;   s   @r+   rÂ   rÂ   N  sÁ   ø€ € € € € ð
ð 
ð 
ð 
ð 
ð ð 26Ø*.Ø,0Ø#'ðsð sàÔ'¨$Ñ.ðsð Ô  4Ñ'ðsð # T™kð	sð
 ˜D‘[ðsð 
.ðsð sð sñ „^ðsð sð sð sð sr,   rÂ   zO
    ResNet backbone, to be used with frameworks like DETR and MaskFormer.
    c                   ó|   ‡ — e Zd ZdZˆ fd„Zeee	 	 d	dede	dz  de	dz  de
fd„¦   «         ¦   «         ¦   «         Zˆ xZS )
ÚResNetBackboneFc                 óì   •— t          ¦   «                              |¦  «         |j        g|j        z   | _        t          |¦  «        | _        t          |¦  «        | _        |  	                    ¦   «          d S r0   )
r"   r#   rB   r   Únum_featuresr=   rD   rz   rµ   r·   rG   s     €r+   r#   zResNetBackbone.__init__‹  sg   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à#Ô2Ð3°fÔ6IÑIˆÔÝ(¨Ñ0Ô0ˆŒÝ$ VÑ,Ô,ˆŒð 	�ŠÑÔÐÐÐr,   NrH   r„   r…   r.   c                 ój  — |�|n| j         j        }|�|n| j         j        }|                      |¦  «        }|                      |dd¬¦  «        }|j        }d}t          | j        ¦  «        D ]\  }	}
|
| j        v r|||	         fz  }Œ|s|f}|r||j        fz  }|S t          ||r|j        ndd¬¦  «        S )ar  
        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, AutoBackbone
        >>> import torch
        >>> from PIL import Image
        >>> import httpx
        >>> from io import BytesIO

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> with httpx.stream("GET", url) as response:
        ...     image = Image.open(BytesIO(response.read()))

        >>> processor = AutoImageProcessor.from_pretrained("microsoft/resnet-50")
        >>> model = AutoBackbone.from_pretrained(
        ...     "microsoft/resnet-50", out_features=["stage1", "stage2", "stage3", "stage4"]
        ... )

        >>> inputs = processor(image, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> feature_maps = outputs.feature_maps
        >>> list(feature_maps[-1].shape)
        [1, 2048, 7, 7]
        ```NTr¹   r‡   )Úfeature_mapsr-   Ú
attentions)
r>   r…   r„   rD   rµ   r-   Ú	enumerateÚstage_namesÚout_featuresr
   )r)   rH   r„   r…   r»   r¼   rÍ   r-   rÖ   ÚidxÚstagerÎ   s               r+   r1   zResNetBackbone.forward•  s  € ðH &1Ð%<�k�kÀ$Ä+ÔBYˆà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð  Ÿ=š=¨Ñ6Ô6Ðà—,’,Ð/ÀdÐX\�,Ñ]Ô]ˆàÔ-ˆàˆÝ# DÔ$4Ñ5Ô5ð 	6ð 	6‰JˆC�Ø˜Ô)Ð)Ð)Ø ¨sÔ!3Ð 5Ñ5�øàð 	Ø"�_ˆFØ#ð 3Ø˜7Ô0Ð2Ñ2�ØˆMåØ%Ø3GÐQ˜'Ô/Ð/ÈTØð
ñ 
ô 
ð 	
r,   r¿   )r2   r3   r4   Úhas_attentionsr#   r   r	   r   r   r7   r
   r1   r:   r;   s   @r+   rÒ   rÒ   ƒ  s°   ø€ € € € € ð €Nðð ð ð ð ð Ø Øð -1Ø#'ð	;
ð ;
àð;
ð # T™kð;
ð ˜D‘[ð	;
ð 
ð;
ð ;
ð ;
ñ „^ñ !Ô ñ Ôð;
ð ;
ð ;
ð ;
ð ;
r,   rÒ   )rÂ   r³   rŽ   rÒ   )+rM   r    r9   r   r   Ú r   r›   Úactivationsr   Úbackbone_utilsr   r	   Úmodeling_outputsr
   r   r   r   Úmodeling_utilsr   Úutilsr   r   Úutils.genericr   Úconfiguration_resnetr   Ú
get_loggerr2   ÚloggerÚModuler   r=   rO   rU   rd   rl   rz   rŽ   r³   rÂ   rÒ   Ú__all__r‡   r,   r+   ú<module>rê      s  ðð Ð à €€€à €€€Ø Ð Ð Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø -Ð -Ð -Ð -Ð -Ð -Ø .Ð .Ð .Ð .Ð .Ð .ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð �b”iñ ô ð ðBð ð ð ð �r”yñ ô ð ð0ð ð ð ð �R”Yñ ô ð ð"ð ð ð ð �r”yñ ô ð ð4'ð 'ð 'ð 'ð '˜BœIñ 'ô 'ð 'ðT#ð #ð #ð #ð #�"”)ñ #ô #ð #ðL&
ð &
ð &
ð &
ð &
�B”Iñ &
ô &
ð &
ðR ð8ð 8ð 8ð 8ð 8˜Oñ 8ô 8ñ „ð8ð: ð(
ð (
ð (
ð (
ð (
Ð'ñ (
ô (
ñ „ð(
ðV €ððñ ô ð,sð ,sð ,sð ,sð ,sÐ#8ñ ,sô ,sñô ð,sð^ €ððñ ô ð
K
ð K
ð K
ð K
ð K
�]Ð$9ñ K
ô K
ñô ð
K
ð\ eÐ
dÐ
d€€€r,   