§
    ‚Štj´C  ã                   ó´  — d Z ddlZddl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 ddlmZmZ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)e G d„ de¦  «        ¦   «         Z* 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 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                   óL   ‡ — e Zd ZdZdefˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚConvNextV2GRNz)GRN (Global Response Normalization) layerÚdimc                 ó   •— t          ¦   «                              ¦   «          t          j        t	          j        ddd|¦  «        ¦  «        | _        t          j        t	          j        ddd|¦  «        ¦  «        | _        d S )Nr   )ÚsuperÚ__init__r   Ú	ParameterÚtorchÚzerosÚweightÚbias)Úselfr   Ú	__class__s     €úp/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/convnextv2/modeling_convnextv2.pyr   zConvNextV2GRN.__init__*   s_   ø€ Ý‰Œ×ÒÑÔÐÝ”l¥5¤;¨q°!°Q¸Ñ#<Ô#<Ñ=Ô=ˆŒÝ”L¥¤¨Q°°1°cÑ!:Ô!:Ñ;Ô;ˆŒ	ˆ	ˆ	ó    Úhidden_statesÚreturnc                 ó¶   — t           j                             |ddd¬¦  «        }||                     dd¬¦  «        dz   z  }| j        ||z  z  | j        z   |z   }|S )Né   )r   r)   T)Úordr   Úkeepdiméÿÿÿÿ)r   r+   ç�íµ ÷Æ°>)r   ÚlinalgÚvector_normÚmeanr    r!   )r"   r&   Úglobal_featuresÚnorm_featuress       r$   ÚforwardzConvNextV2GRN.forward/   si   € åœ,×2Ò2°=ÀaÈVÐ]aÐ2ÑbÔbˆØ'¨?×+?Ò+?ÀBÐPTÐ+?Ñ+UÔ+UÐX\Ñ+\Ñ]ˆØœ }°}Ñ'DÑEÈÌ	ÑQÐTaÑaˆàÐr%   )
Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úintr   r   ÚFloatTensorr3   Ú__classcell__©r#   s   @r$   r   r   '   sr   ø€ € € € € Ø3Ð3ð<˜Cð <ð <ð <ð <ð <ð <ð
 UÔ%6ð ¸5Ô;Lð ð ð ð ð ð ð ð r%   r   c                   óR   ‡ — e Zd ZdZdddœˆ fd„
Zdej        dej        fˆ fd„Zˆ xZS )	ÚConvNextV2LayerNormaA  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                óz   •—  t          ¦   «         j        |fd|i|¤Ž |dvrt          d|› �¦  «        ‚|| _        d S )Nr@   )r>   Úchannels_firstzUnsupported data format: )r   r   ÚNotImplementedErrorrA   )r"   Únormalized_shaper@   rA   Úkwargsr#   s        €r$   r   zConvNextV2LayerNorm.__init__?   sY   ø€ Ø�‰ŒÔÐ)Ð=Ð=¨sÐ=°fÐ=Ð=Ð=ØÐAÐAÐAÝ%Ð&OÀ+Ð&OÐ&OÑPÔPÐPØ&ˆÔÐÐr%   Úfeaturesr'   c                 ó  •— | j         dk    rR|                     dddd¦  «        }t          ¦   «                              |¦  «        }|                     dddd¦  «        }n!t          ¦   «                              |¦  «        }|S )zŒ
        Args:
            features: Tensor of shape (batch_size, channels, height, width) OR (batch_size, height, width, channels)
        rC   r   r)   r   r   )rA   Úpermuter   r3   )r"   rG   r#   s     €r$   r3   zConvNextV2LayerNorm.forwardE   sw   ø€ ð
 ÔÐ/Ò/Ð/Ø×'Ò'¨¨1¨a°Ñ3Ô3ˆHÝ‘w”w—’ xÑ0Ô0ˆHØ×'Ò'¨¨1¨a°Ñ3Ô3ˆHˆHå‘w”w—’ xÑ0Ô0ˆHØˆr%   ©	r4   r5   r6   r7   r   r   ÚTensorr3   r:   r;   s   @r$   r=   r=   9   sƒ   ø€ € € € € ðð ð
 15À/ð 'ð 'ð 'ð 'ð 'ð 'ð 'ð ¤ð °´ð ð ð ð ð ð ð ð ð ð r%   r=   c                   óF   ‡ — e Zd ZdZˆ fd„Zdej        dej        fd„Zˆ xZ	S )ÚConvNextV2Embeddingsz‡This class is comparable to (and inspired by) the SwinEmbeddings class
    found in src/transformers/models/swin/modeling_swin.py.
    c                 ó  •— t          ¦   «                              ¦   «          t          j        |j        |j        d         |j        |j        ¬¦  «        | _        t          |j        d         dd¬¦  «        | _	        |j        | _        d S )Nr   ©Úkernel_sizeÚstrider-   rC   r?   )
r   r   r   ÚConv2dÚnum_channelsÚhidden_sizesÚ
patch_sizeÚpatch_embeddingsr=   Ú	layernorm©r"   Úconfigr#   s     €r$   r   zConvNextV2Embeddings.__init__Y   s   ø€ Ý‰Œ×ÒÑÔÐÝ "¤	ØÔ Ô!4°QÔ!7ÀVÔEVÐ_eÔ_pð!
ñ !
ô !
ˆÔõ -¨VÔ-@ÀÔ-CÈÐ[kÐlÑlÔlˆŒØ"Ô/ˆÔÐÐ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.)ÚshaperS   Ú
ValueErrorrV   rW   )r"   rZ   rS   Ú
embeddingss       r$   r3   zConvNextV2Embeddings.forwarda   s^   € Ø#Ô)¨!Ô,ˆØ˜4Ô,Ò,Ð,ÝØwñô ð ð ×*Ò*¨<Ñ8Ô8ˆ
Ø—^’^ JÑ/Ô/ˆ
ØÐr%   )
r4   r5   r6   r7   r   r   r9   rK   r3   r:   r;   s   @r$   rM   rM   T   si   ø€ € € € € ðð ð0ð 0ð 0ð 0ð 0ð EÔ$5ð ¸%¼,ð ð ð ð ð ð ð ð r%   rM   c                   ó^   ‡ — e Zd ZdZd
deddfˆ fd„Zdej        dej        fd„Zde	fd	„Z
ˆ xZS )ÚConvNextV2DropPathzÏ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                 óV   •— t          ¦   «                              ¦   «          || _        d S ©N)r   r   rb   )r"   rb   r#   s     €r$   r   zConvNextV2DropPath.__init__t   s$   ø€ Ý‰Œ×ÒÑÔÐØ"ˆŒˆˆr%   r&   c                 ó  — | j         dk    s| j        s|S d| j         z
  }|j        d         fd|j        dz
  z  z   }t	          j        ||j        |j        ¬¦  «        }t	          j        ||z   ¦  «        }| 	                    |¦  «        |z  S )Nra   r   r   )r   )ÚdtypeÚdevice)
rb   Útrainingr\   Úndimr   Úrandrf   rg   ÚfloorÚdiv)r"   r&   Ú	keep_probr\   Úrandom_tensors        r$   r3   zConvNextV2DropPath.forwardx   s“   € ØŒ>˜SÒ Ð ¨¬Ð Ø Ð Ø˜œÑ&ˆ	ØÔ$ QÔ'Ð)¨D°MÔ4FÈÑ4JÑ,KÑKˆÝœ
 5°Ô0CÈMÔL`ÐaÑaÔaˆÝœ M°IÑ$=Ñ>Ô>ˆØ× Ò  Ñ+Ô+¨mÑ;Ð;r%   c                 ó   — d| j         › �S )Nzp=)rb   )r"   s    r$   Ú
extra_reprzConvNextV2DropPath.extra_repr�   s   € Ø$�D”NÐ$Ð$Ð$r%   )ra   )r4   r5   r6   r7   Úfloatr   r   rK   r3   Ústrrp   r:   r;   s   @r$   r`   r`   m   s›   ø€ € € € € ðð ð#ð # %ð #°$ð #ð #ð #ð #ð #ð #ð< U¤\ð <°e´lð <ð <ð <ð <ð%˜Cð %ð %ð %ð %ð %ð %ð %ð %r%   r`   c                   óH   ‡ — e Zd ZdZdˆ fd„	Zdej        dej        fd„Zˆ xZS )ÚConvNextV2Layera5  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.
    r   c                 óÚ  •— t          ¦   «                              ¦   «          t          j        ||dd|¬¦  «        | _        t          |d¬¦  «        | _        t          j        |d|z  ¦  «        | _        t          |j
                 | _        t          d|z  ¦  «        | _        t          j        d|z  |¦  «        | _        |dk    rt          |¦  «        nt          j        ¦   «         | _        d S )Né   r   )rP   ÚpaddingÚgroupsr-   ©r@   é   ra   )r   r   r   rR   Údwconvr=   rW   ÚLinearÚpwconv1r   Ú
hidden_actÚactr   ÚgrnÚpwconv2r`   ÚIdentityÚ	drop_path)r"   rY   r   rƒ   r#   s       €r$   r   zConvNextV2Layer.__init__“   sÀ   ø€ Ý‰Œ×ÒÑÔÐå”i  S°aÀÈ3ÐOÑOÔOˆŒÝ,¨S°dÐ;Ñ;Ô;ˆŒå”y  a¨#¡gÑ.Ô.ˆŒÝ˜&Ô+Ô,ˆŒÝ   S¡Ñ)Ô)ˆŒÝ”y  S¡¨#Ñ.Ô.ˆŒØ:CÀcº/¸/Õ+¨IÑ6Ô6Ð6ÍrÌ{É}Ì}ˆŒˆˆr%   rG   r'   c                 ó–  — |}|                       |¦  «        }|                     dddd¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|                     dddd¦  «        }||                      |¦  «        z   }|S )Nr   r)   r   r   )r{   rI   rW   r}   r   r€   r�   rƒ   )r"   rG   Úresiduals      r$   r3   zConvNextV2Layer.forwardŸ   sº   € ØˆØ—;’;˜xÑ(Ô(ˆà×#Ò# A q¨!¨QÑ/Ô/ˆØ—>’> (Ñ+Ô+ˆØ—<’< Ñ)Ô)ˆØ—8’8˜HÑ%Ô%ˆØ—8’8˜HÑ%Ô%ˆØ—<’< Ñ)Ô)ˆà×#Ò# A q¨!¨QÑ/Ô/ˆà˜dŸnšn¨XÑ6Ô6Ñ6ˆØˆr%   )r   rJ   r;   s   @r$   rt   rt   …   ss   ø€ € € € € ðð ð
]ð 
]ð 
]ð 
]ð 
]ð 
]ð ¤ð °´ð ð ð ð ð ð ð ð r%   rt   c                   óH   ‡ — e Zd ZdZdˆ fd„	Zdej        dej        fd„Zˆ xZS )	ÚConvNextV2Stagea�  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.
    r)   Nc           	      ó’  •‡‡‡— t          ¦   «                              ¦   «          |‰k    s|dk    rBt          j        t	          |dd¬¦  «        t          j        |‰||¬¦  «        g¦  «        | _        nt          j        ¦   «         | _        ‰pdg|z  Št          j        ˆˆˆfd„t          |¦  «        D ¦   «         ¦  «        | _        d S )Nr   r-   rC   r?   rO   ra   c                 ó@   •— g | ]}t          ‰‰‰|         ¬ ¦  «        ‘ŒS ))r   rƒ   )rt   )Ú.0ÚjrY   Údrop_path_ratesÚout_channelss     €€€r$   ú
<listcomp>z,ConvNextV2Stage.__init__.<locals>.<listcomp>Ê   s/   ø€ ÐkÐkÐkÐYZ�_˜V¨ÀÐQRÔASÐTÑTÔTÐkÐkÐkr%   )	r   r   r   Ú
ModuleListr=   rR   Údownsampling_layerÚrangeÚlayers)	r"   rY   Úin_channelsr�   rP   rQ   ÚdepthrŒ   r#   s	    ` `   `€r$   r   zConvNextV2Stage.__init__¼   sÓ   øøøø€ Ý‰Œ×ÒÑÔÐà˜,Ò&Ð&¨&°1ª*¨*Ý&(¤må'¨¸ÐK[Ð\Ñ\Ô\Ý”I˜k¨<À[ÐY_Ð`Ñ`Ô`ðñ'ô 'ˆDÔ#Ð#õ ')¤m¡o¤oˆDÔ#Ø)Ð:¨c¨U°U©]ˆÝ”mØkÐkÐkÐkÐkÐkÕ^cÐdiÑ^jÔ^jÐkÑkÔkñ
ô 
ˆŒˆˆr%   rG   r'   c                 óZ   — | j         D ]} ||¦  «        }Œ| j        D ]} ||¦  «        }Œ|S rd   )r�   r’   )r"   rG   Úlayers      r$   r3   zConvNextV2Stage.forwardÍ   sH   € ØÔ,ð 	'ð 	'ˆEØ�u˜X‘”ˆHˆHØ”[ð 	'ð 	'ˆEØ�u˜X‘”ˆHˆHØˆr%   )r)   r)   r)   NrJ   r;   s   @r$   r‡   r‡   ±   sm   ø€ € € € € ðð ð
ð 
ð 
ð 
ð 
ð 
ð" ¤ð °´ð ð ð ð ð ð ð ð r%   r‡   c                   óf   ‡ — e Zd ZU eed<   dZdZdZdgZ e	j
        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚConvNextV2PreTrainedModelrY   Ú
convnextv2rZ   )Úimagert   c                 óÜ   •— t          ¦   «                              |¦  «         t          |t          ¦  «        r4t	          j        |j        ¦  «         t	          j        |j        ¦  «         dS dS )zInitialize the weightsN)r   Ú_init_weightsÚ
isinstancer   ÚinitÚzeros_r    r!   )r"   Úmoduler#   s     €r$   rœ   z'ConvNextV2PreTrainedModel._init_weightsÝ   sc   ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%Ý�f�mÑ,Ô,ð 	%ÝŒK˜œÑ&Ô&Ð&ÝŒK˜œÑ$Ô$Ð$Ð$Ð$ð	%ð 	%r%   )r4   r5   r6   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚ_no_split_modulesr   Úno_gradrœ   r:   r;   s   @r$   r˜   r˜   Õ   sr   ø€ € € € € € àÐÐÑØ$ÐØ$€OØ!ÐØ*Ð+Ðà€U„]�_„_ð%ð %ð %ð %ñ „_ð%ð %ð %ð %ð %r%   r˜   c                   óˆ   ‡ — e Zd ZdZdeiZˆ fd„Ze ed¬¦  «        de	j
        dee         defd„¦   «         ¦   «         Zˆ xZS )ÚConvNextV2Encoderr&   c           
      ó:  •— t          ¦   «                              |¦  «         t          j        ¦   «         | _        d„ t          j        d|j        t          |j	        ¦  «        d¬¦  «         
                    |j	        ¦  «        D ¦   «         }|j        d         }t          |j        ¦  «        D ]Y}|j        |         }t          ||||dk    rdnd|j	        |         ||         ¬¦  «        }| j                             |¦  «         |}ŒZ|                      ¦   «          d S )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Útolist)rŠ   Úxs     r$   rŽ   z.ConvNextV2Encoder.__init__.<locals>.<listcomp>î   s0   € ð 
ð 
ð 
àð �HŠH‰JŒJð
ð 
ð 
r%   r   Úcpu)rg   r)   r   )r“   r�   rQ   r”   rŒ   )r   r   r   r�   Ústagesr   ÚlinspaceÚdrop_path_rateÚsumÚdepthsÚsplitrT   r‘   Ú
num_stagesr‡   ÚappendÚ	post_init)r"   rY   rŒ   Úprev_chsÚiÚout_chsÚstager#   s          €r$   r   zConvNextV2Encoder.__init__ë   s"  ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”m‘o”oˆŒð
ð 
å”^ A vÔ'<½cÀ&Ä-Ñ>PÔ>PÐY^Ð_Ñ_Ô_×eÒeÐflÔfsÑtÔtð
ñ 
ô 
ˆð Ô& qÔ)ˆÝ�vÔ(Ñ)Ô)ð 	ð 	ˆAØÔ)¨!Ô,ˆGÝ#ØØ$Ø$Ø šE˜E�q�q qØ”m AÔ&Ø /°Ô 2ðñ ô ˆEð ŒK×Ò˜uÑ%Ô%Ð%ØˆHˆHà�ŠÑÔÐÐÐr%   F)Útie_last_hidden_statesrF   r'   c                 óL   — | j         D ]} ||¦  «        }Œt          |¬¦  «        S )N)Úlast_hidden_state)r¯   r
   )r"   r&   rF   Úlayer_modules       r$   r3   zConvNextV2Encoder.forward  s7   € ð !œKð 	8ð 	8ˆLØ(˜L¨Ñ7Ô7ˆMˆMå-ÀÐNÑNÔNÐNr%   )r4   r5   r6   r£   r‡   Ú_can_record_outputsr   r   r   r   rK   r   r   r
   r3   r:   r;   s   @r$   r¨   r¨   ç   s°   ø€ € € € € Ø%€OØ*¨OÐ<Ððð ð ð ð ð.  Ø€_¨EÐ2Ñ2Ô2ðOà”|ðOð Ð+Ô,ðOð 
(ð	Oð Oð Oñ 3Ô2ñ  ÔðOð Oð Oð Oð Or%   r¨   c            	       ór   ‡ — e Zd Zˆ fd„Zee	 ddej        dz  dee	         de
fd„¦   «         ¦   «         Zˆ xZS )ÚConvNextV2Modelc                 ó&  •— t          ¦   «                              |¦  «         || _        t          |¦  «        | _        t          |¦  «        | _        t          j        |j	        d         |j
        ¬¦  «        | _        |                      ¦   «          d S )Nr,   ry   )r   r   rY   rM   r^   r¨   Úencoderr   Ú	LayerNormrT   Úlayer_norm_epsrW   r·   rX   s     €r$   r   zConvNextV2Model.__init__  s{   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒå.¨vÑ6Ô6ˆŒÝ(¨Ñ0Ô0ˆŒõ œ fÔ&9¸"Ô&=À6ÔCXÐYÑYÔYˆŒð 	�ŠÑÔÐÐÐr%   NrZ   rF   r'   c                 óú   — |€t          d¦  «        ‚|                      |¦  «        } | j        |fi |¤Ž}|j        }|                      |                     ddg¦  «        ¦  «        }t          |||j        ¬¦  «        S )Nz You have to specify pixel_valueséþÿÿÿr,   )r¾   Úpooler_outputr&   )r]   r^   rÄ   r¾   rW   r0   r   r&   )r"   rZ   rF   Úembedding_outputÚencoder_outputsr¾   Úpooled_outputs          r$   r3   zConvNextV2Model.forward  s˜   € ð
 ÐÝÐ?Ñ@Ô@Ð@àŸ?š?¨<Ñ8Ô8ÐØ:F¸$¼,ÐGWÐ:bÐ:bÐ[aÐ:bÐ:bˆØ+Ô=Ðð ŸšÐ'8×'=Ò'=¸rÀ2¸hÑ'GÔ'GÑHÔHˆå7Ø/Ø'Ø)Ô7ð
ñ 
ô 
ð 	
r%   rd   )r4   r5   r6   r   r   r   r   r9   r   r   r   r3   r:   r;   s   @r$   rÂ   rÂ     s‘   ø€ € € € € ðð ð ð ð ð Øà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            	       óz   ‡ — e Zd ZdZˆ fd„Zee	 ddej        dz  dej	        dz  de
fd„¦   «         ¦   «         Zˆ xZS )	Ú ConvNextV2ForImageClassificationFc                 óN  •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        |j        dk    r+t          j        |j        d         |j        ¦  «        | _        nt          j	        ¦   «         | _        |  
                    ¦   «          d S )Nr   r,   )r   r   Ú
num_labelsrÂ   r™   r   r|   rT   Ú
classifierr‚   r·   rX   s     €r$   r   z)ConvNextV2ForImageClassification.__init__?  s‰   ø€ Ý‰Œ×Ò˜Ñ Ô Ð à Ô+ˆŒÝ)¨&Ñ1Ô1ˆŒð Ô˜qÒ Ð Ý œi¨Ô(;¸BÔ(?ÀÔARÑSÔSˆDŒOˆOå œk™mœmˆDŒOð 	�ŠÑÔÐÐÐr%   NrZ   Úlabelsr'   c                 óÆ   —  | j         |fi |¤Ž}|j        }|                      |¦  «        }d}|�|                      ||| j        ¬¦  «        }t          |||j        ¬¦  «        S )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 regression loss is computed (Mean-Square loss), If
            `config.num_labels > 1` a classification loss is computed (Cross-Entropy).
        N)rÓ   Úpooled_logitsrY   )ÚlossÚlogitsr&   )r™   rÉ   rÒ   Úloss_functionrY   r   r&   )r"   rZ   rÓ   rF   ÚoutputsrÌ   r×   rÖ   s           r$   r3   z(ConvNextV2ForImageClassification.forwardN  s„   € ð =L¸D¼OÈLÐ<cÐ<cÐ\bÐ<cÐ<cˆØÔ-ˆØ—’ Ñ/Ô/ˆàˆØÐØ×%Ò%¨VÀ6ÐRVÔR]Ð%Ñ^Ô^ˆDå3ØØØ!Ô/ð
ñ 
ô 
ð 	
r%   )NN)r4   r5   r6   Úaccepts_loss_kwargsr   r   r   r   r9   Ú
LongTensorr   r3   r:   r;   s   @r$   rÏ   rÏ   5  sœ   ø€ € € € € ð  Ððð ð ð ð ð Øà_cð
ð 
Ø!Ô-°Ñ4ð
ØEJÔEUÐX\ÑE\ð
à	-ð
ð 
ð 
ñ „^ñ Ôð
ð 
ð 
ð 
ð 
r%   rÏ   zT
    ConvNeXT V2 backbone, to be used with frameworks like DETR and MaskFormer.
    c            	       ó|   ‡ — e Zd ZdZˆ fd„Zeeedej	        de
e         defd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚConvNextV2BackboneFc                 ó–  •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |j        d         g|j        z   | _        i }t          | j	        | j
        ¦  «        D ]\  }}t          |d¬¦  «        ||<   Œt          j        |¦  «        | _        |                      ¦   «          d S )Nr   rC   )rA   )r   r   rM   r^   r¨   rÄ   rT   Únum_featuresÚzipÚout_featuresÚchannelsr=   r   Ú
ModuleDictÚhidden_states_normsr·   )r"   rY   rä   r»   rS   r#   s        €r$   r   zConvNextV2Backbone.__init__q  sÈ   ø€ Ý‰Œ×Ò˜Ñ Ô Ð å.¨vÑ6Ô6ˆŒÝ(¨Ñ0Ô0ˆŒØ#Ô0°Ô3Ð4°vÔ7JÑJˆÔð !ÐÝ#& tÔ'8¸$¼-Ñ#HÔ#Hð 	ið 	iÑˆE�<Ý)<¸\ÐWgÐ)hÑ)hÔ)hÐ Ñ&Ð&Ý#%¤=Ð1DÑ#EÔ#EˆÔ ð 	�ŠÑÔÐÐÐr%   rZ   rF   r'   c                 ó4  — |                       |¦  «        } | j        |fi |¤Ž}|j        }g }t          | j        |¦  «        D ]9\  }}|| j        v r+ | j        |         |¦  «        }|                     |¦  «         Œ:t          t          |¦  «        |¬¦  «        S )aÃ  
        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&   )
r^   rÄ   r&   rà   Ústage_namesrá   rä   r¶   r	   Útuple)	r"   rZ   rF   rÊ   rË   r&   ræ   r»   Úhidden_states	            r$   r3   zConvNextV2Backbone.forward�  s´   € ð8  Ÿ?š?¨<Ñ8Ô8ÐØ:F¸$¼,ÐGWÐ:bÐ:bÐ[aÐ:bÐ:bˆØ'Ô5ˆàˆÝ#& tÔ'7¸Ñ#GÔ#Gð 	2ð 	2ÑˆE�<Ø˜Ô)Ð)Ð)Ø>˜tÔ7¸Ô>¸|ÑLÔL�Ø×#Ò# LÑ1Ô1Ð1øå­5°Ñ+>Ô+>ÈmÐ\Ñ\Ô\Ð\r%   )r4   r5   r6   Úhas_attentionsr   r   r   r   r   rK   r   r   r	   r3   r:   r;   s   @r$   rÝ   rÝ   h  s¤   ø€ € € € € ð €Nðð ð ð ð ð  Ø Øð#]à”lð#]ð Ð+Ô,ð#]ð 
ð	#]ð #]ð #]ñ „^ñ !Ô ñ Ôð#]ð #]ð #]ð #]ð #]r%   rÝ   )rÏ   rÂ   r˜   rÝ   )0r7   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_loggerr4   ÚloggerÚModuler   rÅ   r=   rM   r`   rt   r‡   r˜   r¨   rÂ   rÏ   rÝ   Ú__all__r«   r%   r$   ú<module>rù      sž  ðð  Ð à €€€Ø Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð ð ð ð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ð 
ˆÔ	˜HÑ	%Ô	%€ðð ð ð ð �B”Iñ ô ð ð$ð ð ð ð ˜"œ,ñ ô ð ð6ð ð ð ð ˜2œ9ñ ô ð ð2%ð %ð %ð %ð %˜œñ %ô %ð %ð0(ð (ð (ð (ð (�b”iñ (ô (ð (ðX!ð !ð !ð !ð !�b”iñ !ô !ð !ðH ð%ð %ð %ð %ð % ñ %ô %ñ „ð%ð"%Oð %Oð %Oð %Oð %OÐ1ñ %Oô %Oð %OðP ð!
ð !
ð !
ð !
ð !
Ð/ñ !
ô !
ñ „ð!
ðH €ððñ ô ð)
ð )
ð )
ð )
ð )
Ð'@ñ )
ô )
ñô ð)
ðX €ððñ ô ð9]ð 9]ð 9]ð 9]ð 9]˜Ð(Añ 9]ô 9]ñô ð9]ðx uÐ
tÐ
t€€€r%   