Ë
    ÜÓ^j£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j6                  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*y)(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 )ÚResNetConvLayerÚin_channelsÚout_channelsÚkernel_sizeÚstrideÚbiasÚdilationÚgroupsÚ
activationc	           
      óô   •— t         ‰	| �  «        t        j                  |||||dz  |||¬«      | _        t        j
                  |«      | _        |�t        |   | _	        y t        j                  «       | _	        y )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
            €úu/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/transformers/models/resnet/modeling_resnet.pyr"   zResNetConvLayer.__init__(   sn   ø€ ô 	‰ÑÔÜŸ9™9Ø#Ø%Ø#ØØ 1Ñ$ØØØô	
ˆÔô  Ÿ^™^¨LÓ9ˆÔØ0:Ð0Fœ& Ñ,ˆ�ÌBÏKÉKËMˆ�ó    Úhidden_statesÚreturnc                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S ©N)r$   r&   r   )r(   r,   s     r*   ÚforwardzResNetConvLayer.forwardA   s6   € Ø×(Ñ(¨Ó7ˆØ×*Ñ*¨=Ó9ˆØŸ™¨Ó6ˆØÐr+   )r   r   Fr   r   Úrelu)Ú__name__Ú
__module__Ú__qualname__ÚintÚtupleÚboolÚstrr"   Útorchr   r0   Ú__classcell__©r)   s   @r*   r   r   '   s¨   ø„ ð
 ./ØØØ*+ØØ ñZàðZð ðZð ˜5  c ™?Ñ*ð	Zð
 ðZð ðZð ˜˜c 3˜h™Ñ'ðZð ðZð õZð2 U§\¡\ð °e·l±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                  | _        y )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   s\   ø€ Ü‰ÑÔÜ'Ø×Ñ ×!6Ñ!6ÀAÈaÐ\b×\mÑ\mô
ˆŒô —l‘l¨q¸ÀAÔFˆŒØ"×/Ñ/ˆÕr+   Úpixel_valuesr-   c                 óœ   — |j                   d   }|| j                  k7  rt        d«      ‚| j                  |«      }| j	                  |«      }|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*   r0   zResNetEmbeddings.forwardU   sT   € Ø#×)Ñ)¨!Ñ,ˆØ˜4×,Ñ,Ò,ÜØwóð ð —M‘M ,Ó/ˆ	Ø—K‘K 	Ó*ˆ	ØÐr+   )	r2   r3   r4   Ú__doc__r   r"   r   r0   r:   r;   s   @r*   r=   r=   H   s'   ø„ ñð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   c                 ó”   •— t         ‰| �  «        t        j                  ||d|d¬«      | _        t        j
                  |«      | _        y )Nr   F)r   r   r   )r!   r"   r   r#   r$   r%   r&   )r(   r   r   r   r)   s       €r*   r"   zResNetShortCut.__init__f   s:   ø€ Ü‰ÑÔÜŸ9™9 [°,ÈAÐV\ÐchÔiˆÔÜŸ^™^¨LÓ9ˆÕr+   Úinputr-   c                 óJ   — | j                  |«      }| j                  |«      }|S r/   )r$   r&   )r(   rQ   Úhidden_states      r*   r0   zResNetShortCut.forwardk   s(   € Ø×'Ñ'¨Ó.ˆØ×)Ñ)¨,Ó7ˆØÐr+   )r   )	r2   r3   r4   rM   r5   r"   r   r0   r:   r;   s   @r*   rO   rO   `   s5   ø„ ññ
: 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   c                 ó  •— t         ‰| �  «        ||k7  xs |dk7  }|rt        |||¬«      nt        j                  «       | _        t        j                  t        |||¬«      t        ||d ¬«      «      | _        t        |   | _
        y )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]ŒN˜;¨¸VÕDÔce×cnÑcnÓcpð 	Œô —]‘]Ü˜K¨¸fÔEÜ˜L¨,À4ÔHó
ˆŒ
ô ! Ñ,ˆ�r+   c                 óz   — |}| j                  |«      }| j                  |«      }||z  }| j                  |«      }|S r/   ©r\   rZ   r   ©r(   rS   Úresiduals      r*   r0   zResNetBasicLayer.forward‚   óA   € ØˆØ—z‘z ,Ó/ˆØ—=‘= Ó*ˆØ˜Ñ ˆØ—‘ |Ó4ˆØÐr+   )r   r1   )	r2   r3   r4   rM   r5   r8   r"   r0   r:   r;   s   @r*   rU   rU   q   s/   ø„ ññ
- 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   r   r   Ú	reductionÚdownsample_in_bottleneckc           
      óF  •— t         ‰	| �  «        ||k7  xs |dk7  }||z  }|rt        |||¬«      nt        j                  «       | _        t        j                  t        ||d|r|nd¬«      t        |||s|nd¬«      t        ||dd ¬«      «      | _        t        |   | _
        y )Nr   rW   )r   r   )r   r   rY   )
r(   r   r   r   r   re   rf   r]   Úreduces_channelsr)   s
            €r*   r"   zResNetBottleNeckLayer.__init__”   s®   ø€ ô 	‰ÑÔØ +¨|Ñ ;Ò J¸vÈ¹{ÐØ'¨9Ñ4ÐáH]ŒN˜;¨¸VÕDÔce×cnÑcnÓcpð 	Œô —]‘]ÜØÐ-¸1ÑOgÁVÐmnôô Ð,Ð.>ÑUmÁvÐstÔuÜÐ,¨lÈÐVZÔ[ó
ˆŒ
ô ! Ñ,ˆ�r+   c                 óz   — |}| j                  |«      }| j                  |«      }||z  }| j                  |«      }|S r/   r_   r`   s      r*   r0   zResNetBottleNeckLayer.forward¬   rb   r+   )r   r1   é   F)
r2   r3   r4   rM   r5   r8   r7   r"   r0   r:   r;   s   @r*   rd   rd   ‹   sZ   ø„ ñð Ø ØØ).ñ-àð-ð ð-ð ð	-ð
 ð-ð ð-ð #'õ-ö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   Údepthc                 ó€  •— t         ‰	| �  «        |j                  dk(  rt        nt        }|j                  dk(  r" |||||j
                  |j                  ¬«      }n |||||j
                  ¬«      }t        j                  |gt        |dz
  «      D �cg c]  } ||||j
                  ¬«      ‘Œ c}¢­Ž | _
        y c c}w )NÚ
bottleneck)r   r   rf   )r   r   r   rX   )r!   r"   Ú
layer_typerd   rU   rC   rf   r   r[   ÚrangeÚlayers)
r(   r>   r   r   r   rm   r\   Úfirst_layerÚ_r)   s
            €r*   r"   zResNetStage.__init__º   s·   ø€ ô 	‰ÑÔà)/×):Ñ):¸lÒ)JÕ%ÔP`ˆà×Ñ Ò,ÙØØØØ!×,Ñ,Ø)/×)HÑ)Hô‰Kñ   ¨\À&ÐU[×UfÑUfÔgˆKÜ—m‘mØð
ÜdiÐjoÐrsÑjsÓdtÖuÐ_`™5 ¨|È×HYÑHYÖZÒuò
ˆ�ùÚus   ÂB;
rQ   r-   c                 ó<   — |}| j                   D ]
  } ||«      }Œ |S r/   )rr   )r(   rQ   rS   r\   s       r*   r0   zResNetStage.forwardÔ   s*   € ØˆØ—[‘[ò 	/ˆEÙ  Ó.‰Lð	/àÐr+   )r   r   )
r2   r3   r4   rM   r   r5   r"   r   r0   r:   r;   s   @r*   rl   rl   µ   sX   ø„ ñð Øñ
àð
ð ð
ð ð	
ð
 ð
ð õ
ð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                  j                  t        ||j                  |j                  d   |j                  rdnd|j                  d   ¬«      «       t        |j                  |j                  dd  «      }t        ||j                  dd  «      D ]0  \  \  }}}| j                  j                  t        ||||¬«      «       Œ2 y )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‘m BÓ'ˆŒà�‰×ÑÜØØ×%Ñ%Ø×#Ñ# AÑ&Ø"×<Ò<‘qÀ!Ø—m‘m AÑ&ôô	
ô ˜f×1Ñ1°6×3FÑ3FÀqÀrÐ3JÓKˆÜ25°oÀvÇ}Á}ÐUVÐUWÐGXÓ2Yò 	\Ñ.Ñ'ˆ[˜,¨Ø�K‰K×Ñœ{¨6°;ÀÐTYÔZÕ[ñ	\r+   rS   Ú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  — | ]	  }|€Œ|–— Œ y ­wr/   r„   )Ú.0Úvs     r*   ú	<genexpr>z(ResNetEncoder.forward.<locals>.<genexpr>ü   s   è ø€ ÒS˜qÀQÁ]œÑSùs   ‚Š)Úlast_hidden_stater,   )rz   r6   r   )r(   rS   r�   r‚   r,   Ústage_modules         r*   r0   zResNetEncoder.forwardí   sv   € ñ 3™¸ˆà ŸK™Kò 	6ˆLÙ#Ø -°°Ñ ?�á'¨Ó5‰Lð		6ñ  Ø)¨\¨OÑ;ˆMáÜÑS \°=Ð$AÔSÓSÐSä-Ø*Ø'ô
ð 	
r+   )FT)
r2   r3   r4   r   r"   r   r7   r   r0   r:   r;   s   @r*   rw   rw   Û   s=   ø„ ð\˜|õ \ð$ ]añ
Ø"ð
Ø:>ð
ØUYð
à	'÷
r+   rw   c                   óf   ‡ — 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                 óÈ  •— t         ‰| �  |«       t        |t        j                  «      r#t        j                  |j                  dd¬«       y t        |t        j                  «      r¹t        j                  |j                  t        j                  d«      ¬«       |j                  �xt        j                  j
                  j                  |j                  «      \  }}|dkD  rdt        j                  |«      z  nd}t        j                  |j                  | |«       y y d|j                   j"                  v rªt        j$                  |j                  «       t        j&                  |j                  «       t        j&                  |j(                  «       t        j$                  |j*                  «       t-        |d	d «      � t        j&                  |j.                  «       y y y )
NÚfan_outr1   )Ú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_inrt   Úboundr)   s        €r*   r—   z#ResNetPreTrainedModel._init_weights  sE  ø€ ä‰Ñ˜fÔ%Ü�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ð 'ð
 ˜F×,Ñ,×5Ñ5Ñ5Ü�J‰J�v—}‘}Ô%Ü�K‰K˜Ÿ™Ô$Ü�K‰K˜×+Ñ+Ô,Ü�J‰J�v×)Ñ)Ô*Ü�vÐ4°dÓ;ÐGÜ—‘˜F×6Ñ6Õ7ð Hð 6r+   )r2   r3   r4   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesr9   Úno_gradr—   r:   r;   s   @r*   rŒ   rŒ     s@   ø… àÓØ ÐØ$€OØ!ÐØ*Ð,<Ð=Ðà€U‡]�]ƒ_ó8ó ô8r+   rŒ   c            
       óR   ‡ — 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«      | _	        | j                  «        y )N)r   r   )r!   r"   r>   r=   rD   rw   Úencoderr   ÚAdaptiveAvgPool2drF   Ú	post_initrG   s     €r*   r"   zResNetModel.__init__$  sK   ø€ Ü‰Ñ˜Ô ØˆŒÜ(¨Ó0ˆŒÜ$ VÓ,ˆŒÜ×*Ñ*¨6Ó2ˆŒà�‰Õr+   NrH   r�   r‚   r-   c                 ó(  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  |«      }| j	                  |||¬«      }|d   }| j                  |«      }|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*   r0   zResNetModel.forward-  s³   € ð %9Ð$DÑ È$Ï+É+×JjÑJjð 	ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆàŸ=™=¨Ó6ÐàŸ,™,ØÐ3GÐU`ð 'ó 
ˆð ,¨AÑ.ÐàŸ™Ð$5Ó6ˆáØ% }Ð5¸ÈÈÐ8KÑKÐKä7Ø/Ø'Ø)×7Ñ7ô
ð 	
r+   ©NN)
r2   r3   r4   r"   r   r   r7   r   r0   r:   r;   s   @r*   r±   r±   "  sR   ø„ ôð ð -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kD  r-t        j                  |j                  d   |j                  «      nt        j                  «       «      | _        | j                  «        y )Nr   éÿÿÿÿ)r!   r"   Ú
num_labelsr±   r�   r   r[   ÚFlattenrœ   r|   r'   Ú
classifierrµ   rG   s     €r*   r"   z%ResNetForImageClassification.__init__U  s‡   ø€ Ü‰Ñ˜Ô Ø ×+Ñ+ˆŒÜ! &Ó)ˆŒäŸ-™-Ü�J‰J‹LØEK×EVÑEVÐYZÒEZŒB�I‰I�f×)Ñ)¨"Ñ-¨v×/@Ñ/@ÔAÔ`b×`kÑ`kÓ`mó
ˆŒð
 	�‰Õr+   NrH   Úlabelsr�   r‚   r-   c                 óB  — |�|n| j                   j                  }| j                  |||¬«      }|r|j                  n|d   }| j	                  |«      }d}	|�| j                  ||| j                   «      }	|s|f|dd z   }
|	�|	f|
z   S |
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*   r0   z$ResNetForImageClassification.forwarda  s¶   € ð &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆà—+‘+˜lÐAUÐcn�+Óoˆá1<˜×-Ò-À'È!Á*ˆà—‘ Ó/ˆàˆàÐØ×%Ñ% f¨f°d·k±kÓBˆDáØ�Y ¨¨ Ñ,ˆFØ'+Ð'7�D�7˜VÑ#ÐC¸VÐCä3¸ÀfÐ\c×\qÑ\qÔrÐrr+   )NNNN)r2   r3   r4   r"   r   r9   ÚFloatTensorÚ
LongTensorr7   r   r0   r:   r;   s   @r*   rÀ   rÀ   N  s   ø„ ô
ð ð 26Ø*.Ø,0Ø#'ñsà×'Ñ'¨$Ñ.ðsð × Ñ  4Ñ'ðsð # T™kð	sð
 ˜D‘[ðsð 
.òsó ôsr+   rÀ   zO
    ResNet backbone, to be used with frameworks like DETR and MaskFormer.
    c                   ój   ‡ — 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        |«      | _        | j                  «        y r/   )
r!   r"   rB   r|   Únum_featuresr=   rD   rw   r³   rµ   rG   s     €r*   r"   zResNetBackbone.__init__‹  sP   ø€ Ü‰Ñ˜Ô à#×2Ñ2Ð3°f×6IÑ6IÑIˆÔÜ(¨Ó0ˆŒÜ$ VÓ,ˆŒð 	�‰Õr+   NrH   r�   r‚   r-   c                 ó°  — |�|n| j                   j                  }|�|n| j                   j                  }| j                  |«      }| j	                  |dd¬«      }|j
                  }d}t        | j                  «      D ]  \  }	}
|
| j                  v sŒ|||	   fz  }Œ |s|f}|r||j
                  fz  }|S t        ||r|j
                  d¬«      S 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*   r0   zResNetBackbone.forward•  sÿ   € ðH &1Ð%<‘kÀ$Ç+Á+×BYÑBYˆà$8Ð$DÑ È$Ï+É+×JjÑJjð 	ð  Ÿ=™=¨Ó6Ðà—,‘,Ð/ÀdÐX\�,Ó]ˆà×-Ñ-ˆàˆÜ# D×$4Ñ$4Ó5ò 	6‰JˆC�Ø˜×)Ñ)Ò)Ø ¨sÑ!3Ð 5Ñ5‘ð	6ñ Ø"�_ˆFÙ#Ø˜7×0Ñ0Ð2Ñ2�ØˆMäØ%Ù3G˜'×/Ñ/Øô
ð 	
àMQØô
ð 	
r+   r½   )r2   r3   r4   Úhas_attentionsr"   r   r	   r   r   r7   r
   r0   r:   r;   s   @r*   rÐ   rÐ   ƒ  si   ø„ ð €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   rw   rŒ   r±   rÀ   rÐ   Ú__all__r„   r+   r*   ú<module>rè      sR  ðñ ã ã ß å &Ý !ß H÷ó õ .ß ,Ý -Ý .ð 
ˆ×	Ñ	˜HÓ	%€ô�b—i‘iô ôB�r—y‘yô ô0�R—Y‘Yô ô"�r—y‘yô ô4'˜BŸI™Iô 'ôT#�"—)‘)ô #ôL&
�B—I‘Iô &
ðR ô8˜Oó 8ó ð8ð: ô(
Ð'ó (
ó ð(
ñV ðôô,sÐ#8ó ,sóð,sñ^ ðôô
K
�]Ð$9ó K
óð
K
ò\ e�r+   