§
    ‚ŠtjDN  ã                   ó\  — 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
 ddl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 ddlmZ ddlmZmZmZmZ ddlm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3  ed¬¦  «        e G d„ de!¦  «        ¦   «         ¦   «         Z4 ed¬¦  «        e G d„ de"¦  «        ¦   «         ¦   «         Z5 ed¬¦  «        e G d„ de ¦  «        ¦   «         ¦   «         Z6 G d„ de(¦  «        Z7 G d„ de/¦  «        Z8 G d„ de¦  «        Z9 G d „ d!e3¦  «        Z: G d"„ d#e¦  «        Z; G d$„ d%e0¦  «        Z< G d&„ d'e1¦  «        Z= G d(„ d)e¦  «        Z> G d*„ d+e&¦  «        Z? G d,„ d-e2¦  «        Z@ G d.„ d/e%¦  «        ZA G d0„ d1e$¦  «        ZB G d2„ d3e'¦  «        ZC G d4„ d5e&¦  «        ZD G d6„ d7e*¦  «        ZE G d8„ d9e)¦  «        ZF G d:„ d;e+¦  «        ZG ed<¬=¦  «         G d>„ d?eF¦  «        ¦   «         ZH G d@„ dAeF¦  «        ZI G dB„ dCeeF¦  «        ZJg dD¢ZKdS )EzPyTorch AltCLIP model.é    N)Ústricté   )Úinitialization)Úcreate_bidirectional_mask)ÚBaseModelOutputWithPoolingÚ'BaseModelOutputWithPoolingAndProjection)ÚPreTrainedModel)ÚUnpack)ÚTransformersKwargsÚauto_docstringÚcan_return_tuple)Úmerge_with_config_defaults)Úcapture_outputsé   )ÚChineseCLIPModelÚChineseCLIPTextAttentionÚChineseCLIPTextLayerÚChineseCLIPTextSelfAttention)Ú
CLIPConfigÚCLIPTextConfigÚCLIPVisionConfig)
ÚCLIPMLPÚCLIPAttentionÚCLIPEncoderÚCLIPEncoderLayerÚ
CLIPOutputÚCLIPPreTrainedModelÚCLIPVisionEmbeddingsÚCLIPVisionModelÚ_get_vector_normÚimage_text_contrastive_loss)ÚRobertaEmbeddingsÚRobertaIntermediateÚRobertaOutputÚRobertaPoolerÚRobertaSelfOutputzBAAI/AltCLIP)Ú
checkpointc                   ó,  — e Zd ZU dZdZeed<   dZeed<   dZeed<   dZ	eed	<   d
Z
eed<   dZeed<   dZeez  ed<   dZeez  ed<   dZeed<   dZeed<   dZeed<   dZedz  ed<   dZedz  ed<   dZedz  ed<   dZeed<    e¦   «         Z e¦   «         ZdS )ÚAltCLIPTextConfigaR  
    project_dim (`int`, *optional*, defaults to 768):
        The dimensions of the teacher model before the mapping layer.

    Examples:

    ```python
    >>> from transformers import AltCLIPTextModel, AltCLIPTextConfig

    >>> # Initializing a AltCLIPTextConfig with BAAI/AltCLIP style configuration
    >>> configuration = AltCLIPTextConfig()

    >>> # Initializing a AltCLIPTextModel (with random weights) from the BAAI/AltCLIP style configuration
    >>> model = AltCLIPTextModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```i’Ð Ú
vocab_sizei   Úhidden_sizeé   Únum_hidden_layersé   Únum_attention_headsi   Úintermediate_sizeÚgeluÚ
hidden_actgš™™™™™¹?Úhidden_dropout_probr   Úattention_probs_dropout_probi  Úmax_position_embeddingsé   Útype_vocab_sizeg{®Gáz”?Úinitializer_factorNÚpad_token_idÚbos_token_idr   Úeos_token_idé   Úproject_dim)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   ÚintÚ__annotations__r+   r-   r/   r0   r2   Ústrr3   Úfloatr4   r5   r7   r8   r9   r:   r;   r=   ÚAttributeErrorÚprojection_dimÚattention_dropout© ó    úi/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/altclip/modular_altclip.pyr)   r)   :   sD  € € € € € € ðð ð& €J�ÐÐÑØ€K�ÐÐÑØÐ�sÐÐÑØ!Ð˜Ð!Ð!Ñ!Ø!Ð�sÐ!Ð!Ñ!Ø€J�ÐÐÑØ'*Ð˜˜u™Ð*Ð*Ñ*Ø01Ð  #¨¡+Ð1Ð1Ñ1Ø#&Ð˜SÐ&Ð&Ñ&Ø€O�SÐÐÑØ $Ð˜Ð$Ð$Ñ$Ø €L�#˜‘*Ð Ð Ñ Ø €L�#˜‘*Ð Ð Ñ Ø €L�#˜‘*Ð Ð Ñ Ø€K�ÐÐÑØ#�^Ñ%Ô%€NØ&˜Ñ(Ô(ÐÐÐrJ   r)   c                   ó   — e Zd ZdZdS )ÚAltCLIPVisionConfigaà  
    Example:

    ```python
    >>> from transformers import AltCLIPVisionConfig, AltCLIPVisionModel

    >>> # Initializing a AltCLIPVisionConfig with BAAI/AltCLIP style configuration
    >>> configuration = AltCLIPVisionConfig()

    >>> # Initializing a AltCLIPVisionModel (with random weights) from the BAAI/AltCLIP style configuration
    >>> model = AltCLIPVisionModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config
    ```N)r>   r?   r@   rA   rI   rJ   rK   rM   rM   c   s   € € € € € ðð ð ð rJ   rM   c                   ó"   — e Zd ZU dZdZeed<   dS )ÚAltCLIPConfiga  
    Example:

    ```python
    >>> from transformers import AltCLIPConfig, AltCLIPModel

    >>> # Initializing a AltCLIPConfig with BAAI/AltCLIP style configuration
    >>> configuration = AltCLIPConfig()

    >>> # Initializing a AltCLIPModel (with random weights) from the BAAI/AltCLIP style configuration
    >>> model = AltCLIPModel(configuration)

    >>> # Accessing the model configuration
    >>> configuration = model.config

    >>> # We can also initialize a AltCLIPConfig from a AltCLIPTextConfig and a AltCLIPVisionConfig

    >>> # Initializing a AltCLIPText and AltCLIPVision configuration
    >>> config_text = AltCLIPTextConfig()
    >>> config_vision = AltCLIPVisionConfig()

    >>> config = AltCLIPConfig(text_config=config_text, vision_config=config_vision)
    ```r<   rG   N)r>   r?   r@   rA   rG   rB   rC   rI   rJ   rK   rO   rO   w   s.   € € € € € € ðð ð0 €N�CÐÐÑÐÐrJ   rO   c                   ó   — e Zd ZdS )ÚAltCLIPOutputN©r>   r?   r@   rI   rJ   rK   rQ   rQ   •   ó   € € € € € Ø€DrJ   rQ   c                   ó   — e Zd ZdS )ÚAltRobertaEmbeddingsNrR   rI   rJ   rK   rU   rU   ™   rS   rJ   rU   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltRobertaSelfAttentionc                 óX   •— t          ¦   «                              |¦  «         d| _        d S )NF)ÚsuperÚ__init__Ú	is_causal©ÚselfÚconfigÚ	__class__s     €rK   rZ   z AltRobertaSelfAttention.__init__ž   s&   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØˆŒˆˆrJ   ©r>   r?   r@   rZ   Ú__classcell__©r_   s   @rK   rW   rW   �   s8   ø€ € € € € ðð ð ð ð ð ð ð ð rJ   rW   c                   ó   — e Zd ZdS )ÚAltRobertaSelfOutputNrR   rI   rJ   rK   rd   rd   £   rS   rJ   rd   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltRobertaAttentionc                 ó˜   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        d S ©N)rY   rZ   rW   r]   rd   Úoutputr\   s     €rK   rZ   zAltRobertaAttention.__init__¨   s;   ø€ Ý‰Œ×ÒÑÔÐÝ+¨FÑ3Ô3ˆŒ	Ý*¨6Ñ2Ô2ˆŒˆˆrJ   r`   rb   s   @rK   rf   rf   §   s8   ø€ € € € € ð3ð 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3rJ   rf   c                   ó   — e Zd ZdS )ÚAltRobertaIntermediateNrR   rI   rJ   rK   rk   rk   ®   rS   rJ   rk   c                   ó   — e Zd ZdS )ÚAltRobertaOutputNrR   rI   rJ   rK   rm   rm   ²   rS   rJ   rm   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltRobertaLayerc                 óÀ   •— t          ¦   «                              ¦   «          t          |¦  «        | _        t	          |¦  «        | _        t          |¦  «        | _        d S rh   )rY   rZ   rf   Ú	attentionrk   Úintermediaterm   ri   r\   s     €rK   rZ   zAltRobertaLayer.__init__·   sK   ø€ Ý‰Œ×ÒÑÔÐÝ,¨VÑ4Ô4ˆŒÝ2°6Ñ:Ô:ˆÔÝ& vÑ.Ô.ˆŒˆˆrJ   r`   rb   s   @rK   ro   ro   ¶   s8   ø€ € € € € ð/ð /ð /ð /ð /ð /ð /ð /ð /rJ   ro   c                   ó(   ‡ — e Zd ZdZdefˆ fd„Zˆ xZS )ÚAltRobertaEncoderzº
    Transformer encoder consisting of `config.num_hidden_layers` self attention layers. Each layer is a
    [`AltRobertaEncoderLayer`].

    Args:
        config: AltCLIPTextConfig
    r^   c                 óº   •‡— t          ¦   «                              ‰¦  «         t          j        ˆfd„t	          ‰j        ¦  «        D ¦   «         ¦  «        | _        d S )Nc                 ó.   •— g | ]}t          ‰¦  «        ‘ŒS rI   )ro   )Ú.0Ú_r^   s     €rK   ú
<listcomp>z.AltRobertaEncoder.__init__.<locals>.<listcomp>É   s!   ø€ Ð$fÐ$fÐ$fÀ¥_°VÑ%<Ô%<Ð$fÐ$fÐ$frJ   )rY   rZ   ÚnnÚ
ModuleListÚranger-   Úlayersr\   s    `€rK   rZ   zAltRobertaEncoder.__init__Ç   sQ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý”mÐ$fÐ$fÐ$fÐ$fÅeÈFÔLdÑFeÔFeÐ$fÑ$fÔ$fÑgÔgˆŒˆˆrJ   )r>   r?   r@   rA   r)   rZ   ra   rb   s   @rK   rt   rt   ¾   sZ   ø€ € € € € ðð ðhÐ0ð hð hð hð hð hð hð hð hð hð hrJ   rt   c                   ó   — e Zd ZdS )ÚAltRobertaPoolerNrR   rI   rJ   rK   r   r   Ì   rS   rJ   r   c                   ó   — e Zd ZdS )ÚAltCLIPAttentionNrR   rI   rJ   rK   r�   r�   Ð   rS   rJ   r�   c                   ó   — e Zd ZdS )Ú
AltCLIPMLPNrR   rI   rJ   rK   rƒ   rƒ   Ô   rS   rJ   rƒ   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚAltCLIPEncoderLayerr^   c                 óJ   •— t          ¦   «                              |¦  «         d S rh   )rY   rZ   r\   s     €rK   rZ   zAltCLIPEncoderLayer.__init__Ù   s!   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ð Ð rJ   )r>   r?   r@   rM   rZ   ra   rb   s   @rK   r…   r…   Ø   sE   ø€ € € € € ð!Ð2ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !rJ   r…   c                   ó   — e Zd ZdS )ÚAltCLIPEncoderNrR   rI   rJ   rK   rˆ   rˆ   Ý   rS   rJ   rˆ   c                   ó   — e Zd ZdS )ÚAltCLIPVisionEmbeddingsNrR   rI   rJ   rK   rŠ   rŠ   á   rS   rJ   rŠ   c                   óP   — e Zd Zg d¢ZeedœZ ej        ¦   «         d„ ¦   «         Z	dS )ÚAltCLIPPreTrainedModel)rU   ro   r…   rŠ   ©Úhidden_statesÚ
attentionsc                 ó‚  — t          j        | |¦  «         | j        j        }t	          |t
          ¦  «        rÇt          j        |j        d|j	        dz  |z  ¬¦  «         t          j        |j
        j        |j        j        |z  ¬¦  «         t          j        |j        j        |j        j        |z  ¬¦  «         t          j        |j        t!          j        |j        ¦  «                             d¦  «        ¦  «         dS t	          |t(          ¦  «        r¯|j	        dz  d|j        j        z  dz  z  |z  }|j	        dz  |z  }t          j        |j        j        |¬¦  «         t          j        |j        j        |¬¦  «         t          j        |j        j        |¬¦  «         t          j        |j        j        |¬¦  «         dS t	          |t4          ¦  «        r||j        j        dz  d|j        j        z  dz  z  |z  }d|j        j        z  dz  |z  }t          j        |j        j        |¬¦  «         t          j        |j        j        |¬¦  «         dS t	          |t<          ¦  «        rXt          j        |j        j        |j         dz  |z  ¬¦  «         t          j        |j!        j        |j"        dz  |z  ¬¦  «         dS t	          |tF          ¦  «        rjt          j        |j        t!          j        |j        j$        d         ¦  «                             d¦  «        ¦  «         t          j%        |j&        ¦  «         dS dS )	zInitialize the weightsg        g      à¿)ÚmeanÚstd)r’   )r6   éÿÿÿÿr   r“   N)'r	   Ú_init_weightsr^   r8   Ú
isinstancerŠ   ÚinitÚnormal_Úclass_embeddingÚ	embed_dimÚpatch_embeddingÚweightÚinitializer_rangeÚposition_embeddingÚcopy_Úposition_idsÚtorchÚarangeÚnum_positionsÚexpandr�   r-   Úq_projÚk_projÚv_projÚout_projrƒ   r+   Úfc1Úfc2ÚAltCLIPModelÚtext_projectionÚtext_embed_dimÚvisual_projectionÚvision_embed_dimrU   ÚshapeÚzeros_Útoken_type_ids)r]   ÚmoduleÚfactorÚin_proj_stdÚout_proj_stdÚfc_stds         rK   r”   z$AltCLIPPreTrainedModel._init_weightsì   s  € õ 	Ô% d¨FÑ3Ô3Ð3Ø”Ô/ˆÝ�fÕ5Ñ6Ô6ð 	/ÝŒL˜Ô/°c¸vÔ?OÐQUÑ?UÐX^Ñ?^Ð_Ñ_Ô_Ð_ÝŒL˜Ô/Ô6¸F¼MÔ<[Ð^dÑ<dÐeÑeÔeÐeÝŒL˜Ô2Ô9¸v¼}Ô?^ÐagÑ?gÐhÑhÔhÐhÝŒJ�vÔ*­E¬L¸Ô9MÑ,NÔ,N×,UÒ,UÐV]Ñ,^Ô,^Ñ_Ô_Ð_Ð_Ð_Ý˜Õ 0Ñ1Ô1ð 	/Ø!Ô+¨TÑ1°q¸6¼=Ô;ZÑ7ZÐ_cÑ6cÑdÐgmÑmˆKØ"Ô,¨dÑ2°fÑ<ˆLÝŒL˜œÔ-°;Ð?Ñ?Ô?Ð?ÝŒL˜œÔ-°;Ð?Ñ?Ô?Ð?ÝŒL˜œÔ-°;Ð?Ñ?Ô?Ð?ÝŒL˜œÔ/°\ÐBÑBÔBÐBÐBÐBÝ˜¥
Ñ+Ô+ð 	/Ø!œ=Ô4°dÑ:ÀÀFÄMÔDcÑ@cÐhlÑ?lÑmÐpvÑvˆKØ˜&œ-Ô3Ñ3¸Ñ<¸vÑEˆFÝŒL˜œÔ*°Ð7Ñ7Ô7Ð7ÝŒL˜œÔ*°Ð<Ñ<Ô<Ð<Ð<Ð<Ý˜¥Ñ-Ô-ð 	/ÝŒLØÔ&Ô-ØÔ)¨4Ñ/°&Ñ8ðñ ô ð õ ŒLØÔ(Ô/ØÔ+¨TÑ1°FÑ:ðñ ô ð ð ð õ ˜Õ 4Ñ5Ô5ð 	/ÝŒJ�vÔ*­E¬L¸Ô9LÔ9RÐSUÔ9VÑ,WÔ,W×,^Ò,^Ð_fÑ,gÔ,gÑhÔhÐhÝŒK˜Ô-Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/rJ   N)
r>   r?   r@   Ú_no_split_modulesr…   r�   Ú_can_record_outputsr    Úno_gradr”   rI   rJ   rK   rŒ   rŒ   å   sV   € € € € € ØuÐuÐuÐà,Ø&ðð Ðð
 €U„]�_„_ð /ð  /ñ „_ð /ð  /ð  /rJ   rŒ   c                   ó   ‡ — e Zd Zˆ fd„Zˆ xZS )ÚAltCLIPVisionModelc                 ó6   •—  t          ¦   «         j        di |¤ŽS )a  
        Examples:

        ```python
        >>> import httpx
        >>> from io import BytesIO
        >>> from PIL import Image
        >>> from transformers import AutoProcessor, AltCLIPVisionModel

        >>> model = AltCLIPVisionModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

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

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

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        >>> pooled_output = outputs.pooler_output  # pooled CLS states
        ```rI   )rY   Úforward©r]   Úsuper_kwargsr_   s     €rK   r½   zAltCLIPVisionModel.forward  s!   ø€ ð. �u‰wŒwŒÐ.Ð. Ð.Ð.Ð.rJ   )r>   r?   r@   r½   ra   rb   s   @rK   r»   r»     s8   ø€ € € € € ð/ð /ð /ð /ð /ð /ð /ð /ð /rJ   r»   aE  
    The model behaves as an encoder following the architecture described in *Attention is
    all you need*_ by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz
    Kaiser and Illia Polosukhin.

    .. _*Attention is all you need*: https://huggingface.co/papers/1706.03762
    )Úcustom_introc                   ó   ‡ — e Zd ZU eed<   dZdZeedœZ	dˆ fd„	Z
eee	 	 	 	 	 ddej        dz  d	ej        dz  d
ej        dz  dej        dz  dej        dz  dee         deez  fd„¦   «         ¦   «         ¦   «         Zˆ xZS )ÚAltRobertaModelr^   ©ÚtextÚword_embeddingsr�   Tc                 óò   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          |¦  «        | _        |rt          |¦  «        nd| _        |                      ¦   «          dS )zv
        add_pooling_layer (bool, *optional*, defaults to `True`):
            Whether to add a pooling layer
        N)	rY   rZ   rU   Ú
embeddingsrt   Úencoderr   ÚpoolerÚ	post_init)r]   r^   Úadd_pooling_layerr_   s      €rK   rZ   zAltRobertaModel.__init__>  sk   ø€ õ
 	‰Œ×Ò˜Ñ Ô Ð Ý.¨vÑ6Ô6ˆŒÝ(¨Ñ0Ô0ˆŒØ2CÐMÕ& vÑ.Ô.Ð.ÈˆŒà�ŠÑÔÐÐÐrJ   NÚ	input_idsÚattention_maskr±   rŸ   Úinputs_embedsÚkwargsÚreturnc                 ó   — |du |duz  rt          d¦  «        ‚|                      ||||¬¦  «        }t          | j        ||¬¦  «        } | j        |fd|i|¤Ž}|d         }| j        �|                      |¦  «        nd}	t          ||	¬¦  «        S )aK  
        Examples:

        ```python
        >>> from transformers import AutoTokenizer, AltRobertaModel

        >>> model = AltRobertaModel.from_pretrained("openai/alt_roberta-vit-base-patch32")
        >>> tokenizer = AutoTokenizer.from_pretrained("openai/alt_roberta-vit-base-patch32")

        >>> inputs = tokenizer(["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        >>> pooled_output = outputs.pooler_output  # pooled (EOS token) states
        ```Nz:You must specify exactly one of input_ids or inputs_embeds)rÌ   rŸ   r±   rÎ   )r^   rÎ   rÍ   rÍ   r   )Úlast_hidden_stateÚpooler_output)Ú
ValueErrorrÇ   r   r^   rÈ   rÉ   r   )
r]   rÌ   rÍ   r±   rŸ   rÎ   rÏ   Úencoder_outputsÚsequence_outputÚpooled_outputs
             rK   r½   zAltRobertaModel.forwardJ  sæ   € ð6 ˜Ð -°tÐ";Ñ<ð 	[ÝÐYÑZÔZÐZàŸšØØ%Ø)Ø'ð	 (ñ 
ô 
ˆõ 3Ø”;Ø'Ø)ð
ñ 
ô 
ˆð '˜$œ,Øð
ð 
à)ð
ð ð
ð 
ˆð
 *¨!Ô,ˆØ8<¼Ð8O˜Ÿš OÑ4Ô4Ð4ÐUYˆå)Ø-Ø'ð
ñ 
ô 
ð 	
rJ   )T©NNNNN)r>   r?   r@   r)   rC   Úinput_modalitiesÚ_input_embed_layerro   rW   r¸   rZ   r   r   r   r    ÚTensorr
   r   Útupler   r½   ra   rb   s   @rK   rÂ   rÂ   +  s*  ø€ € € € € € ð ÐÐÑØ Ðà*Ðà(Ø-ðð Ðð

ð 
ð 
ð 
ð 
ð 
ð  ØØð *.Ø.2Ø.2Ø,0Ø-1ð3
ð 3
à”< $Ñ&ð3
ð œ tÑ+ð3
ð œ tÑ+ð	3
ð
 ”l TÑ)ð3
ð ”| dÑ*ð3
ð Ð+Ô,ð3
ð 
Ð+Ñ	+ð3
ð 3
ð 3
ñ „^ñ „_ñ  Ôð3
ð 3
ð 3
ð 3
ð 3
rJ   rÂ   c                   óè   ‡ — e Zd ZU eed<   dZdZdZˆ fd„Ze	e
	 	 	 	 	 ddej        dz  dej        dz  d	ej        dz  d
ej        dz  dej        dz  dee         deez  fd„¦   «         ¦   «         Zˆ xZS )ÚAltCLIPTextModelr^   rÃ   rÅ   Úrobertac                 ó0  •— t          ¦   «                              |¦  «         t          |d¬¦  «        | _        t	          j        |j        |j        ¦  «        | _        t	          j	        |j        |j
        ¬¦  «        | _        |                      ¦   «          d S )NF)rË   )Úeps)rY   rZ   rÂ   rß   rz   ÚLinearr+   r=   ÚtransformationÚ	LayerNormÚlayer_norm_epsÚpre_LNrÊ   r\   s     €rK   rZ   zAltCLIPTextModel.__init__‰  s{   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý& vÀÐGÑGÔGˆŒÝ œi¨Ô(:¸FÔ<NÑOÔOˆÔÝ”l 6Ô#5¸6Ô;PÐQÑQÔQˆŒØ�ŠÑÔÐÐÐrJ   NrÌ   rÍ   r±   rŸ   rÎ   rÏ   rÐ   c           	      óÞ   —  | j         d|||||dœ|¤Ž}|d         }|                      |¦  «        }|                      |¦  «        }	|	dd…df         }
t          |	|
|j        |j        ¬¦  «        S )a+  
        Examples:

        ```python
        >>> from transformers import AutoProcessor, AltCLIPTextModel

        >>> model = AltCLIPTextModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

        >>> texts = ["it's a cat", "it's a dog"]

        >>> inputs = processor(text=texts, padding=True, return_tensors="pt")

        >>> outputs = model(**inputs)
        >>> last_hidden_state = outputs.last_hidden_state
        >>> pooled_output = outputs.pooler_output  # pooled CLS states
        ```)rÌ   rÍ   r±   rŸ   rÎ   r   N)rÒ   rÓ   rŽ   r�   rI   )rß   ræ   rã   r   rŽ   r�   )r]   rÌ   rÍ   r±   rŸ   rÎ   rÏ   ÚoutputsrÖ   Úprojection_staterÓ   s              rK   r½   zAltCLIPTextModel.forward�  s©   € ð: �$”,ð 
ØØ)Ø)Ø%Ø'ð
ð 
ð ð
ð 
ˆð " !œ*ˆð Ÿ+š+ oÑ6Ô6ˆð  ×.Ò.¨Ñ?Ô?ÐØ(¨¨¨¨A¨Ô.ˆå6Ø.Ø'Ø!Ô/ØÔ)ð	
ñ 
ô 
ð 	
rJ   rØ   )r>   r?   r@   r)   rC   rÙ   rÚ   Úbase_model_prefixrZ   r   r   r    rÛ   r
   r   rÜ   r   r½   ra   rb   s   @rK   rÞ   rÞ   ƒ  s  ø€ € € € € € ØÐÐÑØ ÐØ*ÐØ!Ððð ð ð ð ð Øð *.Ø.2Ø.2Ø,0Ø-1ð3
ð 3
à”< $Ñ&ð3
ð œ tÑ+ð3
ð œ tÑ+ð	3
ð
 ”l TÑ)ð3
ð ”| dÑ*ð3
ð Ð+Ô,ð3
ð 
Ð8Ñ	8ð3
ð 3
ð 3
ñ „^ñ Ôð3
ð 3
ð 3
ð 3
ð 3
rJ   rÞ   c                   óè   ‡ — e Zd ZU eed<   defˆ fd„Zˆ fd„Zˆ fd„Z	 	 	 	 	 	 	 ddej	        dz  dej
        dz  d	ej        dz  d
ej        dz  dej	        dz  dedz  dedee         deez  fd„Zˆ xZS )rª   r^   c                 ó  •— t          ¦   «                              |¦  «         |j        }|j        | _        t
                               | j        j        ¦  «        | _        t                               | j        j
        ¦  «        | _        d S rh   )rY   rZ   Útext_configr=   r¬   rÞ   Ú_from_configr^   Ú
text_modelr»   Úvision_configÚvision_model)r]   r^   rí   r_   s      €rK   rZ   zAltCLIPModel.__init__Ë  si   ø€ Ý‰Œ×Ò˜Ñ Ô Ð ØÔ(ˆØ)Ô5ˆÔÝ*×7Ò7¸¼Ô8OÑPÔPˆŒÝ.×;Ò;¸D¼KÔ<UÑVÔVˆÔÐÐrJ   c                 ó6   •—  t          ¦   «         j        di |¤ŽS )að  
        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoProcessor, AltCLIPModel

        >>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

        >>> inputs = processor(text=["a photo of a cat", "a photo of a dog"], padding=True, return_tensors="pt")
        >>> with torch.inference_mode():
        ...     text_features = model.get_text_features(**inputs)
        ```rI   )rY   Úget_text_featuresr¾   s     €rK   ró   zAltCLIPModel.get_text_featuresÒ  s"   ø€ ð )�u‰wŒwÔ(Ð8Ð8¨<Ð8Ð8Ð8rJ   c                 ó6   •—  t          ¦   «         j        di |¤ŽS )ao  
        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoProcessor, AltCLIPModel
        >>> from transformers.image_utils import load_image

        >>> model = AltCLIPModel.from_pretrained("BAAI/AltCLIP")
        >>> processor = AutoProcessor.from_pretrained("BAAI/AltCLIP")

        >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
        >>> image = load_image(url)

        >>> inputs = processor(images=image, return_tensors="pt")
        >>> with torch.inference_mode():
        ...     image_features = model.get_image_features(**inputs)
        ```rI   )rY   Úget_image_featuresr¾   s     €rK   rõ   zAltCLIPModel.get_image_featuresã  s"   ø€ ð& *�u‰wŒwÔ)Ð9Ð9¨LÐ9Ð9Ð9rJ   NFrÌ   Úpixel_valuesrÍ   r±   rŸ   Úreturn_lossÚinterpolate_pos_encodingrÏ   rÐ   c           	      ób  —  | j         d||dœ|¤Ž}	 | j        d||||dœ|¤Ž}
|	d         }|                      |¦  «        }|
d         }|                      |¦  «        }|t	          |¦  «        z  }|t	          |¦  «        z  }t          j        ||                     ¦   «                              |j	        ¦  «        ¦  «        }|| j
                             ¦   «                              |j	        ¦  «        z  }|                     ¦   «         }d}|rt          |¦  «        }t          ||||||
|	¬¦  «        S )u  
        return_loss (`bool`, *optional*):
            Whether or not to return the contrastive loss.

        Examples:

        ```python
        >>> import torch
        >>> from transformers import AutoProcessor, AltCLIPModel
        >>> from transformers.image_utils import load_image

        >>> model = AltCLIPModel.from_pretrained("OFA-Sys/chinese-clip-vit-base-patch16")
        >>> processor = AutoProcessor.from_pretrained("OFA-Sys/chinese-clip-vit-base-patch16")

        >>> url = "https://clip-cn-beijing.oss-cn-beijing.aliyuncs.com/pokemon.jpeg"
        >>> image = load_image(url)

        >>> inputs = processor(text=["æ�°å°¼é¾Ÿ", "å¦™è›™ç§�å­�", "å°�ç�«é¾™", "çš®å�¡ä¸˜"], images=image, return_tensors="pt", padding=True)

        >>> with torch.inference_mode():
        ...     outputs = model(**inputs)
        >>> logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
        >>> probs = logits_per_image.softmax(dim=1)  # we can take the softmax to get the label probabilities
        ```)rö   rø   )rÌ   rÍ   r±   rŸ   r6   N)ÚlossÚlogits_per_imageÚlogits_per_textÚtext_embedsÚimage_embedsÚtext_model_outputÚvision_model_outputrI   )rñ   rï   r­   r«   r    r    ÚmatmulÚtÚtoÚdeviceÚlogit_scaleÚexpr!   rQ   )r]   rÌ   rö   rÍ   r±   rŸ   r÷   rø   rÏ   Úvision_outputsÚtext_outputsrþ   rý   rü   rû   rú   s                   rK   r½   zAltCLIPModel.forwardø  s|  € ðF +˜Ô*ð 
Ø%Ø%=ð
ð 
ð ð
ð 
ˆð '�t”ð 
ØØ)Ø)Ø%ð	
ð 
ð
 ð
ð 
ˆð & aÔ(ˆØ×-Ò-¨lÑ;Ô;ˆà" 1”oˆØ×*Ò*¨;Ñ7Ô7ˆð $Õ&6°|Ñ&DÔ&DÑDˆØ!Õ$4°[Ñ$AÔ$AÑAˆõ  œ, {°L·N²NÑ4DÔ4D×4GÒ4GÈÔHZÑ4[Ô4[Ñ\Ô\ˆØ)¨DÔ,<×,@Ò,@Ñ,BÔ,B×,EÒ,EÀkÔFXÑ,YÔ,YÑYˆØ*×,Ò,Ñ.Ô.ÐàˆØð 	@Ý.¨Ñ?Ô?ˆDåØØ-Ø+Ø#Ø%Ø*Ø .ð
ñ 
ô 
ð 	
rJ   )NNNNNNF)r>   r?   r@   rO   rC   rZ   ró   rõ   r    Ú
LongTensorÚFloatTensorrÛ   Úboolr
   r   rÜ   rQ   r½   ra   rb   s   @rK   rª   rª   È  sZ  ø€ € € € € € ØÐÐÑðW˜}ð Wð Wð Wð Wð Wð Wð9ð 9ð 9ð 9ð 9ð":ð :ð :ð :ð :ð. .2Ø15Ø.2Ø.2Ø04Ø#'Ø).ðL
ð L
àÔ# dÑ*ðL
ð Ô'¨$Ñ.ðL
ð œ tÑ+ð	L
ð
 œ tÑ+ðL
ð Ô&¨Ñ-ðL
ð ˜D‘[ðL
ð #'ðL
ð Ð+Ô,ðL
ð 
�Ñ	ðL
ð L
ð L
ð L
ð L
ð L
ð L
ð L
rJ   rª   )rŒ   r»   rÞ   rª   r)   rM   rO   )LrA   r    Útorch.nnrz   Úhuggingface_hub.dataclassesr   Ú r   r–   Úmasking_utilsr   Úmodeling_outputsr   r   Úmodeling_utilsr	   Úprocessing_utilsr
   Úutilsr   r   r   Úutils.genericr   Úutils.output_capturingr   Ú"chinese_clip.modeling_chinese_clipr   r   r   r   Úclip.configuration_clipr   r   r   Úclip.modeling_clipr   r   r   r   r   r   r   r   r    r!   Úroberta.modeling_robertar"   r#   r$   r%   r&   r)   rM   rO   rQ   rU   rW   rd   rf   rk   rm   ro   rt   r   r�   rƒ   r…   rˆ   rŠ   rŒ   r»   rÂ   rÞ   rª   Ú__all__rI   rJ   rK   ú<module>r     sª  ðð Ð à €€€Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .à &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð SÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ RÐ Rðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð €˜>Ð*Ñ*Ô*Øð$)ð $)ð $)ð $)ð $)˜ñ $)ô $)ñ „ñ +Ô*ð$)ðN €˜>Ð*Ñ*Ô*Øðð ð ð ð Ð*ñ ô ñ „ñ +Ô*ðð$ €˜>Ð*Ñ*Ô*Øðð ð ð ð �Jñ ô ñ „ñ +Ô*ðð8	ð 	ð 	ð 	ð 	�Jñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð,ñ 	ô 	ð 	ðð ð ð ð Ð:ñ ô ð ð	ð 	ð 	ð 	ð 	Ð,ñ 	ô 	ð 	ð3ð 3ð 3ð 3ð 3Ð2ñ 3ô 3ð 3ð	ð 	ð 	ð 	ð 	Ð0ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�}ñ 	ô 	ð 	ð/ð /ð /ð /ð /Ð*ñ /ô /ð /ðhð hð hð hð h˜ñ hô hð hð	ð 	ð 	ð 	ð 	�}ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�}ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	�ñ 	ô 	ð 	ð!ð !ð !ð !ð !Ð*ñ !ô !ð !ð
	ð 	ð 	ð 	ð 	�[ñ 	ô 	ð 	ð	ð 	ð 	ð 	ð 	Ð2ñ 	ô 	ð 	ð(/ð (/ð (/ð (/ð (/Ð0ñ (/ô (/ð (/ðV/ð /ð /ð /ð /˜ñ /ô /ð /ð6 €ððñ ô ðL
ð L
ð L
ð L
ð L
Ð,ñ L
ô L
ñô ðL
ð^B
ð B
ð B
ð B
ð B
Ð-ñ B
ô B
ð B
ðJ|
ð |
ð |
ð |
ð |
Ð#Ð%;ñ |
ô |
ð |
ð~ð ð €€€rJ   