§
    ‚Štj1Œ  ã                   óz  — d Z ddlZddlm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mZ dd
lmZ ddlmZ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# 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¦  «        Z/e! G d„ de¦  «        ¦   «         Z0e! G d„ de0¦  «        ¦   «         Z1 e!d ¬!¦  «         G d"„ d#e0e¦  «        ¦   «         Z2 e!d$¬!¦  «         G d%„ d&e0¦  «        ¦   «         Z3g d'¢Z4dS )(zPyTorch OpenAI ImageGPT model.é    N)ÚAny)Únn)ÚCrossEntropyLossé   )Úinitialization)ÚACT2FN)ÚCacheÚDynamicCacheÚEncoderDecoderCache)ÚGenerationMixin)Úcreate_bidirectional_maskÚcreate_causal_mask)ÚGradientCheckpointingLayer)Ú)BaseModelOutputWithPastAndCrossAttentionsÚ!CausalLMOutputWithCrossAttentionsÚ SequenceClassifierOutputWithPast)ÚPreTrainedModel)ÚConv1D)Úauto_docstringÚloggingÚtorch_float)Úmaybe_autocasté   )ÚImageGPTConfigc                   óZ   ‡ — e Zd Zddee         defˆ fd„Zdej        dej        fd„Z	ˆ xZ
S )	ÚImageGPTLayerNormçñhãˆµøä>Úhidden_sizeÚepsc                 ó¬   •— t          ¦   «                              ¦   «          || _        t          j        t          j        |¦  «        ¦  «        | _        d S ©N)ÚsuperÚ__init__r   r   Ú	ParameterÚtorchÚTensorÚweight)Úselfr   r   Ú	__class__s      €úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/transformers/models/imagegpt/modeling_imagegpt.pyr#   zImageGPTLayerNorm.__init__1   s?   ø€ Ý‰Œ×ÒÑÔÐØˆŒÝ”l¥5¤<°Ñ#<Ô#<Ñ=Ô=ˆŒˆˆó    ÚtensorÚreturnc                 ó¦   — |t          j        t          j        t          j        |¦  «        dd¬¦  «        | j        z   ¦  «        z  }|| j        z  }|S )NéÿÿÿÿT)ÚaxisÚkeepdim)r%   ÚsqrtÚmeanÚsquarer   r'   )r(   r,   s     r*   ÚforwardzImageGPTLayerNorm.forward6   sL   € à�%œ*¥U¤Zµ´¸VÑ0DÔ0DÈ2ÐW[Ð%\Ñ%\Ô%\Ð_cÔ_gÑ%gÑhÔhÑhˆØ˜$œ+Ñ%ˆØˆr+   )r   )Ú__name__Ú
__module__Ú__qualname__ÚtupleÚintÚfloatr#   r%   r&   r5   Ú__classcell__©r)   s   @r*   r   r   0   sz   ø€ € € € € ð>ð > E¨#¤Jð >°Uð >ð >ð >ð >ð >ð >ð
˜eœlð ¨u¬|ð ð ð ð ð ð ð ð r+   r   c                   óÔ   ‡ — e Zd Zddedz  dedz  fˆ fd„Zdd„Zdd„Zd„ Zd	„ Z		 	 	 	 	 	 dd
e
j        dedz  de
j        dz  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 )ÚImageGPTAttentionFNÚis_cross_attentionÚ	layer_idxc           	      óô  •— t          ¦   «                              ¦   «          || _        |j        }|                      dt          j        t          j        ||ft
          j        ¬¦  «        ¦  «         	                    dd||¦  «        d¬¦  «         |j
        | _        |j        | _        | j        | j        z  | _        | j        | _        | j        | j        z  | j        k    r t!          d| j        › d| j        › d�¦  «        ‚|j        | _        || _        |j        | _        || _        |j        | _        | j        rBt-          d	| j        z  | j        ¦  «        | _        t-          | j        | j        ¦  «        | _        n"t-          d
| j        z  | j        ¦  «        | _        t-          | j        | j        ¦  «        | _        t5          j        |j        ¦  «        | _        t5          j        |j        ¦  «        | _        d S )NÚbias©Údtyper   F)Ú
persistentz=`embed_dim` must be divisible by num_heads (got `embed_dim`: z and `num_heads`: z).é   r   ) r"   r#   ÚconfigÚmax_position_embeddingsÚregister_bufferr%   ÚtrilÚonesÚboolÚviewr   Ú	embed_dimÚnum_attention_headsÚ	num_headsÚhead_dimÚ
split_sizeÚ
ValueErrorÚscale_attn_weightsr@   Úscale_attn_by_inverse_layer_idxrA   Úreorder_and_upcast_attnr   Úc_attnÚq_attnÚc_projr   ÚDropoutÚ
attn_pdropÚattn_dropoutÚresid_pdropÚresid_dropout)r(   rH   r@   rA   Úmax_positionsr)   s        €r*   r#   zImageGPTAttention.__init__>   sÙ  ø€ Ý‰Œ×ÒÑÔÐØˆŒØÔ6ˆØ×ÒØÝŒJ•u”z =°-Ð"@ÍÌ
ÐSÑSÔSÑTÔT×YÒYØ�1�m ]ñô ð ð 	ñ 	
ô 	
ð 	
ð  Ô+ˆŒØÔ3ˆŒØœ¨$¬.Ñ8ˆŒØœ.ˆŒØŒ=˜4œ>Ñ)¨T¬^Ò;Ð;Ýð'ÐPTÔP^ð 'ð 'Ø”Nð'ð 'ð 'ñô ð ð
 #)Ô";ˆÔØ"4ˆÔð 06Ô/UˆÔ,Ø"ˆŒØ'-Ô'EˆÔ$àÔ"ð 	EÝ   T¤^Ñ!3°T´^ÑDÔDˆDŒKÝ  ¤°´Ñ@Ô@ˆDŒKˆKå   T¤^Ñ!3°T´^ÑDÔDˆDŒKÝ˜Tœ^¨T¬^Ñ<Ô<ˆŒåœJ vÔ'8Ñ9Ô9ˆÔÝœZ¨Ô(:Ñ;Ô;ˆÔÐÐr+   c                 ó  — t          j        ||                     dd¦  «        ¦  «        }| j        r(|t	          |                     d¦  «        dz  ¦  «        z  }| j        r|t          | j        dz   ¦  «        z  }| j	        s›|                     d¦  «        |                     d¦  «        }}| j
        d d …d d …||z
  |…d |…f         }t          j        |j        ¦  «        j        }	t          j        |	|j        |j        ¬¦  «        }	t          j        |||	¦  «        }|�||z   } t#          j        d¬¦  «        |¦  «        }|                     |j        ¦  «        }|                      |¦  «        }t          j        ||¦  «        }
|
|fS )Nr/   éþÿÿÿç      à?r   ©rE   Údevice©Údim)r%   ÚmatmulÚ	transposerU   r   ÚsizerV   r;   rA   r@   rC   ÚfinforE   Úminr,   re   Úwherer   ÚSoftmaxÚtyper]   )r(   ÚqueryÚkeyÚvalueÚattention_maskÚattn_weightsÚquery_lengthÚ
key_lengthÚcausal_maskÚ
mask_valueÚattn_outputs              r*   Ú_attnzImageGPTAttention._attnf   s…  € Ý”| E¨3¯=ª=¸¸RÑ+@Ô+@ÑAÔAˆàÔ"ð 	MØ'­+°e·j²jÀ±n´nÈÑ6KÑ*LÔ*LÑLˆLð Ô/ð 	DØ'­%°´ÀÑ0BÑ*CÔ*CÑCˆLàÔ&ð 	Nà',§z¢z°"¡~¤~°s·x²xÀ±|´|˜*ˆLØœ) A A A q q q¨*°|Ñ*CÀjÐ*PÐR]ÐS]ÐR]Ð$]Ô^ˆKÝœ \Ô%7Ñ8Ô8Ô<ˆJõ œ j¸Ô8JÐS_ÔSfÐgÑgÔgˆJÝ œ; {°LÀ*ÑMÔMˆLàÐ%à'¨.Ñ8ˆLà)•r”z bÐ)Ñ)Ô)¨,Ñ7Ô7ˆð $×(Ò(¨¬Ñ5Ô5ˆØ×(Ò(¨Ñ6Ô6ˆå”l <°Ñ7Ô7ˆà˜LÐ(Ð(r+   c                 óZ  — |                      ¦   «         \  }}}}|                      ¦   «         \  }	}	}
}	t          j        ||z  ||
t          j        |j        ¬¦  «        }d}| j        r(|t          |                      d¦  «        ¦  «        dz  z  }| j        r|t          | j        dz   ¦  «        z  }t          |j        j
        d¬¦  «        5  |                     d||¦  «        |                     dd¦  «                             d||
¦  «        }}t          j        ||                     ¦   «         |                     ¦   «         d	|¬
¦  «        }|                     ||||
¦  «        }d d d ¦  «         n# 1 swxY w Y   | j        s›|                      d¦  «        |                      d¦  «        }}| j        d d …d d …||z
  |…d |…f         }t          j        |j        ¦  «        j        }t          j        ||j        |j        ¬¦  «        }t          j        |||¦  «        }|�||z   } t+          j        d¬¦  «        |¦  «        }|j        t          j        k    rt/          d¦  «        ‚| 
                    |j        ¦  «        }|                      |¦  «        }t          j        ||¦  «        }||fS )Nrd   g      ð?r/   rc   r   F)Úenabledrb   r   )ÚbetaÚalpharf   zDError with upcasting, attn_weights does not have dtype torch.float32)rj   r%   ÚemptyÚfloat32re   rU   r;   rV   rA   r   ro   Úreshaperi   Úbaddbmmr@   rC   rk   rE   rl   r,   rm   r   rn   ÚRuntimeErrorr]   rh   )r(   rp   rq   rr   rs   ÚbszrQ   Ú	q_seq_lenÚdkÚ_Ú	k_seq_lenrt   Úscale_factorÚqÚkru   rv   rw   rx   ry   s                       r*   Ú_upcast_and_reordered_attnz,ImageGPTAttention._upcast_and_reordered_attnˆ   sß  € à(-¯
ª
©¬Ñ%ˆˆY˜	 2Ø ŸXšX™ZœZÑˆˆ1ˆi˜õ ”{ 3¨¡?°I¸yÕPUÔP]ÐfkÔfrÐsÑsÔsˆð ˆØÔ"ð 	9Ø�E %§*¢*¨R¡.¤.Ñ1Ô1°SÑ8Ñ8ˆLàÔ/ð 	6Ø�E $¤.°1Ñ"4Ñ5Ô5Ñ5ˆLõ ˜EœLÔ-°uÐ=Ñ=Ô=ð 	Vð 	VØ—=’=  Y°Ñ3Ô3°S·]²]À2ÀrÑ5JÔ5J×5RÒ5RÐSUÐWYÐ[dÑ5eÔ5eˆqˆAÝ œ=¨°q·w²w±y´yÀ!Ç'Â'Á)Ä)ÐRSÐ[gÐhÑhÔhˆLØ'×/Ò/°°YÀ	È9ÑUÔUˆLð	Vð 	Vð 	Vñ 	Vô 	Vð 	Vð 	Vð 	Vð 	Vð 	Vð 	Vøøøð 	Vð 	Vð 	Vð 	Vð
 Ô&ð 	Nà',§z¢z°"¡~¤~°s·x²xÀ±|´|˜*ˆLØœ) A A A q q q¨*°|Ñ*CÀjÐ*PÐR]ÐS]ÐR]Ð$]Ô^ˆKÝœ \Ô%7Ñ8Ô8Ô<ˆJõ œ j¸Ô8JÐS_ÔSfÐgÑgÔgˆJÝ œ; {°LÀ*ÑMÔMˆLàÐ%à'¨.Ñ8ˆLà)•r”z bÐ)Ñ)Ô)¨,Ñ7Ô7ˆð Ô¥¤Ò.Ð.ÝÐeÑfÔfÐfØ#×(Ò(¨¬Ñ5Ô5ˆØ×(Ò(¨Ñ6Ô6ˆå”l <°Ñ7Ô7ˆà˜LÐ(Ð(s   ÃBE/Å/E3Å6E3c                 óˆ   — |                      ¦   «         dd…         ||fz   } |j        |Ž }|                     dddd¦  «        S )zJ
        Splits hidden_size dim into attn_head_size and num_heads
        Nr/   r   rG   r   r   )rj   rN   Úpermute©r(   r,   rQ   Úattn_head_sizeÚ	new_shapes        r*   Ú_split_headszImageGPTAttention._split_heads¸   sJ   € ð —K’K‘M”M # 2 #Ô&¨)°^Ð)DÑDˆ	Ø�”˜iÐ(ˆØ�~Š~˜a  A qÑ)Ô)Ð)r+   c                 óÆ   — |                      dddd¦  «                             ¦   «         }|                     ¦   «         dd…         ||z  fz   }|                     |¦  «        S )zS
        Merges attn_head_size dim and num_attn_heads dim into hidden_size
        r   rG   r   r   Nrb   )rŽ   Ú
contiguousrj   rN   r�   s        r*   Ú_merge_headszImageGPTAttention._merge_headsÀ   s\   € ð —’  1 a¨Ñ+Ô+×6Ò6Ñ8Ô8ˆØ—K’K‘M”M # 2 #Ô&¨)°nÑ*DÐ)FÑFˆ	Ø�{Š{˜9Ñ%Ô%Ð%r+   Úhidden_statesÚ
layer_pastrs   Úencoder_hidden_statesÚencoder_attention_maskÚ	use_cacheÚoutput_attentionsr-   c                 ó&  — |d u}	|j         \  }
}}|�Ht          |t          ¦  «        r1|j                             | j        ¦  «        }|	r|j        }n
|j        }n|}|	r|n|}|	�rt          | d¦  «        st          d¦  «        ‚|�G|rE|  
                    |¦  «        }|j        | j                 j        }|j        | j                 j        }�nS|  
                    |¦  «        }|                      |¦  «                             | j        d¬¦  «        \  }}|                     |
d| j        | j        ¦  «                             dd¦  «        }|                     |
d| j        | j        ¦  «                             dd¦  «        }nŸ|                      |¦  «                             | j        d¬¦  «        \  }}}|                     |
d| j        | j        ¦  «                             dd¦  «        }|                     |
d| j        | j        ¦  «                             dd¦  «        }|�0|                     ||| j        ¦  «        \  }}|	rd|j        | j        <   |                     |
|| j        | j        ¦  «                             dd¦  «        }| j        r|                      ||||¦  «        \  }}n|                      ||||¦  «        \  }}|                      || j        | j        ¦  «        }|                      |¦  «        }|                      |¦  «        }||fS )NrY   z«If class is used as cross attention, the weights `q_attn` have to be defined. Please make sure to instantiate class with `ImageGPTAttention(..., is_cross_attention=True)`.rG   rf   r/   r   T)ÚshapeÚ
isinstancer   Ú
is_updatedÚgetrA   Úcross_attention_cacheÚself_attention_cacheÚhasattrrT   rY   ÚlayersÚkeysÚvaluesrX   ÚsplitrS   rN   rQ   rR   ri   ÚupdaterW   rŒ   rz   r•   rZ   r_   )r(   r–   r—   rs   r˜   r™   rš   r›   Úkwargsr@   r„   Úseq_lenr‡   rŸ   Úcurr_past_key_valuesÚcurrent_statesrp   rq   rr   ry   rt   s                        r*   r5   zImageGPTAttention.forwardÈ   s  € ð 3¸$Ð>ÐØ'Ô-‰ˆˆW�aàÐ!Ý˜*Õ&9Ñ:Ô:ð 2Ø'Ô2×6Ò6°t´~ÑFÔF�
Ø%ð Kà+5Ô+KÐ(Ð(à+5Ô+JÐ(Ð(à'1Ð$à2DÐWÐ.Ð.È-ˆØñ 	WÝ˜4 Ñ*Ô*ð Ý ðtñô ð ð
 Ð%¨*Ð%àŸš MÑ2Ô2�Ø*Ô1°$´.ÔAÔF�Ø,Ô3°D´NÔCÔJ�‘àŸš MÑ2Ô2�Ø!Ÿ[š[¨Ñ8Ô8×>Ò>¸t¼ÐTUÐ>ÑVÔV‘
��UØ—h’h˜s B¨¬¸¼ÑFÔF×PÒPÐQRÐTUÑVÔV�ØŸ
š
 3¨¨D¬N¸D¼MÑJÔJ×TÒTÐUVÐXYÑZÔZ��à $§¢¨NÑ ;Ô ;× AÒ AÀ$Ä/ÐWXÐ AÑ YÔ YÑˆE�3˜Ø—(’(˜3  D¤N°D´MÑBÔB×LÒLÈQÐPQÑRÔRˆCØ—J’J˜s B¨¬¸¼ÑFÔF×PÒPÐQRÐTUÑVÔVˆEàÐ!à-×4Ò4°S¸%ÀÄÑPÔP‰JˆC�à!ð =Ø8<�
Ô% d¤nÑ5à—
’
˜3 ¨¬¸¼ÑGÔG×QÒQÐRSÐUVÑWÔWˆàÔ'ð 	VØ(,×(GÒ(GÈÈsÐTYÐ[iÑ(jÔ(jÑ%ˆK˜˜à(,¯
ª
°5¸#¸uÀnÑ(UÔ(UÑ%ˆK˜à×'Ò'¨°T´^ÀTÄ]ÑSÔSˆØ—k’k +Ñ.Ô.ˆØ×(Ò(¨Ñ5Ô5ˆà˜LÐ(Ð(r+   )FNr!   ©NNNNFF)r6   r7   r8   rM   r:   r#   rz   rŒ   r’   r•   r%   r&   r	   r9   r5   r<   r=   s   @r*   r?   r?   =   sS  ø€ € € € € ð&<ð &<°4¸$±;ð &<ÐSVÐY]ÑS]ð &<ð &<ð &<ð &<ð &<ð &<ðP )ð  )ð  )ð  )ðD.)ð .)ð .)ð .)ð`*ð *ð *ð&ð &ð &ð $(Ø.2Ø59Ø6:Ø!&Ø).ðB)ð B)à”|ðB)ð ˜D‘LðB)ð œ tÑ+ð	B)ð
  %œ|¨dÑ2ðB)ð !&¤¨tÑ 3ðB)ð ˜$‘;ðB)ð   $™;ðB)ð 
ðB)ð B)ð B)ð B)ð B)ð B)ð B)ð B)r+   r?   c                   óB   ‡ — e Zd Zˆ fd„Zdej        dej        fd„Zˆ xZS )ÚImageGPTMLPc                 ó  •— t          ¦   «                              ¦   «          |j        }t          ||¦  «        | _        t          ||¦  «        | _        t          |j                 | _        t          j
        |j        ¦  «        | _        d S r!   )r"   r#   r   r   Úc_fcrZ   r   Úactivation_functionÚactr   r[   r^   Údropout)r(   Úintermediate_sizerH   rO   r)   s       €r*   r#   zImageGPTMLP.__init__  sl   ø€ Ý‰Œ×ÒÑÔÐØÔ&ˆ	ÝÐ,¨iÑ8Ô8ˆŒ	Ý˜YÐ(9Ñ:Ô:ˆŒÝ˜&Ô4Ô5ˆŒÝ”z &Ô"4Ñ5Ô5ˆŒˆˆr+   r–   r-   c                 ó®   — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                      |¦  «        }|S r!   )r±   r³   rZ   r´   )r(   r–   s     r*   r5   zImageGPTMLP.forward  sL   € ØŸ	š	 -Ñ0Ô0ˆØŸš Ñ/Ô/ˆØŸš MÑ2Ô2ˆØŸš ]Ñ3Ô3ˆØÐr+   )r6   r7   r8   r#   r%   r&   r5   r<   r=   s   @r*   r¯   r¯     s^   ø€ € € € € ð6ð 6ð 6ð 6ð 6ð U¤\ð °e´lð ð ð ð ð ð ð ð r+   r¯   c                   ó¢   ‡ — e Zd Zdˆ fd„	Z	 	 	 	 	 	 ddej        dedz  dej        dz  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 )ÚImageGPTBlockNc                 ó°  •— t          ¦   «                              ¦   «          |j        }|j        �|j        nd|z  }t	          ||j        ¬¦  «        | _        t          ||¬¦  «        | _        t	          ||j        ¬¦  «        | _	        |j
        r2t          |d|¬¦  «        | _        t	          ||j        ¬¦  «        | _        t          ||¦  «        | _        d S )Né   ©r   ©rA   T)r@   rA   )r"   r#   r   Ún_innerr   Úlayer_norm_epsilonÚln_1r?   ÚattnÚln_2Úadd_cross_attentionÚcrossattentionÚln_cross_attnr¯   Úmlp)r(   rH   rA   r   Ú	inner_dimr)   s        €r*   r#   zImageGPTBlock.__init__  sÊ   ø€ Ý‰Œ×ÒÑÔÐØÔ(ˆØ&,¤nÐ&@�F”N�NÀaÈ+Áoˆ	å% k°vÔ7PÐQÑQÔQˆŒ	Ý% f¸	ÐBÑBÔBˆŒ	Ý% k°vÔ7PÐQÑQÔQˆŒ	àÔ%ð 	_Ý"3°FÈtÐ_hÐ"iÑ"iÔ"iˆDÔÝ!2°;ÀFÔD]Ð!^Ñ!^Ô!^ˆDÔå˜y¨&Ñ1Ô1ˆŒˆˆr+   Fr–   r—   rs   r˜   r™   rš   r›   r-   c                 óâ  — |}	|                       |¦  «        }|                      |||||¬¦  «        }
|
d         }|
dd …         }||	z   }|�ot          | d¦  «        st          d| › d�¦  «        ‚|}	|                      |¦  «        }|                      ||||||¬¦  «        }|d         }|	|z   }||dd …         z   }|}	|                      |¦  «        }|                      |¦  «        }|	|z   }|f|z   S )N)r—   rs   rš   r›   r   r   rÃ   z'If `encoder_hidden_states` are passed, z` has to be instantiated with cross-attention layers by setting `config.add_cross_attention=True`)r—   rs   r˜   r™   r›   )r¿   rÀ   r£   rT   rÄ   rÃ   rÁ   rÅ   )r(   r–   r—   rs   r˜   r™   rš   r›   r©   ÚresidualÚattn_outputsry   ÚoutputsÚcross_attn_outputsÚfeed_forward_hidden_statess                  r*   r5   zImageGPTBlock.forward.  s[  € ð !ˆØŸ	š	 -Ñ0Ô0ˆØ—y’yØØ!Ø)ØØ/ð !ñ 
ô 
ˆð # 1”oˆØ˜q˜r˜rÔ"ˆà# hÑ.ˆà Ð,å˜4Ð!1Ñ2Ô2ð Ý ðZ¸dð Zð Zð Zñô ð ð %ˆHØ ×.Ò.¨}Ñ=Ô=ˆMØ!%×!4Ò!4ØØ%Ø-Ø&;Ø'=Ø"3ð "5ñ "ô "Ðð -¨QÔ/ˆKà$ {Ñ2ˆMØÐ 2°1°2°2Ô 6Ñ6ˆGà ˆØŸ	š	 -Ñ0Ô0ˆØ%)§X¢X¨mÑ%<Ô%<Ð"à Ð#=Ñ=ˆàÐ 'Ñ)Ð)r+   r!   r­   )r6   r7   r8   r#   r%   r&   r	   rM   r9   r5   r<   r=   s   @r*   r¸   r¸     sÛ   ø€ € € € € ð2ð 2ð 2ð 2ð 2ð 2ð$ $(Ø.2Ø59Ø6:Ø!&Ø).ð5*ð 5*à”|ð5*ð ˜D‘Lð5*ð œ tÑ+ð	5*ð
  %œ|¨dÑ2ð5*ð !&¤¨tÑ 3ð5*ð ˜$‘;ð5*ð   $™;ð5*ð 
ð5*ð 5*ð 5*ð 5*ð 5*ð 5*ð 5*ð 5*r+   r¸   c                   ój   ‡ — e Zd ZU eed<   dZdZdZdZdgZ	 e
j        ¦   «         ˆ fd„¦   «         Zˆ xZS )ÚImageGPTPreTrainedModelrH   ÚtransformerÚ	input_ids)ÚimageTr¸   c           
      óL  •— t          ¦   «                              |¦  «         t          |t          ¦  «        rg|                     ¦   «         D ]P\  }}d|v rGd|v rCt          j        |d| j        j        t          j
        d| j        j        z  ¦  «        z  ¬¦  «         ŒQdS t          |t          ¦  «        rp|j        j        }t          j        |j        t!          j        t!          j        ||ft           j        ¬¦  «        ¦  «                             dd||¦  «        ¦  «         dS dS )	zInitialize the weights.rZ   r'   g        rG   )r3   ÚstdrD   r   N)r"   Ú_init_weightsrž   r   Únamed_parametersÚinitÚnormal_rH   Úinitializer_rangeÚmathr2   Ún_layerr?   rI   Úcopy_rC   r%   rK   rL   rM   rN   )r(   ÚmoduleÚnameÚpr`   r)   s        €r*   rÔ   z%ImageGPTPreTrainedModel._init_weightso  s6  ø€ õ 	‰Œ×Ò˜fÑ%Ô%Ð%õ �f�oÑ.Ô.ð 	Ø!×2Ò2Ñ4Ô4ð vð v‘��aØ˜tÐ#Ð#¨°DÐ(8Ð(8å”L ¨°$´+Ô2OÕRVÔR[Ð\]Ð`dÔ`kÔ`sÑ\sÑRtÔRtÑ2tÐuÑuÔuÐuøðvð võ ˜Õ 1Ñ2Ô2ð 	Ø"œMÔAˆMÝŒJØ”Ý”
�5œ: }°mÐ&DÍEÌJÐWÑWÔWÑXÔX×]Ò]Ø�q˜-¨ñô ñô ð ð ð ð	ð 	r+   )r6   r7   r8   r   Ú__annotations__Úbase_model_prefixÚmain_input_nameÚinput_modalitiesÚsupports_gradient_checkpointingÚ_no_split_modulesr%   Úno_gradrÔ   r<   r=   s   @r*   rÎ   rÎ   f  sx   ø€ € € € € € àÐÐÑØ%ÐØ!€OØ!ÐØ&*Ð#Ø(Ð)Ðà€U„]�_„_ðð ð ð ñ „_ðð ð ð ð r+   rÎ   c                   ó.  ‡ — e Zd Zdefˆ fd„Zd„ Zd„ Ze	 	 	 	 	 	 	 	 	 	 	 	 ddej	        dz  de
dz  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j	        dz  dedz  dedz  dedz  dedz  dedeez  fd„¦   «         Zˆ xZS )ÚImageGPTModelrH   c                 ó  •‡— t          ¦   «                              ‰¦  «         ‰j        | _        t	          j        ‰j        | j        ¦  «        | _        t	          j        ‰j        | j        ¦  «        | _	        t	          j
        ‰j        ¦  «        | _        t	          j        ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        t#          | j        ‰j        ¬¦  «        | _        d| _        |                      ¦   «          d S )Nc                 ó2   •— g | ]}t          ‰|¬ ¦  «        ‘ŒS )r¼   )r¸   )Ú.0ÚirH   s     €r*   ú
<listcomp>z*ImageGPTModel.__init__.<locals>.<listcomp>”  s&   ø€ ÐlÐlÐlÀq¥¨fÀÐ BÑ BÔ BÐlÐlÐlr+   r»   F)r"   r#   r   rO   r   Ú	EmbeddingÚ
vocab_sizeÚwterI   Úwper[   Ú
embd_pdropÚdropÚ
ModuleListÚrangeÚnum_hidden_layersÚhr   r¾   Úln_fÚgradient_checkpointingÚ	post_init©r(   rH   r)   s    `€r*   r#   zImageGPTModel.__init__‹  sÓ   øø€ Ý‰Œ×Ò˜Ñ Ô Ð àÔ+ˆŒå”< Ô 1°4´>ÑBÔBˆŒÝ”< Ô >ÀÄÑOÔOˆŒå”J˜vÔ0Ñ1Ô1ˆŒ	Ý”ÐlÐlÐlÐlÍEÐRXÔRjÑLkÔLkÐlÑlÔlÑmÔmˆŒÝ% d¤n¸&Ô:SÐTÑTÔTˆŒ	à&+ˆÔ#à�ŠÑÔÐÐÐr+   c                 ó   — | j         S r!   ©rï   )r(   s    r*   Úget_input_embeddingsz"ImageGPTModel.get_input_embeddings›  s	   € ØŒxˆr+   c                 ó   — || _         d S r!   rü   )r(   Únew_embeddingss     r*   Úset_input_embeddingsz"ImageGPTModel.set_input_embeddingsž  s   € Ø!ˆŒˆˆr+   NrÐ   Úpast_key_valuesrs   Útoken_type_idsÚposition_idsÚinputs_embedsr˜   r™   rš   r›   Úoutput_hidden_statesÚreturn_dictr©   r-   c           
      ó  — |
�|
n| j         j        }
|�|n| j         j        }|	�|	n| j         j        }	|�|n| j         j        }|�|�t          d¦  «        ‚|�T|                      ||¦  «         |                     ¦   «         }|                     d|d         ¦  «        }|j	        d         }n;|�*|                     ¦   «         dd…         }|j	        d         }nt          d¦  «        ‚|�|j
        n|j
        }| j        r%| j        r|	rt                               d¦  «         d}	|�|                     d|d         ¦  «        }|	r|€t          | j         ¬¦  «        }|€L|�|                     ¦   «         nd}t#          j        |d         |¬	¦  «        |z   }|                     d¦  «        }|�|                     |d¦  «        }|€|                      |¦  «        }|                      |¦  «        }||                     |j
        ¦  «        z   }t/          | j         d
d¦  «        rt1          | j         |||¬¦  «        }nt3          | j         ||¬¦  «        }|�t3          | j         |||¬¦  «        }|�|                      |¦  «        }||z   }|                      |¦  «        }||                     d¦  «        fz   }|
rdnd}|
r| j         j        rdnd}|rdnd}t9          | j        ¦  «        D ]M\  }}|r||fz   } |||||||	|
¬¦  «        }|d         }|
r$||d         fz   }| j         j        r||d         fz   }ŒN|                      |¦  «        } |j        |Ž }|r||fz   }|st?          d„ |||||fD ¦   «         ¦  «        S tA          |||||¬¦  «        S )a;  
        input_ids (`torch.LongTensor` of shape `(batch_size, input_ids_length)`):
            `input_ids_length` = `sequence_length` if `past_key_values` is `None` else
            `past_key_values.get_seq_length()` (`sequence_length` of input past key value states). Indices of input
            sequence tokens in the vocabulary.

            If `past_key_values` is used, only `input_ids` that do not have their past calculated should be passed as
            `input_ids`.

            Indices can be obtained using [`AutoImageProcessor`]. See [`ImageGPTImageProcessor.__call__`] for details.

        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, ImageGPTModel
        >>> 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()))

        >>> image_processor = AutoImageProcessor.from_pretrained("openai/imagegpt-small")
        >>> model = ImageGPTModel.from_pretrained("openai/imagegpt-small")

        >>> inputs = image_processor(images=image, return_tensors="pt")
        >>> outputs = model(**inputs)
        >>> last_hidden_states = outputs.last_hidden_state
        ```NzDYou cannot specify both input_ids and inputs_embeds at the same timer/   r   z5You have to specify either input_ids or inputs_embedszZ`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`...F)rH   )re   Ú
is_decoder)rH   r  rs   r  )rH   r  rs   )rH   r  rs   r˜   © )r™   rš   r›   r   rG   c              3   ó   K  — | ]}|®|V — Œ	d S r!   r	  )rê   Úvs     r*   ú	<genexpr>z(ImageGPTModel.forward.<locals>.<genexpr>=  s0   è è € ð ð àØ�=ð à �=�=�=ðð r+   )Úlast_hidden_stater  r–   Ú
attentionsÚcross_attentions)!rH   r›   r  rš   r  rT   Ú%warn_if_padding_and_no_attention_maskrj   rN   r�   re   rø   ÚtrainingÚloggerÚwarning_oncer
   Úget_seq_lengthr%   ÚarangeÚ	unsqueezerï   rð   ÚtoÚgetattrr   r   rò   rÂ   Ú	enumeraterö   r÷   r9   r   )r(   rÐ   r  rs   r  r  r  r˜   r™   rš   r›   r  r  r©   Úinput_shapeÚ
batch_sizere   Úpast_seen_tokensÚposition_embedsr–   Útoken_type_embedsÚoutput_shapeÚall_self_attentionsÚall_cross_attentionsÚall_hidden_statesrë   ÚblockrÊ   s                               r*   r5   zImageGPTModel.forward¡  s£  € ð` 2CÐ1NÐ-Ð-ÐTXÔT_ÔTqÐà$8Ð$DÐ Ð È$Ì+ÔJjð 	ð "+Ð!6�I�I¸D¼KÔ<Qˆ	Ø%0Ð%<�k�kÀ$Ä+ÔBYˆàÐ  ]Ð%>ÝÐcÑdÔdÐdØÐ"Ø×6Ò6°yÀ.ÑQÔQÐQØ#Ÿ.š.Ñ*Ô*ˆKØ!Ÿš r¨;°r¬?Ñ;Ô;ˆIØ"œ¨Ô+ˆJˆJØÐ&Ø'×,Ò,Ñ.Ô.¨s°¨sÔ3ˆKØ&Ô,¨QÔ/ˆJˆJåÐTÑUÔUÐUà%.Ð%:�Ô!Ð!ÀÔ@TˆàÔ&ð 	"¨4¬=ð 	"Øð "Ý×#Ò#Øpñô ð ð "�	àÐ%Ø+×0Ò0°°[À´_ÑEÔEˆNàð 	?˜Ð0Ý*°$´+Ð>Ñ>Ô>ˆOàÐØCRÐC^˜×=Ò=Ñ?Ô?Ð?ÐdeÐÝ œ<¨°B¬ÀÐGÑGÔGÐJZÑZˆLØ'×1Ò1°!Ñ4Ô4ˆLàÐ%Ø+×0Ò0°¸RÑ@Ô@ˆNàÐ Ø ŸHšH YÑ/Ô/ˆMØŸ(š( <Ñ0Ô0ˆØ%¨×(:Ò(:¸=Ô;OÑ(PÔ(PÑPˆå�4”; ¨eÑ4Ô4ð 	Ý/Ø”{Ø+Ø-Ø /ð	ñ ô ˆNˆNõ 7Ø”{Ø+Ø-ðñ ô ˆNð "Ð-Ý%>Ø”{Ø+Ø5Ø&;ð	&ñ &ô &Ð"ð Ð%Ø $§¢¨Ñ 8Ô 8ÐØ)Ð,=Ñ=ˆMàŸ	š	 -Ñ0Ô0ˆØ" m×&8Ò&8¸Ñ&<Ô&<Ð%>Ñ>ˆà$5Ð?˜b˜b¸4ÐØ%6Ðd¸4¼;Ô;ZÐd˜r˜rÐ`dÐØ"6Ð@˜B˜B¸DÐÝ! $¤&Ñ)Ô)ð 	Pð 	P‰HˆAˆuØ#ð IØ$5¸Ð8HÑ$HÐ!à�eØØØØ%Ø'=Ø#Ø"3ðñ ô ˆGð $ AœJˆMØ ð PØ&9¸WÀQ¼Z¸MÑ&IÐ#Ø”;Ô2ð PØ+?À7È1Ä:À-Ñ+OÐ(øàŸ	š	 -Ñ0Ô0ˆØ*˜Ô*¨LÐ9ˆð  ð 	EØ 1°]Ð4DÑ DÐàð 	Ýð ð à'¨Ð:KÐM`ÐbvÐwðñ ô ñ ô ð õ 9Ø+Ø+Ø+Ø*Ø1ð
ñ 
ô 
ð 	
r+   )NNNNNNNNNNNN)r6   r7   r8   r   r#   rý   r   r   r%   r&   r	   rM   r   r9   r   r5   r<   r=   s   @r*   rç   rç   ‰  s™  ø€ € € € € ð˜~ð ð ð ð ð ð ð ð ð ð"ð "ð "ð ð *.Ø(,Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø!%Ø)-Ø,0Ø#'ðg
ð g
à”< $Ñ&ðg
ð  ™ðg
ð œ tÑ+ð	g
ð
 œ tÑ+ðg
ð ”l TÑ)ðg
ð ”| dÑ*ðg
ð  %œ|¨dÑ2ðg
ð !&¤¨tÑ 3ðg
ð ˜$‘;ðg
ð   $™;ðg
ð # T™kðg
ð ˜D‘[ðg
ð ðg
ð 
Ð:Ñ	:ðg
ð g
ð g
ñ „^ðg
ð g
ð g
ð g
ð g
r+   rç   z‹
    The ImageGPT Model transformer with a language modeling head on top (linear layer with weights tied to the input
    embeddings).
    )Úcustom_introc            !       ó@  ‡ — e Zd ZddiZdefˆ fd„Ze	 	 	 	 	 	 	 	 	 	 	 	 	 ddej        dz  de	dz  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j        dz  dej        dz  de
dz  de
dz  de
dz  de
dz  dedeez  fd„¦   «         Zˆ xZS )ÚImageGPTForCausalImageModelingzlm_head.weightztransformer.wte.weightrH   c                 óì   •— t          ¦   «                              |¦  «         t          |¦  «        | _        t	          j        |j        |j        dz
  d¬¦  «        | _        |  	                    ¦   «          d S )Nr   F©rC   )
r"   r#   rç   rÏ   r   ÚLinearÚn_embdrî   Úlm_headrù   rú   s     €r*   r#   z'ImageGPTForCausalImageModeling.__init__U  se   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ý(¨Ñ0Ô0ˆÔÝ”y ¤°Ô0AÀAÑ0EÈEÐRÑRÔRˆŒð 	�ŠÑÔÐÐÐr+   NrÐ   r  rs   r  r  r  r˜   r™   Úlabelsrš   r›   r  r  r©   r-   c                 óR  — |�|n| j         j        }|                      |||||||||
|||¬¦  «        }|d         }|                      |¦  «        }d}|	�“|ddd…dd…f                              ¦   «         }|	ddd…f                              ¦   «         }t          ¦   «         } ||                     d|                     d¦  «        ¦  «        |                     d¦  «        ¦  «        }|s|f|dd…         z   }|�|f|z   n|S t          |||j	        |j
        |j        |j        ¬¦  «        S )a&
  
        input_ids (`torch.LongTensor` of shape `(batch_size, input_ids_length)`):
            `input_ids_length` = `sequence_length` if `past_key_values` is `None` else
            `past_key_values.get_seq_length()` (`sequence_length` of input past key value states). Indices of input
            sequence tokens in the vocabulary.

            If `past_key_values` is used, only `input_ids` that do not have their past calculated should be passed as
            `input_ids`.

            Indices can be obtained using [`AutoImageProcessor`]. See [`ImageGPTImageProcessor.__call__`] for details.
        labels (`torch.LongTensor` of shape `(batch_size, input_ids_length)`, *optional*):
            Labels for language modeling. Note that the labels **are shifted** inside the model, i.e. you can set
            `labels = input_ids` Indices are selected in `[-100, 0, ..., config.vocab_size]` All labels set to `-100`
            are ignored (masked), the loss is only computed for labels in `[0, ..., config.vocab_size]`

        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, ImageGPTForCausalImageModeling
        >>> import torch
        >>> import matplotlib.pyplot as plt
        >>> import numpy as np

        >>> image_processor = AutoImageProcessor.from_pretrained("openai/imagegpt-small")
        >>> model = ImageGPTForCausalImageModeling.from_pretrained("openai/imagegpt-small")
        >>> device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
        >>> model.to(device)  # doctest: +IGNORE_RESULT

        >>> # unconditional generation of 8 images
        >>> batch_size = 4
        >>> context = torch.full((batch_size, 1), model.config.vocab_size - 1)  # initialize with SOS token
        >>> context = context.to(device)
        >>> output = model.generate(
        ...     input_ids=context, max_length=model.config.n_positions + 1, temperature=1.0, do_sample=True, top_k=40
        ... )

        >>> clusters = image_processor.clusters
        >>> height = image_processor.size["height"]
        >>> width = image_processor.size["width"]

        >>> samples = output[:, 1:].detach().cpu().numpy()
        >>> samples_img = [
        ...     np.reshape(np.rint(127.5 * (clusters[s] + 1.0)), [height, width, 3]).astype(np.uint8) for s in samples
        ... ]  # convert color cluster tokens back to pixels
        >>> f, axes = plt.subplots(1, batch_size, dpi=300)

        >>> for img, ax in zip(samples_img, axes):  # doctest: +IGNORE_RESULT
        ...     ax.axis("off")
        ...     ax.imshow(img)
        ```N)r  rs   r  r  r  r˜   r™   rš   r›   r  r  r   .r/   r   )ÚlossÚlogitsr  r–   r  r  )rH   r  rÏ   r+  r”   r   rN   rj   r   r  r–   r  r  )r(   rÐ   r  rs   r  r  r  r˜   r™   r,  rš   r›   r  r  r©   Útransformer_outputsr–   Ú	lm_logitsr.  Úshift_logitsÚshift_labelsÚloss_fctÚoutputs                          r*   r5   z&ImageGPTForCausalImageModeling.forward]  st  € ðJ &1Ð%<�k�kÀ$Ä+ÔBYˆà"×.Ò.ØØ+Ø)Ø)Ø%Ø'Ø"7Ø#9ØØ/Ø!5Ø#ð /ñ 
ô 
Ðð ,¨AÔ.ˆà—L’L Ñ/Ô/ˆ	àˆØÐà$ S¨#¨2¨#¨q¨q¨q [Ô1×<Ò<Ñ>Ô>ˆLØ! # q r r 'œ?×5Ò5Ñ7Ô7ˆLå'Ñ)Ô)ˆHØ�8˜L×-Ò-¨b°,×2CÒ2CÀBÑ2GÔ2GÑHÔHÈ,×J[ÒJ[Ð\^ÑJ_ÔJ_Ñ`Ô`ˆDàð 	FØ�\Ð$7¸¸¸Ô$;Ñ;ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå0ØØØ/Ô?Ø-Ô;Ø*Ô5Ø0ÔAð
ñ 
ô 
ð 	
r+   )NNNNNNNNNNNNN)r6   r7   r8   Ú_tied_weights_keysr   r#   r   r%   r&   r	   rM   r   r9   r   r5   r<   r=   s   @r*   r&  r&  L  sž  ø€ € € € € ð +Ð,DÐEÐð˜~ð ð ð ð ð ð ð ð *.Ø(,Ø.2Ø.2Ø,0Ø-1Ø59Ø6:Ø&*Ø!%Ø)-Ø,0Ø#'ðl
ð l
à”< $Ñ&ðl
ð  ™ðl
ð œ tÑ+ð	l
ð
 œ tÑ+ðl
ð ”l TÑ)ðl
ð ”| dÑ*ðl
ð  %œ|¨dÑ2ðl
ð !&¤¨tÑ 3ðl
ð ”˜tÑ#ðl
ð ˜$‘;ðl
ð   $™;ðl
ð # T™kðl
ð ˜D‘[ðl
ð ðl
ð  
Ð2Ñ	2ð!l
ð l
ð l
ñ „^ðl
ð l
ð l
ð l
ð l
r+   r&  zË
    The ImageGPT Model transformer with an image classification head on top (linear layer).
    [`ImageGPTForImageClassification`] average-pools the hidden states in order to do the classification.
    c                   ó  ‡ — e Zd Zdefˆ fd„Ze	 	 	 	 	 	 	 	 	 	 	 ddej        dz  dedz  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z  de	dz  de	dz  de
deez  fd„¦   «         Zˆ xZS )ÚImageGPTForImageClassificationrH   c                 óþ   •— t          ¦   «                              |¦  «         |j        | _        t          |¦  «        | _        t          j        |j        | j        d¬¦  «        | _        |  	                    ¦   «          d S )NFr(  )
r"   r#   Ú
num_labelsrç   rÏ   r   r)  r*  Úscorerù   rú   s     €r*   r#   z'ImageGPTForImageClassification.__init__Ô  si   ø€ Ý‰Œ×Ò˜Ñ Ô Ð Ø Ô+ˆŒÝ(¨Ñ0Ô0ˆÔÝ”Y˜vœ}¨d¬oÀEÐJÑJÔJˆŒ
ð 	�ŠÑÔÐÐÐr+   NrÐ   r  rs   r  r  r  r,  rš   r›   r  r  r©   r-   c                 ó€  — |�|n| j         j        }|                      ||||||||	|
|¬¦
  «
        }|d         }|                     d¬¦  «        }|                      |¦  «        }d}|�|                      ||| j         ¦  «        }|s|f|dd…         z   }|�|f|z   n|S t          |||j        |j        |j	        ¬¦  «        S )aÊ  
        input_ids (`torch.LongTensor` of shape `(batch_size, input_ids_length)`):
            `input_ids_length` = `sequence_length` if `past_key_values` is `None` else
            `past_key_values.get_seq_length()` (`sequence_length` of input past key value states). Indices of input
            sequence tokens in the vocabulary.

            If `past_key_values` is used, only `input_ids` that do not have their past calculated should be passed as
            `input_ids`.

            Indices can be obtained using [`AutoImageProcessor`]. See [`ImageGPTImageProcessor.__call__`] for details.
        labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*):
            Labels for computing the sequence 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).

        Examples:

        ```python
        >>> from transformers import AutoImageProcessor, ImageGPTForImageClassification
        >>> 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()))

        >>> image_processor = AutoImageProcessor.from_pretrained("openai/imagegpt-small")
        >>> model = ImageGPTForImageClassification.from_pretrained("openai/imagegpt-small")

        >>> inputs = image_processor(images=image, return_tensors="pt")
        >>> outputs = model(**inputs)
        >>> logits = outputs.logits
        ```N)	r  rs   r  r  r  rš   r›   r  r  r   r   rf   )r.  r/  r  r–   r  )
rH   r  rÏ   r3   r;  Úloss_functionr   r  r–   r  )r(   rÐ   r  rs   r  r  r  r,  rš   r›   r  r  r©   r0  r–   Úpooled_hidden_statesr/  r.  r5  s                      r*   r5   z&ImageGPTForImageClassification.forwardÝ  s  € ðf &1Ð%<�k�kÀ$Ä+ÔBYˆà"×.Ò.ØØ+Ø)Ø)Ø%Ø'ØØ/Ø!5Ø#ð /ñ 
ô 
Ðð ,¨AÔ.ˆà,×1Ò1°aÐ1Ñ8Ô8Ðà—’Ð0Ñ1Ô1ˆàˆØÐØ×%Ò% f¨f°d´kÑBÔBˆDàð 	FØ�YÐ!4°Q°R°RÔ!8Ñ8ˆFØ)-Ð)9�T�G˜fÑ$Ð$¸vÐEå/ØØØ/Ô?Ø-Ô;Ø*Ô5ð
ñ 
ô 
ð 	
r+   )NNNNNNNNNNN)r6   r7   r8   r   r#   r   r%   r&   r	   rM   r   r9   r   r5   r<   r=   s   @r*   r8  r8  Í  sf  ø€ € € € € ð˜~ð ð ð ð ð ð ð ð *.Ø(,Ø.2Ø.2Ø,0Ø-1Ø&*Ø!%Ø)-Ø,0Ø#'ðT
ð T
à”< $Ñ&ðT
ð  ™ðT
ð œ tÑ+ð	T
ð
 œ tÑ+ðT
ð ”l TÑ)ðT
ð ”| dÑ*ðT
ð ”˜tÑ#ðT
ð ˜$‘;ðT
ð   $™;ðT
ð # T™kðT
ð ˜D‘[ðT
ð ðT
ð 
Ð1Ñ	1ðT
ð T
ð T
ñ „^ðT
ð T
ð T
ð T
ð T
r+   r8  )r&  r8  rç   rÎ   )5Ú__doc__rÙ   Útypingr   r%   r   Útorch.nnr   Ú r   rÖ   Úactivationsr   Úcache_utilsr	   r
   r   Ú
generationr   Úmasking_utilsr   r   Úmodeling_layersr   Úmodeling_outputsr   r   r   Úmodeling_utilsr   Úpytorch_utilsr   Úutilsr   r   r   Úutils.genericr   Úconfiguration_imagegptr   Ú
get_loggerr6   r  ÚModuler   r?   r¯   r¸   rÎ   rç   r&  r8  Ú__all__r	  r+   r*   ú<module>rQ     s˜  ðð %Ð $à €€€Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %à &Ð &Ð &Ð &Ð &Ð &Ø !Ð !Ð !Ð !Ð !Ð !Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ )Ð )Ð )Ð )Ð )Ð )Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ 9Ð 9Ð 9Ð 9Ð 9Ð 9ðð ð ð ð ð ð ð ð ð ð
 .Ð -Ð -Ð -Ð -Ð -Ø #Ð #Ð #Ð #Ð #Ð #ðð ð ð ð ð ð ð ð ð ð
 ,Ð +Ð +Ð +Ð +Ð +Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð 
ˆÔ	˜HÑ	%Ô	%€ð
ð 
ð 
ð 
ð 
˜œ	ñ 
ô 
ð 
ðM)ð M)ð M)ð M)ð M)˜œ	ñ M)ô M)ð M)ð`ð ð ð ð �"”)ñ ô ð ð"E*ð E*ð E*ð E*ð E*Ð.ñ E*ô E*ð E*ðP ðð ð ð ð ˜oñ ô ñ „ððD ð
ð 
ð 
ð 
ð 
Ð+ñ 
ô 
ñ „ð
ðD €ððñ ô ðx
ð x
ð x
ð x
ð x
Ð%<¸oñ x
ô x
ñô ðx
ðv €ððñ ô ð_
ð _
ð _
ð _
ð _
Ð%<ñ _
ô _
ñô ð_
ðDð ð €€€r+   