Ë
    éÓ^jú  ã                   óš   — d dl mZ d dlZd dlmZ d dlmZmZ d dlmZ d„ Z G d„ dej                  «      Z	 G d	„ d
ej                  «      Z
y)é    )ÚOptionalN)Únn)r   ÚTensor)Ú_get_activation_fnc                 ór  — t        | d«      rRt        | d«      rFt        j                  «       | _        | `| j
                  }| j                  }t        ||¬«      | _        nÅt        | d«      rRt        | d«      rFt        j                  «       | _        | `| j
                  }| j                  }t        ||¬«      | _        ngd| j                  «       v sd| j                  «       v r-| `
| j
                  }| j                  }t        ||¬«      | _
        nt        d«       t        d«       t        | d	«      rd
| _        | S )NÚglobal_poolÚfc)Únum_classesÚinitial_num_featuresÚ
classifierÚRegNetÚTResNetz;Model code-writing is not aligned currently with ml-decoderéÿÿÿÿÚ	drop_rater   )Úhasattrr   ÚIdentityr   r	   r
   Únum_featuresÚ	MLDecoderr   Ú	_get_nameÚheadÚprintÚexitr   )Úmodelr
   r   s      úa/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/layers/ml_decoder.pyÚadd_ml_decoder_headr   	   s  € Üˆu�mÔ$¬°¸Ô)=ÜŸK™K›MˆÔØˆHØ×'Ñ'ˆØ×)Ñ)ˆÜ¨È<ÔXˆ�Ü	�˜Ô	&¬7°5¸,Ô+GÜŸK™K›MˆÔØÐØ×'Ñ'ˆØ×)Ñ)ˆÜ$°ÐS_Ô`ˆÕØ	�U—_‘_Ó&Ñ	&¨)°u·±Ó7HÑ*HØˆJØ×'Ñ'ˆØ×)Ñ)ˆÜ¨;È\ÔZˆ�
äÐKÔLÜˆRŒÜˆu�kÔ"ØˆŒØ€Ló    c                   óx   ‡ — e Zd Z	 	 d	 dˆ fd„Zˆ fd„Z	 	 	 	 ddededee   dee   dee   d	ee   defd
„Zˆ xZS )ÚTransformerDecoderLayerOptimalÚreturnc                 ó`  •— t         ‰| �  «        t        j                  ||¬«      | _        t        j
                  |«      | _        t        j
                  |«      | _        t        j
                  |«      | _        t        j
                  |«      | _	        t        j                  |||¬«      | _        t        j                  ||«      | _        t        j                  ||«      | _        t        j                  ||¬«      | _        t        j                  ||¬«      | _        t#        |«      | _        y )N)Úeps)Údropout)ÚsuperÚ__init__r   Ú	LayerNormÚnorm1ÚDropoutr"   Údropout1Údropout2Údropout3ÚMultiheadAttentionÚmultihead_attnÚLinearÚlinear1Úlinear2Únorm2Únorm3r   Ú
activation)ÚselfÚd_modelÚnheadÚdim_feedforwardr"   r2   Úlayer_norm_epsÚ	__class__s          €r   r$   z'TransformerDecoderLayerOptimal.__init__$   sÍ   ø€ ä‰ÑÔÜ—\‘\ '¨~Ô>ˆŒ
Ü—z‘z 'Ó*ˆŒÜŸ
™
 7Ó+ˆŒÜŸ
™
 7Ó+ˆŒÜŸ
™
 7Ó+ˆŒä ×3Ñ3°G¸UÈGÔTˆÔô —y‘y ¨/Ó:ˆŒÜ—y‘y °'Ó:ˆŒä—\‘\ '¨~Ô>ˆŒ
Ü—\‘\ '¨~Ô>ˆŒ
ä,¨ZÓ8ˆ�r   c                 ó‚   •— d|vr't         j                  j                  j                  |d<   t        t
        | �  |«       y )Nr2   )Útorchr   Ú
functionalÚrelur#   r   Ú__setstate__)r3   Ústater8   s     €r   r=   z+TransformerDecoderLayerOptimal.__setstate__8   s5   ø€ Ø˜uÑ$Ü"'§(¡(×"5Ñ"5×":Ñ":ˆE�,ÑÜÔ,¨dÑ@ÀÕGr   ÚtgtÚmemoryÚtgt_maskÚmemory_maskÚtgt_key_padding_maskÚmemory_key_padding_maskc           	      óŒ  — || j                  |«      z   }| j                  |«      }| j                  |||«      d   }|| j                  |«      z   }| j	                  |«      }| j                  | j                  | j                  | j                  |«      «      «      «      }|| j                  |«      z   }| j                  |«      }|S )Nr   )r(   r&   r,   r)   r0   r/   r"   r2   r.   r*   r1   )r3   r?   r@   rA   rB   rC   rD   Útgt2s           r   Úforwardz&TransformerDecoderLayerOptimal.forward=   s«   € ð �D—M‘M #Ó&Ñ&ˆØ�j‰j˜‹oˆØ×"Ñ" 3¨°Ó7¸Ñ:ˆØ�D—M‘M $Ó'Ñ'ˆØ�j‰j˜‹oˆØ�|‰|˜DŸL™L¨¯©¸¿¹ÀcÓ9JÓ)KÓLÓMˆØ�D—M‘M $Ó'Ñ'ˆØ�j‰j˜‹oˆØˆ
r   )é   é   çš™™™™™¹?r<   gñhãˆµøä>)r   N)NNNN)	Ú__name__Ú
__module__Ú__qualname__r$   r=   r   r   rG   Ú__classcell__©r8   s   @r   r   r   #   s€   ø„ ØW]Ø $ð9Ø)-õ9ô(Hð
 QUØ04Ø9=Ø<@ñ˜6ð ¨6ð ¸XÀfÑ=Mð Ø% fÑ-ðà&.¨vÑ&6ðð *2°&Ñ)9ðð FL÷r   r   c                   ó&   ‡ — e Zd Zdˆ fd„	Zd„ Zˆ xZS )r   c                 ó`  •— t         ‰
| �  «        |dk  rdn|}||kD  r|}|| _        |dk  rdn|}t        j                  ||«      | _        d}d}d}t        |||¬«      }	t        j                  |	|¬«      | _        t        j                  ||«      | _
        | j                  j                  d	«       || _        t        ||z  d
z   «      | _        t        j                  j!                  t        j"                  ||| j                  «      «      | _        t        j                  j!                  t        j"                  |«      «      | _        t        j                  j(                  j+                  | j$                  «       t        j                  j(                  j-                  | j&                  d«       y )Nr   éd   é   rJ   é   rI   )r4   r6   r"   )Ú
num_layersFg+‡ÙÎ÷ï?)r#   r$   Úembed_len_decoderr   r-   Úembed_standartr   ÚTransformerDecoderÚdecoderÚ	EmbeddingÚquery_embedÚrequires_grad_r
   ÚintÚduplicate_factorr:   Ú	Parameterr   Úduplicate_poolingÚduplicate_pooling_biasÚinitÚxavier_normal_Ú	constant_)r3   r
   Únum_of_groupsÚdecoder_embeddingr   rV   Údecoder_dropoutÚnum_layers_decoderr6   Úlayer_decoder8   s             €r   r$   zMLDecoder.__init__[   sl  ø€ Ü‰ÑÔØ#0°1Ò#4™C¸-ÐØ˜{Ò*Ø +ÐØ!2ˆÔð $5°qÒ#8™CÐ>OÐÜ Ÿi™iÐ(<Ð>OÓPˆÔð ˆØÐØˆÜ5Ð>OØFUÐ_nôpˆä×,Ñ,¨\ÐFXÔYˆŒô Ÿ<™<Ð(9Ð;LÓMˆÔØ×Ñ×'Ñ'¨Ô.ð 'ˆÔÜ # KÐ2CÑ$CÀeÑ$KÓ LˆÔÜ!&§¡×!3Ñ!3Ü�L‰LÐ*Ð,=¸t×?TÑ?TÓUó"WˆÔä&+§h¡h×&8Ñ&8¼¿¹ÀkÓ9RÓ&SˆÔ#Ü�‰�‰×$Ñ$ T×%;Ñ%;Ô<Ü�‰�‰×Ñ × ;Ñ ;¸QÕ?r   c                 ó²  — t        |j                  «      dk(  r"|j                  d«      j                  dd«      }n|}| j	                  |«      }t
        j                  j                  j                  |d¬«      }|j                  d   }| j                  j                  }|j                  d«      j                  d|d«      }| j                  ||j                  dd«      «      }|j                  dd«      }t        j                  |j                  d   |j                  d   | j                  |j                   |j"                  ¬«      }t%        | j&                  «      D ]D  }	|d d …|	d d …f   }
| j(                  |	d d …d d …f   }t        j*                  |
|«      |d d …|	d d …f<   ŒF |j                  d«      d d …d | j,                  …f   }|| j.                  z  }|}|S )	Né   é   rT   T)Úinplacer   r   )ÚdeviceÚdtype)ÚlenÚshapeÚflattenÚ	transposerW   r:   r   r;   r<   r[   ÚweightÚ	unsqueezeÚexpandrY   Úzerosr^   rn   ro   ÚrangerV   r`   Úmatmulr
   ra   )r3   ÚxÚembedding_spatialÚembedding_spatial_786Úbsr[   r?   ÚhÚ
out_extrapÚiÚh_iÚw_iÚh_outÚlogitss                 r   rG   zMLDecoder.forward{   s«  € Üˆq�w‰w‹<˜1ÒØ !§	¡	¨!£× 6Ñ 6°q¸!Ó <Ñà !ÐØ $× 3Ñ 3Ð4EÓ FÐÜ %§¡× 3Ñ 3× 8Ñ 8Ð9NÐX\Ð 8Ó ]Ðà"×(Ñ(¨Ñ+ˆØ×&Ñ&×-Ñ-ˆà×#Ñ# AÓ&×-Ñ-¨b°"°bÓ9ˆØ�L‰L˜Ð3×=Ñ=¸aÀÓCÓDˆØ�K‰K˜˜1Óˆä—[‘[ §¡¨¡¨Q¯W©W°Q©Z¸×9NÑ9NÐWX×W_ÑW_Ðgh×gnÑgnÔoˆ
Ü�t×-Ñ-Ó.ò 	9ˆAØ’A�qš!�G‘*ˆCØ×(Ñ(¨ªAªq¨Ñ1ˆCÜ"'§,¡,¨s°CÓ"8ˆJ’q˜!šQ�wÒð	9ð ×"Ñ" 1Ó%¢aÐ):¨$×*:Ñ*:Ð):Ð&:Ñ;ˆØ�×,Ñ,Ñ,ˆØˆØˆr   )r   rS   rI   )rK   rL   rM   r$   rG   rN   rO   s   @r   r   r   Z   s   ø„ õ@ö@r   r   )Útypingr   r:   r   r   Útorch.nn.modules.transformerr   r   ÚModuler   r   © r   r   ú<module>r‰      s:   ðÝ ã Ý ß Ý ;òô4& R§Y¡Yô &ôn8�—	‘	õ 8r   