Ë
    éÓ^j]  ã                   ód  — d Z ddlmZmZ ddl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 ddlmZ dd	lmZ d
gZ G d„ dej(                  «      Z G d„ d
ej(                  «      Zdd„Zdd„Z e ed¬«       ed¬«       ed¬«      dœ«      Zeddefd„«       Zeddefd„«       Zeddefd„«       Zy)z ConvMixer

é    )ÚOptionalÚTypeN©ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STD)ÚSelectAdaptivePool2dé   )Úregister_modelÚgenerate_default_cfgs)Úbuild_model_with_cfg)Úcheckpoint_seqÚ	ConvMixerc                   ó>   ‡ — e Zd Zdej                  fˆ fd„Zd„ Zˆ xZS )ÚResidualÚfnc                 ó0   •— t         ‰| �  «        || _        y ©N)ÚsuperÚ__init__r   )Úselfr   Ú	__class__s     €ú`/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/convmixer.pyr   zResidual.__init__   s   ø€ Ü‰ÑÔØˆ�ó    c                 ó*   — | j                  |«      |z   S r   )r   ©r   Úxs     r   ÚforwardzResidual.forward   s   € Ø�w‰w�q‹z˜A‰~Ðr   )Ú__name__Ú
__module__Ú__qualname__ÚnnÚModuler   r   Ú__classcell__©r   s   @r   r   r      s   ø„ ð˜2Ÿ9™9õ ör   r   c                   ó~  ‡ — e Zd Zddddddej                  ddf	ded	ed
ededededededeej                     fˆ fd„Z
ej                  j                  dd„«       Zej                  j                  dd„«       Zej                  j                  dej                  fd„«       Zddedee   fd„Zd„ Zddefd„Zd„ Zˆ xZS )r   é	   é   é   éè  Úavgg        NÚdimÚdepthÚkernel_sizeÚ
patch_sizeÚin_chansÚnum_classesÚglobal_poolÚ	drop_rateÚ	act_layerc                 ól  •— t         ‰| �  «        |
|dœ}|| _        || _        |x| _        | _        d| _        t        j                  t        j                  ||f||dœ|¤Ž |	«       t        j                  |fi |¤Ž«      | _        t        j                  t        |«      D �cg c]š  }t        j                  t        t        j                  t        j                  |||f|ddœ|¤Ž |	«       t        j                  |fi |¤Ž«      «      t        j                  ||fddi|¤Ž |	«       t        j                  |fi |¤Ž«      ‘Œœ c}Ž | _        t        |d¬	«      | _        t        j"                  |«      | _        |d
kD  rt        j&                  ||fi |¤Ž| _        y t        j(                  «       | _        y c c}w )N)ÚdeviceÚdtypeF)r-   ÚstrideÚsame)ÚgroupsÚpaddingr-   r	   T©Ú	pool_typeÚflattenr   )r   r   r0   r/   Únum_featuresÚhead_hidden_sizeÚgrad_checkpointingr!   Ú
SequentialÚConv2dÚBatchNorm2dÚstemÚranger   Úblocksr   ÚpoolingÚDropoutÚ	head_dropÚLinearÚIdentityÚhead)r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r5   r6   ÚkwargsÚddÚir   s                  €r   r   zConvMixer.__init__   s  ø€ ô 	‰ÑÔØ¨Ñ/ˆØ&ˆÔØ ˆŒØ47Ð7ˆÔ˜DÔ1Ø"'ˆÔä—M‘MÜ�I‰I�h ÐU°ÀJÑUÐRTÑUÙ‹KÜ�N‰N˜3Ñ% "Ñ%ó
ˆŒ	ô
 —m‘mô ˜U“|ö	%ð ô �m‰mÜœRŸ]™]ÜŸ	™	 # s¨KÐZÀÈVÑZÐWYÑZÙ!›ÜŸ™ sÑ1¨bÑ1óó ô
 —I‘I˜c 3Ñ<°AÐ<¸Ñ<Ù“KÜ—N‘N 3Ñ-¨"Ñ-õ	ò 	%ð
ˆŒô ,°kÈ4ÔPˆŒÜŸ™ IÓ.ˆŒØ9DÀqº”B—I‘I˜c ;Ñ5°"Ñ5ˆ�	ÌbÏkÉkËmˆ�	ùò	%s   Â!BF1c                 ó    — t        dd¬«      }|S )Nz^stemz^blocks\.(\d+))rD   rF   )Údict)r   ÚcoarseÚmatchers      r   Úgroup_matcherzConvMixer.group_matcherG   s   € ä˜HÐ->Ô?ˆØˆr   c                 ó   — || _         y r   )r@   )r   Úenables     r   Úset_grad_checkpointingz ConvMixer.set_grad_checkpointingL   s
   € à"(ˆÕr   Úreturnc                 ó   — | j                   S r   )rL   )r   s    r   Úget_classifierzConvMixer.get_classifierP   s   € à�y‰yÐr   c                 óÂ   — || _         |�t        |d¬«      | _        |dkD  r&t        j                  | j
                  |«      | _        y t        j                  «       | _        y )NTr;   r   )r0   r   rG   r!   rJ   r>   rK   rL   )r   r0   r1   s      r   Úreset_classifierzConvMixer.reset_classifierT   sL   € Ø&ˆÔØÐ"Ü/¸+ÈtÔTˆDŒLØALÈqÂ”B—I‘I˜d×/Ñ/°Ó=ˆ�	ÔVX×VaÑVaÓVcˆ�	r   c                 óÎ   — | j                  |«      }| j                  r6t        j                  j	                  «       st        | j                  |«      }|S | j                  |«      }|S r   )rD   r@   ÚtorchÚjitÚis_scriptingr   rF   r   s     r   Úforward_featureszConvMixer.forward_featuresZ   sR   € Ø�I‰I�a‹LˆØ×"Ò"¬5¯9©9×+AÑ+AÔ+CÜ˜tŸ{™{¨AÓ.ˆAð ˆð —‘˜A“ˆAØˆr   Ú
pre_logitsc                 óp   — | j                  |«      }| j                  |«      }|r|S | j                  |«      S r   )rG   rI   rL   )r   r   rb   s      r   Úforward_headzConvMixer.forward_headb   s2   € Ø�L‰L˜‹OˆØ�N‰N˜1ÓˆÙˆqÐ0 D§I¡I¨a£LÐ0r   c                 óJ   — | j                  |«      }| j                  |«      }|S r   )ra   rd   r   s     r   r   zConvMixer.forwardg   s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆr   ©F)Tr   )r   r   r    r!   ÚGELUÚintÚstrÚfloatr   r"   r   r^   r_   ÚignorerT   rW   rZ   r   r\   ra   Úboolrd   r   r#   r$   s   @r   r   r      s)  ø„ ð
  !ØØØ#Ø$Ø!Ø)+¯©ØØñ)\àð)\ð ð)\ð ð	)\ð
 ð)\ð ð)\ð ð)\ð ð)\ð ð)\ð ˜BŸI™I‘õ)\ðV ‡Y�Y×Ñòó ðð ‡Y�Y×Ñò)ó ð)ð ‡Y�Y×Ñð §	¡	ò ó ðñd¨Cð d¸hÀs¹mó dòñ1¨$ó 1ö
r   c                 ó`   — |j                  dd «      rt        d«      ‚t        t        | |fi |¤ŽS )NÚfeatures_onlyz3features_only not implemented for ConvMixer models.)ÚgetÚRuntimeErrorr   r   )ÚvariantÚ
pretrainedrM   s      r   Ú_create_convmixerrs   m   s0   € Ø‡z�z�/ 4Ô(ÜÐPÓQÐQä¤	¨7°JÑIÀ&ÑIÐIr   c                 ó2   — | ddd ddt         t        ddddœ|¥S )	Nr)   )r(   éà   ru   g¸…ëQ¸î?ÚbicubicrL   zstem.0Úmit)Úurlr0   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdÚ
classifierÚ
first_convÚlicenser   )rx   rM   s     r   Ú_cfgr‚   t   s3   € àØ¨=ÀtØ¨)Ü%Ô.BÐRXØ¨5ñð ðð r   ztimm/)Ú	hf_hub_id)zconvmixer_1536_20.in1kzconvmixer_768_32.in1kzconvmixer_1024_20_ks9_p14.in1krX   c                 ó<   — t        ddddddœ|¤Ž}t        d| fi |¤ŽS )Ni   é   r&   r'   ©r+   r,   r-   r.   Úconvmixer_1536_20© ©rQ   rs   ©rr   rM   Ú
model_argss      r   r‡   r‡   ‡   s-   € äÐP˜$ b°aÀAÑPÈÑP€JÜÐ0°*ÑKÀ
ÑKÐKr   c           	      óZ   — t        dddddt        j                  dœ|¤Ž}t        d| fi |¤ŽS )Ni   é    r'   )r+   r,   r-   r.   r3   Úconvmixer_768_32rˆ   )rQ   r!   ÚReLUrs   rŠ   s      r   rŽ   rŽ   �   s7   € äÐb˜# R°QÀ1ÔPR×PWÑPWÑbÐ[aÑb€JÜÐ/°ÑJ¸zÑJÐJr   c                 ó<   — t        ddddddœ|¤Ž}t        d| fi |¤ŽS )Ni   r…   r&   é   r†   Úconvmixer_1024_20_ks9_p14rˆ   r‰   rŠ   s      r   r’   r’   “   s-   € äÐQ˜$ b°aÀBÑQÈ&ÑQ€JÜÐ8¸*ÑSÈ
ÑSÐSr   rf   )Ú )Ú__doc__Útypingr   r   r^   Útorch.nnr!   Ú	timm.datar   r   Útimm.layersr   Ú	_registryr
   r   Ú_builderr   Ú_manipulater   Ú__all__r"   r   r   rs   r‚   Údefault_cfgsr‡   rŽ   r’   rˆ   r   r   ú<module>rž      sÜ   ðñ÷ "ã Ý ç AÝ ,ß <Ý *Ý 'àˆ-€ôˆr�y‰yô ôO�—	‘	ô OódJóñ %Ù"¨WÔ5Ù!¨GÔ4Ù&*°WÔ&=ñ&ó €ð ñL°Yò Ló ðLð
 ñK°Iò Kó ðKð
 ñT¸Yò Tó ñTr   