Ë
    éÓ^j2  ã            
       óœ  — 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 ddlmZmZmZmZ dd	lmZmZ dd
lmZmZ g Zd„ Zdd„Z e ed¬«       ed¬«       ed¬«       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eddefd„«       Zeddefd„«       Zeddefd„«       Z y)é    )ÚpartialN©ÚIMAGENET_DEFAULT_MEANÚIMAGENET_DEFAULT_STDé   )Úbuild_model_with_cfg)Úpretrained_cfg_for_features)ÚSqueezeExcite)Údecode_arch_defÚresolve_act_layerÚresolve_bn_argsÚround_channels)Úregister_modelÚgenerate_default_cfgs)ÚMobileNetV3ÚMobileNetV3Featuresc                 óˆ  — d}t        t        dt        j                  t        ¬«      }t        dt        |«      |dt        t        j                  fi t        |«      ¤Žt        |d«      |dœ|¤Ž}d}t        }d}	|j                  d	d«      r
d
}d}	t        }t        ||| f| |	dœ|¤Ž}
|rt        |
j                  «      |
_        |
S )zˆCreates a hardcorenas model

    Ref impl: https://github.com/Alibaba-MIIL/HardCoReNAS
    Paper: https://arxiv.org/abs/2102.11646

    i   Úhard_sigmoid)Ú
gate_layerÚforce_act_layerÚrd_round_fné    Ú
hard_swish)Ú
block_argsÚnum_featuresÚ	stem_sizeÚ
norm_layerÚ	act_layerÚse_layerFNÚfeatures_onlyT)Únum_classesr   Úglobal_poolÚ	head_convÚ	head_biasr"   )Úpretrained_strictÚkwargs_filter© )r   r
   ÚnnÚReLUr   Údictr   ÚBatchNorm2dr   r   r   Úpopr   r   r	   Údefault_cfg)Ú
pretrainedÚvariantÚarch_defÚkwargsr   r   Úmodel_kwargsr    Ú	model_clsr&   Úmodels              úb/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/hardcorenas.pyÚ_gen_hardcorenasr6      så   € ð €LÜ”}°ÔQS×QXÑQXÔftÔu€HÜð Ü" 8Ó,Ø!ØÜœ2Ÿ>™>ÑE¬_¸VÓ-DÑEÜ# F¨LÓ9Øñð ñ€Lð €MÜ€IØ€MØ×Ñ˜¨Ô/ØˆØoˆÜ'ˆ	Ü ØØØðð ,Ð+Ø#ñð ñ€Eñ Ü7¸×8IÑ8IÓJˆÔØ€Ló    c                 ó2   — | dddddt         t        dddd	œ|¥S )
Niè  )é   éà   r:   )é   r;   g      ì?ÚbilinearÚ	conv_stemÚ
classifierz
apache-2.0)Úurlr!   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdÚ
first_convr>   Úlicenser   )r?   r1   s     r5   Ú_cfgrH   7   s3   € à 4°}ÐSYØ¨JÜ%Ô.BØ!°Øñð ðð r7   ztimm/)Ú	hf_hub_id)zhardcorenas_a.miil_green_in1kzhardcorenas_b.miil_green_in1kzhardcorenas_c.miil_green_in1kzhardcorenas_d.miil_green_in1kzhardcorenas_e.miil_green_in1kzhardcorenas_f.miil_green_in1kÚreturnc                 óN   — dgddgddgddgddgd	d
gdgg}t        d| d|dœ|¤Ž}|S )z hardcorenas_A Úds_r1_k3_s1_e1_c16_nreÚir_r1_k5_s2_e3_c24_nreúir_r1_k5_s1_e3_c24_nre_se0.25Úir_r1_k5_s2_e3_c40_nreúir_r1_k5_s1_e6_c40_nre_se0.25úir_r1_k5_s2_e6_c80_se0.25úir_r1_k5_s1_e6_c80_se0.25úir_r1_k5_s1_e6_c112_se0.25úir_r1_k5_s2_e6_c192_se0.25úir_r1_k5_s1_e6_c192_se0.25Úcn_r1_k1_s1_c960Úhardcorenas_a©r.   r/   r0   r'   ©r6   ©r.   r1   r0   r4   s       r5   rW   rW   L   sd   € ð *Ð*Ð-EÐGfÐ,gØ)Ð+JÐKØ,Ð.IÐJØ-Ð/KÐLØ-Ð/KÐLÐOaÐNbð	d€Hô
 Ði¨
¸OÐV^ÑiÐbhÑi€EØ€Lr7   c                 óN   — dgg d¢g d¢g d¢g d¢g d¢dgg}t        d
| d|d	œ|¤Ž}|S )z hardcorenas_B rL   )rM   rN   Úir_r1_k3_s1_e3_c24_nre)rO   Úir_r1_k5_s1_e3_c40_nrer]   )Úir_r1_k5_s2_e3_c80Úir_r1_k5_s1_e3_c80Úir_r1_k3_s1_e3_c80r`   )Úir_r1_k5_s1_e3_c112Úir_r1_k3_s1_e3_c112rb   rb   ©rT   rU   zir_r1_k3_s1_e3_c192_se0.25rV   Úhardcorenas_brX   r'   rY   rZ   s       r5   rd   rd   X   sE   € ð *Ð*ÚeÚ^ÚhÚlÚjØ#Ð$ð&€Hô Ði¨
¸OÐV^ÑiÐbhÑi€EØ€Lr7   c                 óN   — dgddgg d¢g d¢g d¢g d¢dgg}t        d| d	|d
œ|¤Ž}|S )z hardcorenas_C rL   rM   rN   )rO   r]   r]   r]   )Úir_r1_k5_s2_e4_c80rR   r`   r`   )rS   rb   rb   rb   rc   rV   Úhardcorenas_crX   r'   rY   rZ   s       r5   rg   rg   f   sM   € ð *Ð*Ð-EÐGfÐ,gò+âoÚsÚjØ#Ð$ð&€Hô Ði¨
¸OÐV^ÑiÐbhÑi€EØ€Lr7   c                 óN   — dgddgg d¢g d¢g d¢g d¢dgg}t        d| d	|d
œ|¤Ž}|S )z hardcorenas_D rL   úir_r1_k5_s2_e3_c24_nre_se0.25rN   )zir_r1_k5_s2_e3_c40_nre_se0.25úir_r1_k5_s1_e4_c40_nre_se0.25úir_r1_k3_s1_e3_c40_nre_se0.25)úir_r1_k5_s2_e4_c80_se0.25úir_r1_k3_s1_e3_c80_se0.25rm   rm   )zir_r1_k3_s1_e4_c112_se0.25zir_r1_k5_s1_e4_c112_se0.25úir_r1_k3_s1_e3_c112_se0.25úir_r1_k5_s1_e3_c112_se0.25©rT   rU   rU   úir_r1_k3_s1_e6_c192_se0.25rV   Úhardcorenas_drX   r'   rY   rZ   s       r5   rr   rr   t   sR   € ð *Ð*Ð-LÐNmÐ,nÚsò.ò/ò/Ø1CÐ0DðF€Hô Ði¨
¸OÐV^ÑiÐbhÑi€EØ€Lr7   c                 óN   — dgddgg d¢ddgg d¢g d¢d	gg}t        d| d
|dœ|¤Ž}|S )z hardcorenas_E rL   ri   rN   )úir_r1_k5_s2_e6_c40_nre_se0.25rj   rj   rk   rl   zir_r1_k3_s1_e6_c80_se0.25)rS   rS   rS   ro   rp   rV   Úhardcorenas_erX   r'   rY   rZ   s       r5   ru   ru   ƒ   sX   € ð *Ð*Ð-LÐNmÐ,nò2Ø4OÐQlÐ3mò/ò/Ø1CÐ0DðF€Hô Ði¨
¸OÐV^ÑiÐbhÑi€EØ€Lr7   c                 óN   — dgddgddgg d¢g d¢g d¢d	gg}t        d| d
|dœ|¤Ž}|S )z hardcorenas_F rL   ri   rN   rt   rP   )rQ   rR   rm   rm   )zir_r1_k3_s1_e6_c112_se0.25rS   rS   rn   )rT   rU   rq   rq   rV   Úhardcorenas_frX   r'   rY   rZ   s       r5   rw   rw   ‘   sX   € ð *Ð*Ð-LÐNmÐ,nØ0Ð2QÐRò.ò/ò/Ø1CÐ0DðF€Hô Ði¨
¸OÐV^ÑiÐbhÑi€EØ€Lr7   )Ú )F)!Ú	functoolsr   Útorch.nnr(   Ú	timm.datar   r   Ú_builderr   r	   Ú_efficientnet_blocksr
   Ú_efficientnet_builderr   r   r   r   Ú	_registryr   r   Úmobilenetv3r   r   Ú__all__r6   rH   Údefault_cfgsrW   rd   rg   rr   ru   rw   r'   r7   r5   ú<module>rƒ      s  ðÝ å ç AÝ *Ý 1Ý /ß fÓ fß <ß 9à
€ò$óNñ %Ù%)°GÔ%<Ù%)°GÔ%<Ù%)°GÔ%<Ù%)°GÔ%<Ù%)°GÔ%<Ù%)°GÔ%<ñ&ó €ð ñ°ò ó ðð ñ
°ò 
ó ð
ð ñ
°ò 
ó ð
ð ñ°ò ó ðð ñ
°ò 
ó ð
ð ñ°ò ó ñr7   