ó
    ‡Ž¡j´C  ã                   ó€  • S r SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	J
r
  SSKJrJr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Jr  SSKJr  SSKJr  \R>                  " \ 5      r! " S S\RD                  5      r# " S S\RH                  5      r% " S S\RD                  5      r& " S S\RD                  5      r' " S S\RD                  5      r( " S S\RD                  5      r)\ " S S\5      5       r* " S S\*5      r+\ " S  S!\*5      5       r,\" S"S#9 " S$ S%\*5      5       r-\" S&S#9 " S' S(\	\*5      5       r./ S)Qr/g)*zPyTorch ConvNextV2 model.é    N)Únné   )Úinitialization)ÚACT2FN)ÚBackboneMixinÚfilter_output_hidden_states)ÚBackboneOutputÚBaseModelOutputWithNoAttentionÚ(BaseModelOutputWithPoolingAndNoAttentionÚ$ImageClassifierOutputWithNoAttention)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚlogging)Úcan_return_tupleÚmerge_with_config_defaults)Úcapture_outputsé   )ÚConvNextV2Configc                   ón   ^ • \ rS rSrSrS\4U 4S jjrS\R                  S\R                  4S jr	Sr
U =r$ )	ÚConvNextV2GRNé'   z)GRN (Global Response Normalization) layerÚdimc                 óê   >• [         TU ]  5         [        R                  " [        R
                  " SSSU5      5      U l        [        R                  " [        R
                  " SSSU5      5      U l        g )Nr   )ÚsuperÚ__init__r   Ú	ParameterÚtorchÚzerosÚweightÚbias)Úselfr   Ú	__class__s     €ÚÀC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\transformers/models/convnextv2/modeling_convnextv2.pyr   ÚConvNextV2GRN.__init__*   sL   ø€ Ü‰ÑÔÜ—l’l¤5§;¢;¨q°!°Q¸Ó#<Ó=ˆŒÜ—L’L¤§¢¨Q°°1°cÓ!:Ó;ˆ�	ó    Úhidden_statesÚreturnc                 ó²   • [         R                  R                  USSSS9nX"R                  SSS9S-   -  nU R                  X-  -  U R
                  -   U-   nU$ )Né   )r   r+   T)Úordr   Úkeepdiméÿÿÿÿ)r   r-   ç�íµ ÷Æ°>)r   ÚlinalgÚvector_normÚmeanr!   r"   )r#   r(   Úglobal_featuresÚnorm_featuress       r%   ÚforwardÚConvNextV2GRN.forward/   se   € äŸ,™,×2Ñ2°=ÀaÈVÐ]aÐ2ÐbˆØ'×+?Ñ+?ÀBÐPTÐ+?Ð+UÐX\Ñ+\Ñ]ˆØŸ™ }Ñ'DÑEÈÏ	É	ÑQÐTaÑaˆàÐr'   )r"   r!   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úintr   r   ÚFloatTensorr5   Ú__static_attributes__Ú__classcell__©r$   s   @r%   r   r   '   s6   ø† Ù3ð<˜C÷ <ð
 U×%6Ñ%6ð ¸5×;LÑ;L÷ ò r'   r   c                   óv   ^ • \ rS rSrSrSSS.U 4S jjrS\R                  S\R                  4U 4S	 jjrS
r	U =r
$ )ÚConvNextV2LayerNormé9   a5  LayerNorm that supports two data formats: channels_last (default) or channels_first.
The ordering of the dimensions in the inputs. channels_last corresponds to inputs with shape (batch_size, height,
width, channels) while channels_first corresponds to inputs with shape (batch_size, channels, height, width).
r/   Úchannels_last©ÚepsÚdata_formatc                ó`   >• [         TU ]  " U4SU0UD6  US;  a  [        SU 35      eX0l        g )NrF   )rD   Úchannels_firstzUnsupported data format: )r   r   ÚNotImplementedErrorrG   )r#   Únormalized_shaperF   rG   Úkwargsr$   s        €r%   r   ÚConvNextV2LayerNorm.__init__?   s=   ø€ Ü‰ÒÐ)Ñ=¨sÐ=°fÒ=ØÐAÓAÜ%Ð(AÀ+ÀÐ&OÓPÐPØ&Õr'   Úfeaturesr)   c                 ó¸   >• U R                   S:X  a9  UR                  SSSS5      n[        TU ]  U5      nUR                  SSSS5      nU$ [        TU ]  U5      nU$ )zt
Args:
    features: Tensor of shape (batch_size, channels, height, width) OR (batch_size, height, width, channels)
rI   r   r+   r   r   )rG   Úpermuter   r5   )r#   rN   r$   s     €r%   r5   ÚConvNextV2LayerNorm.forwardE   sj   ø€ ð
 ×ÑÐ/Ó/Ø×'Ñ'¨¨1¨a°Ó3ˆHÜ‘w‘ xÓ0ˆHØ×'Ñ'¨¨1¨a°Ó3ˆHð ˆô ‘w‘ xÓ0ˆHØˆr'   ©rG   ©r7   r8   r9   r:   r;   r   r   ÚTensorr5   r>   r?   r@   s   @r%   rB   rB   9   s9   ø† ñð
 15À/÷ 'ð 'ð §¡ð °·±÷ õ r'   rB   c                   óf   ^ • \ rS rSrSrU 4S jrS\R                  S\R                  4S jr	Sr
U =r$ )ÚConvNextV2EmbeddingséT   zThis class is comparable to (and inspired by) the SwinEmbeddings class
found in src/transformers/models/swin/modeling_swin.py.
c                 ó  >• [         TU ]  5         [        R                  " UR                  UR
                  S   UR                  UR                  S9U l        [        UR
                  S   SSS9U l	        UR                  U l        g )Nr   ©Úkernel_sizeÚstrider/   rI   rE   )
r   r   r   ÚConv2dÚnum_channelsÚhidden_sizesÚ
patch_sizeÚpatch_embeddingsrB   Ú	layernorm©r#   Úconfigr$   s     €r%   r   ÚConvNextV2Embeddings.__init__Y   sr   ø€ Ü‰ÑÔÜ "§	¢	Ø×Ñ ×!4Ñ!4°QÑ!7ÀV×EVÑEVÐ_e×_pÑ_pñ!
ˆÔô -¨V×-@Ñ-@ÀÑ-CÈÐ[kÑlˆŒØ"×/Ñ/ˆÕr'   Úpixel_valuesr)   c                 óœ   • UR                   S   nX R                  :w  a  [        S5      eU R                  U5      n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]   Ú
ValueErrorr`   ra   )r#   re   r]   Ú
embeddingss       r%   r5   ÚConvNextV2Embeddings.forwarda   sT   € Ø#×)Ñ)¨!Ñ,ˆØ×,Ñ,Ó,ÜØwóð ð ×*Ñ*¨<Ó8ˆ
Ø—^‘^ JÓ/ˆ
ØÐr'   )ra   r]   r`   )r7   r8   r9   r:   r;   r   r   r=   rT   r5   r>   r?   r@   s   @r%   rV   rV   T   s/   ø† ñõ0ð E×$5Ñ$5ð ¸%¿,¹,÷ ò r'   rV   c                   ó„   ^ • \ rS rSrSrSS\SS4U 4S jjjrS\R                  S\R                  4S jr	S\
4S	 jrS
rU =r$ )ÚConvNextV2DropPathém   zÃStochastic depth (DropPath) per sample, for residual blocks.

Identity when ``drop_prob`` is 0 or outside training. See `Deep Networks with Stochastic Depth
<https://arxiv.org/abs/1603.09382>`_.
Ú	drop_probr)   Nc                 ó.   >• [         TU ]  5         Xl        g ©N)r   r   rn   )r#   rn   r$   s     €r%   r   ÚConvNextV2DropPath.__init__t   s   ø€ Ü‰ÑÔØ"�r'   r(   c                 óV  • U R                   S:X  d  U R                  (       d  U$ SU R                   -
  nUR                  S   4SUR                  S-
  -  -   n[        R
                  " X1R                  UR                  S9n[        R                  " XB-   5      nUR                  U5      U-  $ )Nç        r   r   )r   )ÚdtypeÚdevice)
rn   Útrainingrg   Úndimr   Úrandrt   ru   ÚfloorÚdiv)r#   r(   Ú	keep_probrg   Úrandom_tensors        r%   r5   ÚConvNextV2DropPath.forwardx   s“   € Ø�>‰>˜SÓ ¨¯¯Ø Ð Ø˜Ÿ™Ñ&ˆ	Ø×$Ñ$ QÑ'Ð)¨D°M×4FÑ4FÈÑ4JÑ,KÑKˆÜŸ
š
 5×0CÑ0CÈM×L`ÑL`ÑaˆÜŸš MÑ$=Ó>ˆØ× Ñ  Ó+¨mÑ;Ð;r'   c                 ó    • SU R                    3$ )Nzp=©rn   )r#   s    r%   Ú
extra_reprÚConvNextV2DropPath.extra_repr�   s   € Ø�D—N‘NÐ#Ð$Ð$r'   r   )rs   )r7   r8   r9   r:   r;   Úfloatr   r   rT   r5   Ústrr€   r>   r?   r@   s   @r%   rl   rl   m   sL   ø† ññ# %ð #°$÷ #ð #ð< U§\¡\ð <°e·l±lô <ð%˜C÷ %ò %r'   rl   c                   ój   ^ • \ rS rSrSrSU 4S jjrS\R                  S\R                  4S jrSr	U =r
$ )	ÚConvNextV2Layeré…   a  This corresponds to the `Block` class in the original implementation.

There are two equivalent implementations: [DwConv, LayerNorm (channels_first), Conv, GELU,1x1 Conv]; all in (N, C,
H, W) (2) [DwConv, Permute to (N, H, W, C), LayerNorm (channels_last), Linear, GELU, Linear]; Permute back

The authors used (2) as they find it slightly faster in PyTorch.

Args:
    config ([`ConvNextV2Config`]): Model configuration class.
    dim (`int`): Number of input channels.
    drop_path (`float`): Stochastic depth rate. Default: 0.0.
c                 ó¬  >• [         TU ]  5         [        R                  " X"SSUS9U l        [        USS9U l        [        R                  " USU-  5      U l        [        UR                     U l        [        SU-  5      U l        [        R                  " SU-  U5      U l        US:”  a  [        U5      U l        g [        R                   " 5       U l        g )Né   r   )rZ   ÚpaddingÚgroupsr/   ©rF   é   rs   )r   r   r   r\   ÚdwconvrB   ra   ÚLinearÚpwconv1r   Ú
hidden_actÚactr   ÚgrnÚpwconv2rl   ÚIdentityÚ	drop_path)r#   rc   r   r•   r$   s       €r%   r   ÚConvNextV2Layer.__init__“   sŸ   ø€ Ü‰ÑÔä—i’i °aÀÈ3ÑOˆŒÜ,¨S°dÑ;ˆŒä—y’y  a¨#¡gÓ.ˆŒÜ˜&×+Ñ+Ñ,ˆŒÜ   S¡Ó)ˆŒÜ—y’y  S¡¨#Ó.ˆŒØ:CÀc»/Ô+¨IÓ6ˆ�ÌrÏ{Ê{Ë}ˆ�r'   rN   r)   c                 óL  • UnU R                  U5      nUR                  SSSS5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nU R                  U5      nUR                  SSSS5      nX R                  U5      -   nU$ )Nr   r+   r   r   )r�   rP   ra   r�   r‘   r’   r“   r•   )r#   rN   Úresiduals      r%   r5   ÚConvNextV2Layer.forwardŸ   s�   € ØˆØ—;‘;˜xÓ(ˆà×#Ñ# A q¨!¨QÓ/ˆØ—>‘> (Ó+ˆØ—<‘< Ó)ˆØ—8‘8˜HÓ%ˆØ—8‘8˜HÓ%ˆØ—<‘< Ó)ˆà×#Ñ# A q¨!¨QÓ/ˆàŸn™n¨XÓ6Ñ6ˆØˆr'   )r‘   r•   r�   r’   ra   r�   r“   )r   rS   r@   s   @r%   r…   r…   …   s.   ø† ñ÷
]ð §¡ð °·±÷ ò r'   r…   c                   ój   ^ • \ rS rSrSrSU 4S jjrS\R                  S\R                  4S jrSr	U =r
$ )	ÚConvNextV2Stageé±   a�  ConvNeXTV2 stage, consisting of an optional downsampling layer + multiple residual blocks.

Args:
    config ([`ConvNextV2Config`]): Model configuration class.
    in_channels (`int`): Number of input channels.
    out_channels (`int`): Number of output channels.
    depth (`int`): Number of residual blocks.
    drop_path_rates(`list[float]`): Stochastic depth rates for each layer.
c                 ó†  >• [         T	U ]  5         X#:w  d  US:”  a:  [        R                  " [	        USSS9[        R
                  " X#XES9/5      U l        O[        R                  " 5       U l        U=(       d    S/U-  n[        R                  " [        U5       Vs/ s H  n[        XXx   S9PM     sn5      U l	        g s  snf )Nr   r/   rI   rE   rY   rs   )r   r•   )
r   r   r   Ú
ModuleListrB   r\   Údownsampling_layerÚranger…   Úlayers)
r#   rc   Úin_channelsÚout_channelsrZ   r[   ÚdepthÚdrop_path_ratesÚjr$   s
            €r%   r   ÚConvNextV2Stage.__init__¼   s£   ø€ Ü‰ÑÔàÓ&¨&°1«*Ü&(§m¢mä'¨¸ÐK[Ñ\Ü—I’I˜kÀ[Ñ`ðó'ˆDÕ#ô ')§m¢m£oˆDÔ#Ø)×:¨c¨U°U©]ˆÜ—m’mÜ^cÐdiÔ^jÓkÒ^jÐYZŒ_˜VÀÑASÔTÑ^jÑkó
ˆ�ùÚks   ÂB>rN   r)   c                 ór   • U R                    H  nU" U5      nM     U R                   H  nU" U5      nM     U$ rp   ©rŸ   r¡   )r#   rN   Úlayers      r%   r5   ÚConvNextV2Stage.forwardÍ   s7   € Ø×,Ô,ˆEÙ˜X“ŠHñ -à—[”[ˆEÙ˜X“ŠHñ !àˆr'   r©   )r+   r+   r+   NrS   r@   s   @r%   r›   r›   ±   s-   ø† ñ÷
ð" §¡ð °·±÷ ò r'   r›   c                   ón   ^ • \ rS rSr% \\S'   SrSrSrS/r	\
R                  " 5       U 4S j5       rSrU =r$ )	ÚConvNextV2PreTrainedModeléÕ   rc   Ú
convnextv2re   )Úimager…   c                 óÐ   >• [         TU ]  U5        [        U[        5      (       aA  [        R
                  " UR                  5        [        R
                  " UR                  5        gg)zInitialize the weightsN)r   Ú_init_weightsÚ
isinstancer   ÚinitÚzeros_r!   r"   )r#   Úmoduler$   s     €r%   r²   Ú'ConvNextV2PreTrainedModel._init_weightsÝ   sD   ø€ ô 	‰Ñ˜fÔ%Ü�fœm×,Ñ,Ü�KŠK˜Ÿ™Ô&Ü�KŠK˜Ÿ™Õ$ð -r'   © )r7   r8   r9   r:   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesr   Úno_gradr²   r>   r?   r@   s   @r%   r­   r­   Õ   s;   ø‡ àÓØ$ÐØ$€OØ!ÐØ*Ð+Ðà
‡]‚]ƒ_ô%ó ö%r'   r­   c                   ó€   ^ • \ rS rSrSrS\0rU 4S jr\\	" SS9S\
R                  S\\   S\4S j5       5       rS	rU =r$ )
ÚConvNextV2Encoderéç   r(   c           
      óP  >• [         TU ]  U5        [        R                  " 5       U l        [
        R                  " SUR                  [        UR                  5      SS9R                  UR                  5       Vs/ s H  nUR                  5       PM     nnUR                  S   n[        UR                  5       HT  nUR                  U   n[        UUUUS:”  a  SOSUR                  U   X5   S9nU R                  R!                  U5        UnMV     U R#                  5         g s  snf )Nr   Úcpu)ru   r+   r   )r¢   r£   r[   r¤   r¥   )r   r   r   rž   Ústagesr   ÚlinspaceÚdrop_path_rateÚsumÚdepthsÚsplitÚtolistr^   r    Ú
num_stagesr›   ÚappendÚ	post_init)	r#   rc   Úxr¥   Úprev_chsÚiÚout_chsÚstager$   s	           €r%   r   ÚConvNextV2Encoder.__init__ë   s  ø€ Ü‰Ñ˜Ô Ü—m’m“oˆŒô —^’^ A v×'<Ñ'<¼cÀ&Ç-Á-Ó>PÐY^Ñ_×eÑeÐfl×fsÑfsÔtó
ât�ð �H‰HŽJÙtð 	ð 
ð ×&Ñ& qÑ)ˆÜ�v×(Ñ(Ö)ˆAØ×)Ñ)¨!Ñ,ˆGÜ#ØØ$Ø$Ø ›E‘q qØ—m‘m AÑ&Ø /Ñ 2ñˆEð �K‰K×Ñ˜uÔ%ØŠHñ *ð 	�‰Õùò%
s   Á:D#F)Útie_last_hidden_statesrL   r)   c                 óJ   • U R                    H  nU" U5      nM     [        US9$ )N)Úlast_hidden_state)rÄ   r
   )r#   r(   rL   Úlayer_modules       r%   r5   ÚConvNextV2Encoder.forward  s)   € ð !ŸKœKˆLÙ(¨Ó7ŠMñ (ô .ÀÑNÐNr'   )rÄ   )r7   r8   r9   r:   r»   r›   Ú_can_record_outputsr   r   r   r   rT   r   r   r
   r5   r>   r?   r@   s   @r%   rÀ   rÀ   ç   sd   ø† Ø%€OØ*¨OÐ<Ðõð.  Ù¨EÑ2ðOà—|‘|ðOð Ð+Ñ,ðOð 
(ó	Oó 3ó  öOr'   rÀ   c            	       óx   ^ • \ rS rSrU 4S jr\\ S	S\R                  S-  S\	\
   S\4S jj5       5       rSrU =r$ )
ÚConvNextV2Modeli  c                 óò   >• [         TU ]  U5        Xl        [        U5      U l        [        U5      U l        [        R                  " UR                  S   UR                  S9U l        U R                  5         g )Nr.   r‹   )r   r   rc   rV   ri   rÀ   Úencoderr   Ú	LayerNormr^   Úlayer_norm_epsra   rÍ   rb   s     €r%   r   ÚConvNextV2Model.__init__  s^   ø€ Ü‰Ñ˜Ô ØŒä.¨vÓ6ˆŒÜ(¨Ó0ˆŒô Ÿš f×&9Ñ&9¸"Ñ&=À6×CXÑCXÑYˆŒð 	�‰Õr'   Nre   rL   r)   c                 óì   • Uc  [        S5      eU R                  U5      nU R                  " U40 UD6nUR                  nU R	                  UR                  SS/5      5      n[        UUUR                  S9$ )Nz You have to specify pixel_valueséþÿÿÿr.   )rÖ   Úpooler_outputr(   )rh   ri   rÝ   rÖ   ra   r2   r   r(   )r#   re   rL   Úembedding_outputÚencoder_outputsrÖ   Úpooled_outputs          r%   r5   ÚConvNextV2Model.forward  s‚   € ð
 ÑÜÐ?Ó@Ð@àŸ?™?¨<Ó8ÐØ:>¿,º,ÐGWÑ:bÐ[aÑ:bˆØ+×=Ñ=Ðð Ÿ™Ð'8×'=Ñ'=¸rÀ2¸hÓ'GÓHˆä7Ø/Ø'Ø)×7Ñ7ñ
ð 	
r'   )rc   ri   rÝ   ra   rp   )r7   r8   r9   r:   r   r   r   r   r=   r   r   r   r5   r>   r?   r@   s   @r%   rÛ   rÛ     sP   ø† õð Øà7;ñ
Ø!×-Ñ-°Ñ4ð
ØGMÐN`ÑGað
à	1ô
ó ó ö
r'   rÛ   zŠ
    ConvNextV2 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SrU 4S jr\\ S
S\R                  S-  S\R                  S-  S\4S jj5       5       rS	rU =r$ )Ú ConvNextV2ForImageClassificationi5  Fc                 óB  >• [         TU ]  U5        UR                  U l        [        U5      U l        UR                  S:”  a4  [
        R                  " UR                  S   UR                  5      U l        O[
        R                  " 5       U l        U R                  5         g )Nr   r.   )r   r   Ú
num_labelsrÛ   r¯   r   rŽ   r^   Ú
classifierr”   rÍ   rb   s     €r%   r   Ú)ConvNextV2ForImageClassification.__init__?  su   ø€ Ü‰Ñ˜Ô à ×+Ñ+ˆŒÜ)¨&Ó1ˆŒð ×Ñ˜qÓ Ü Ÿiši¨×(;Ñ(;¸BÑ(?À×ARÑARÓSˆD�Oä Ÿkšk›mˆDŒOð 	�‰Õr'   Nre   Úlabelsr)   c                 óÊ   • U R                   " U40 UD6nUR                  nU R                  U5      nSnUb  U R                  X&U R                  S9n[        UUUR                  S9$ )ab  
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 regression loss is computed (Mean-Square loss), If
    `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
N)rï   Úpooled_logitsrc   )ÚlossÚlogitsr(   )r¯   rã   rí   Úloss_functionrc   r   r(   )r#   re   rï   rL   Úoutputsræ   ró   rò   s           r%   r5   Ú(ConvNextV2ForImageClassification.forwardN  su   € ð =A¿OºOÈLÑ<cÐ\bÑ<cˆØ×-Ñ-ˆØ—‘ Ó/ˆàˆØÑØ×%Ñ%¨VÐRV×R]ÑR]Ð%Ð^ˆDä3ØØØ!×/Ñ/ñ
ð 	
r'   )rí   r¯   rì   )NN)r7   r8   r9   r:   Úaccepts_loss_kwargsr   r   r   r   r=   Ú
LongTensorr   r5   r>   r?   r@   s   @r%   rê   rê   5  s^   ø† ð  Ðõð Øà_cñ
Ø!×-Ñ-°Ñ4ð
ØEJ×EUÑEUÐX\ÑE\ð
à	-ô
ó ó ö
r'   rê   zT
    ConvNeXT V2 backbone, to be used with frameworks like DETR and MaskFormer.
    c            	       óz   ^ • \ rS rSrSrU 4S jr\\\S\	R                  S\\   S\4S j5       5       5       rSrU =r$ )	ÚConvNextV2Backboneih  Fc                 ól  >• [         TU ]  U5        [        U5      U l        [	        U5      U l        UR                  S   /UR                  -   U l        0 n[        U R                  U R                  5       H  u  p4[        USS9X#'   M     [        R                  " U5      U l        U R                  5         g )Nr   rI   rR   )r   r   rV   ri   rÀ   rÝ   r^   Únum_featuresÚzipÚout_featuresÚchannelsrB   r   Ú
ModuleDictÚhidden_states_normsrÍ   )r#   rc   r  rÒ   r]   r$   s        €r%   r   ÚConvNextV2Backbone.__init__q  sŸ   ø€ Ü‰Ñ˜Ô ä.¨vÓ6ˆŒÜ(¨Ó0ˆŒØ#×0Ñ0°Ñ3Ð4°v×7JÑ7JÑJˆÔð !ÐÜ#& t×'8Ñ'8¸$¿-¹-Ö#HÑˆEÜ)<¸\ÐWgÑ)hÐÓ&ñ $Iä#%§=¢=Ð1DÓ#EˆÔ ð 	�‰Õr'   re   rL   r)   c                 ó8  • U R                  U5      nU R                  " U40 UD6nUR                  n/ n[        U R                  U5       H<  u  pxXpR
                  ;   d  M  U R                  U   " U5      nUR                  U5        M>     [        [        U5      US9$ )aK  
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("facebook/convnextv2-tiny-1k-224")
>>> model = AutoBackbone.from_pretrained("facebook/convnextv2-tiny-1k-224")

>>> inputs = processor(image, return_tensors="pt")
>>> outputs = model(**inputs)
```)Úfeature_mapsr(   )
ri   rÝ   r(   rý   Ústage_namesrþ   r  rÌ   r	   Útuple)	r#   re   rL   rä   rå   r(   r  rÒ   Úhidden_states	            r%   r5   ÚConvNextV2Backbone.forward�  s–   € ð8  Ÿ?™?¨<Ó8ÐØ:>¿,º,ÐGWÑ:bÐ[aÑ:bˆØ'×5Ñ5ˆàˆÜ#& t×'7Ñ'7¸Ö#GÑˆEØ×)Ñ)Õ)Ø#×7Ñ7¸Ò>¸|ÓL�Ø×#Ñ# LÖ1ñ $Hô
 ¬5°Ó+>ÈmÑ\Ð\r'   )ri   rÝ   r  rü   )r7   r8   r9   r:   Úhas_attentionsr   r   r   r   r   rT   r   r   r	   r5   r>   r?   r@   s   @r%   rú   rú   h  s^   ø† ð €Nõð  Ø Øð#]à—l‘lð#]ð Ð+Ñ,ð#]ð 
ó	#]ó ó !ó ö#]r'   rú   )rê   rÛ   r­   rú   )0r;   r   r   Ú r   r´   Úactivationsr   Úbackbone_utilsr   r   Úmodeling_outputsr	   r
   r   r   Úmodeling_utilsr   Úprocessing_utilsr   Úutilsr   r   r   Úutils.genericr   r   Úutils.output_capturingr   Úconfiguration_convnextv2r   Ú
get_loggerr7   ÚloggerÚModuler   rÞ   rB   rV   rl   r…   r›   r­   rÀ   rÛ   rê   rú   Ú__all__r¸   r'   r%   Ú<module>r     sQ  ðñ  ã Ý å &Ý !ß H÷ó õ .Ý &ß @Ñ @ß IÝ 5Ý 6ð 
×	Ò	˜HÓ	%€ô�B—I‘Iô ô$˜"Ÿ,™,ô ô6˜2Ÿ9™9ô ô2%˜Ÿ™ô %ô0(�b—i‘iô (ôX!�b—i‘iô !ðH ô% ó %ó ð%ô"%OÐ1ô %OðP ô!
Ð/ó !
ó ð!
ñH ðñô)
Ð'@ó )
óð)
ñX ðñô9]˜Ð(Aó 9]óð9]òx u�r'   