§
    ù²Åj½¬  ã                   ó@	  — U d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZmZmZ d dl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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$m%Z% g d¢Z&e G d„ d¦  «        ¦   «         Z' G d„ de'¦  «        Z( G d„ de'¦  «        Z) G d„ dej*        ¦  «        Z+ G d„ dej*        ¦  «        Z, G d„ dej*        ¦  «        Z-deee(e)f                  de.dee/         dee         d e0d!ed"e-fd#„Z1d$e2d!ed"eeee(e)f                  ee/         f         fd%„Z3d&e!iZ4e	e2ef         e5d'<   i e4¥d(d)d*œ¥Z6i e4¥d+d,d*œ¥Z7 G d-„ d.e¦  «        Z8 G d/„ d0e¦  «        Z9 G d1„ d2e¦  «        Z: G d3„ d4e¦  «        Z; G d5„ d6e¦  «        Z< G d7„ d8e¦  «        Z= G d9„ d:e¦  «        Z> G d;„ d<e¦  «        Z? G d=„ d>e¦  «        Z@ G d?„ d@e¦  «        ZA G dA„ dBe¦  «        ZB e¦   «          e%dCe8jC        f¬D¦  «        ddEdFœdee8         d e0d!ed"e-fdG„¦   «         ¦   «         ZD e¦   «          e%dCe9jC        f¬D¦  «        ddEdFœdee9         d e0d!ed"e-fdH„¦   «         ¦   «         ZE e¦   «          e%dCe:jC        f¬D¦  «        ddEdFœdee:         d e0d!ed"e-fdI„¦   «         ¦   «         ZF e¦   «          e%dCe;jC        f¬D¦  «        ddEdFœdee;         d e0d!ed"e-fdJ„¦   «         ¦   «         ZG e¦   «          e%dCe<jC        f¬D¦  «        ddEdFœdee<         d e0d!ed"e-fdK„¦   «         ¦   «         ZH e¦   «          e%dCe=jC        f¬D¦  «        ddEdFœdee=         d e0d!ed"e-fdL„¦   «         ¦   «         ZI e¦   «          e%dCe>jC        f¬D¦  «        ddEdFœdee>         d e0d!ed"e-fdM„¦   «         ¦   «         ZJ e¦   «          e%dCe?jC        f¬D¦  «        ddEdFœdee?         d e0d!ed"e-fdN„¦   «         ¦   «         ZK e¦   «          e%dCe@jC        f¬D¦  «        ddEdFœdee@         d e0d!ed"e-fdO„¦   «         ¦   «         ZL e¦   «          e%dCeAjC        f¬D¦  «        ddEdFœdeeA         d e0d!ed"e-fdP„¦   «         ¦   «         ZM e¦   «          e%dCeBjC        f¬D¦  «        ddEdFœdeeB         d e0d!ed"e-fdQ„¦   «         ¦   «         ZNdS )Ré    N)Ú	dataclass)Úpartial)ÚAnyÚCallableÚDictÚListÚOptionalÚSequenceÚTupleÚUnion)ÚnnÚTensor)ÚStochasticDepthé   )ÚConv2dNormActivationÚSqueezeExcitation)ÚImageClassificationÚInterpolationMode)Ú_log_api_usage_onceé   )Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_make_divisibleÚ_ovewrite_named_paramÚhandle_legacy_interface)ÚEfficientNetÚEfficientNet_B0_WeightsÚEfficientNet_B1_WeightsÚEfficientNet_B2_WeightsÚEfficientNet_B3_WeightsÚEfficientNet_B4_WeightsÚEfficientNet_B5_WeightsÚEfficientNet_B6_WeightsÚEfficientNet_B7_WeightsÚEfficientNet_V2_S_WeightsÚEfficientNet_V2_M_WeightsÚEfficientNet_V2_L_WeightsÚefficientnet_b0Úefficientnet_b1Úefficientnet_b2Úefficientnet_b3Úefficientnet_b4Úefficientnet_b5Úefficientnet_b6Úefficientnet_b7Úefficientnet_v2_sÚefficientnet_v2_mÚefficientnet_v2_lc            
       ó¦   — e Zd ZU eed<   eed<   eed<   eed<   eed<   eed<   edej        f         ed<   e	dd
edede
e         defd„¦   «         Zd	S )Ú_MBConvConfigÚexpand_ratioÚkernelÚstrideÚinput_channelsÚout_channelsÚ
num_layers.ÚblockNÚchannelsÚ
width_multÚ	min_valueÚreturnc                 ó*   — t          | |z  d|¦  «        S )Né   )r   )r>   r?   r@   s      úPC:\Projects\Historical\venv\Lib\site-packages\torchvision/models/efficientnet.pyÚadjust_channelsz_MBConvConfig.adjust_channels8   s   € å˜x¨*Ñ4°a¸ÑCÔCÐCó    ©N)Ú__name__Ú
__module__Ú__qualname__ÚfloatÚ__annotations__Úintr   r   ÚModuleÚstaticmethodr	   rE   © rF   rD   r6   r6   .   s»   € € € € € € àÐÐÑØ€K€K�KØ€K€K�KØÐÐÑØÐÐÑØ€O€O�OØ�C˜œ�NÔ#Ð#Ð#Ñ#àðDð D #ð D°5ð DÀXÈcÄ]ð DÐ^að Dð Dð Dñ „\ðDð Dð DrF   r6   c                   ó–   ‡ — e Zd Z	 	 	 ddedededededed	ed
edeedej        f                  ddfˆ fd„Z	e
ded
efd„¦   «         Zˆ xZS )ÚMBConvConfigç      ð?Nr7   r8   r9   r:   r;   r<   r?   Ú
depth_multr=   .rA   c
           	      óì   •— |                       ||¦  «        }|                       ||¦  «        }|                      ||¦  «        }|	€t          }	t          ¦   «                              |||||||	¦  «         d S rG   )rE   Úadjust_depthÚMBConvÚsuperÚ__init__)Úselfr7   r8   r9   r:   r;   r<   r?   rT   r=   Ú	__class__s             €rD   rY   zMBConvConfig.__init__?   sz   ø€ ð ×-Ò-¨n¸jÑIÔIˆØ×+Ò+¨L¸*ÑEÔEˆØ×&Ò& z°:Ñ>Ô>ˆ
Øˆ=ÝˆEÝ‰Œ×Ò˜ v¨v°~À|ÐU_ÐafÑgÔgÐgÐgÐgrF   c                 óJ   — t          t          j        | |z  ¦  «        ¦  «        S rG   )rM   ÚmathÚceil)r<   rT   s     rD   rV   zMBConvConfig.adjust_depthR   s   € å•4”9˜Z¨*Ñ4Ñ5Ô5Ñ6Ô6Ð6rF   )rS   rS   N)rH   rI   rJ   rK   rM   r	   r   r   rN   rY   rO   rV   Ú__classcell__©r[   s   @rD   rR   rR   =   sþ   ø€ € € € € ð  ØØ48ðhð hàðhð ðhð ð	hð
 ðhð ðhð ðhð ðhð ðhð ˜  b¤i Ô0Ô1ðhð 
ðhð hð hð hð hð hð& ð7 ð 7°%ð 7ð 7ð 7ñ „\ð7ð 7ð 7ð 7ð 7rF   rR   c                   ój   ‡ — e Zd Z	 ddededededededeed	ej        f                  d
dfˆ fd„Z	ˆ xZ
S )ÚFusedMBConvConfigNr7   r8   r9   r:   r;   r<   r=   .rA   c           	      óh   •— |€t           }t          ¦   «                              |||||||¦  «         d S rG   )ÚFusedMBConvrX   rY   )	rZ   r7   r8   r9   r:   r;   r<   r=   r[   s	           €rD   rY   zFusedMBConvConfig.__init__Y   s;   ø€ ð ˆ=ÝˆEÝ‰Œ×Ò˜ v¨v°~À|ÐU_ÐafÑgÔgÐgÐgÐgrF   rG   )rH   rI   rJ   rK   rM   r	   r   r   rN   rY   r_   r`   s   @rD   rb   rb   W   s¸   ø€ € € € € ð 59ðhð hàðhð ðhð ð	hð
 ðhð ðhð ðhð ˜  b¤i Ô0Ô1ðhð 
ðhð hð hð hð hð hð hð hð hð hrF   rb   c                   ó|   ‡ — e Zd Zefdedededej        f         dedej        f         ddf
ˆ fd„Z	d	e
de
fd
„Zˆ xZS )rW   ÚcnfÚstochastic_depth_probÚ
norm_layer.Úse_layerrA   Nc                 ób  •— t          ¦   «                              ¦   «          d|j        cxk    rdk    sn t          d¦  «        ‚|j        dk    o|j        |j        k    | _        g }t          j        }| 	                    |j        |j
        ¦  «        }||j        k    r,|                     t          |j        |d||¬¦  «        ¦  «         |                     t          |||j        |j        |||¬¦  «        ¦  «         t          d|j        dz  ¦  «        }|                      |||t          t          j        d¬¦  «        ¬	¦  «        ¦  «         |                     t          ||j        d|d ¬¦  «        ¦  «         t          j        |Ž | _        t%          |d
¦  «        | _        |j        | _        d S )Nr   r   úillegal stride value©Úkernel_sizerh   Úactivation_layer)rm   r9   Úgroupsrh   rn   é   T)Úinplace)Ú
activationÚrow)rX   rY   r9   Ú
ValueErrorr:   r;   Úuse_res_connectr   ÚSiLUrE   r7   Úappendr   r8   Úmaxr   Ú
Sequentialr=   r   Ústochastic_depth)
rZ   rf   rg   rh   ri   Úlayersrn   Úexpanded_channelsÚsqueeze_channelsr[   s
            €rD   rY   zMBConv.__init__i   sÝ  ø€ õ 	‰Œ×ÒÑÔÐà�S”ZÐ$Ð$Ò$Ð$ 1Ò$Ð$Ð$Ð$ÝÐ3Ñ4Ô4Ð4à"œz¨QšÐY°3Ô3EÈÔIYÒ3YˆÔà"$ˆÝœ7Ðð  ×/Ò/°Ô0BÀCÔDTÑUÔUÐØ Ô 2Ò2Ð2Ø�MŠMÝ$ØÔ&Ø%Ø !Ø)Ø%5ðñ ô ñô ð ð 	�ŠÝ Ø!Ø!ØœJØ”zØ(Ø%Ø!1ðñ ô ñ
	
ô 
	
ð 
	
õ ˜q #Ô"4¸Ñ"9Ñ:Ô:ÐØ�Š�h�hÐ0Ð2BÍwÕWYÔW^ÐhlÐOmÑOmÔOmÐnÑnÔnÑoÔoÐoð 	�ŠÝ Ø! 3Ô#3ÀÈzÐlpðñ ô ñ	
ô 	
ð 	
õ ”] FÐ+ˆŒ
Ý /Ð0EÀuÑ MÔ MˆÔØÔ,ˆÔÐÐrF   Úinputc                 ór   — |                       |¦  «        }| j        r|                      |¦  «        }||z  }|S rG   ©r=   ru   rz   ©rZ   r~   Úresults      rD   ÚforwardzMBConv.forward£   ó?   € Ø—’˜EÑ"Ô"ˆØÔð 	Ø×*Ò*¨6Ñ2Ô2ˆFØ�e‰OˆFØˆrF   )rH   rI   rJ   r   rR   rK   r   r   rN   rY   r   rƒ   r_   r`   s   @rD   rW   rW   h   s°   ø€ € € € € ð .?ð8-ð 8-àð8-ð  %ð8-ð ˜S "¤)˜^Ô,ð	8-ð
 ˜3 ¤	˜>Ô*ð8-ð 
ð8-ð 8-ð 8-ð 8-ð 8-ð 8-ðt˜Vð ¨ð ð ð ð ð ð ð ð rF   rW   c                   óZ   ‡ — e Zd Zdedededej        f         ddfˆ fd„Zde	de	fd	„Z
ˆ xZS )
rd   rf   rg   rh   .rA   Nc           
      óè  •— t          ¦   «                              ¦   «          d|j        cxk    rdk    sn t          d¦  «        ‚|j        dk    o|j        |j        k    | _        g }t          j        }| 	                    |j        |j
        ¦  «        }||j        k    rd|                     t          |j        ||j        |j        ||¬¦  «        ¦  «         |                     t          ||j        d|d ¬¦  «        ¦  «         n<|                     t          |j        |j        |j        |j        ||¬¦  «        ¦  «         t          j        |Ž | _        t!          |d¦  «        | _        |j        | _        d S )Nr   r   rk   ©rm   r9   rh   rn   rl   rs   )rX   rY   r9   rt   r:   r;   ru   r   rv   rE   r7   rw   r   r8   ry   r=   r   rz   )rZ   rf   rg   rh   r{   rn   r|   r[   s          €rD   rY   zFusedMBConv.__init__¬   sš  ø€ õ 	‰Œ×ÒÑÔÐà�S”ZÐ$Ð$Ò$Ð$ 1Ò$Ð$Ð$Ð$ÝÐ3Ñ4Ô4Ð4à"œz¨QšÐY°3Ô3EÈÔIYÒ3YˆÔà"$ˆÝœ7Ðà×/Ò/°Ô0BÀCÔDTÑUÔUÐØ Ô 2Ò2Ð2à�MŠMÝ$ØÔ&Ø%Ø #¤
Øœ:Ø)Ø%5ðñ ô ñ	ô 	ð 	ð �MŠMÝ$Ø% sÔ'7ÀQÐS]Ðptðñ ô ñô ð ð ð �MŠMÝ$ØÔ&ØÔ$Ø #¤
Øœ:Ø)Ø%5ðñ ô ñ	ô 	ð 	õ ”] FÐ+ˆŒ
Ý /Ð0EÀuÑ MÔ MˆÔØÔ,ˆÔÐÐrF   r~   c                 ór   — |                       |¦  «        }| j        r|                      |¦  «        }||z  }|S rG   r€   r�   s      rD   rƒ   zFusedMBConv.forwardà   r„   rF   )rH   rI   rJ   rb   rK   r   r   rN   rY   r   rƒ   r_   r`   s   @rD   rd   rd   «   s‘   ø€ € € € € ð2-àð2-ð  %ð2-ð ˜S "¤)˜^Ô,ð	2-ð
 
ð2-ð 2-ð 2-ð 2-ð 2-ð 2-ðh˜Vð ¨ð ð ð ð ð ð ð ð rF   rd   c                   ó´   ‡ — e Zd Z	 	 	 	 ddeeeef                  dededede	e
d	ej        f                  d
e	e         ddfˆ fd„Zdedefd„Zdedefd„Zˆ xZS )r   çš™™™™™É?éè  NÚinverted_residual_settingÚdropoutrg   Únum_classesrh   .Úlast_channelrA   c           
      ó€  •— t          ¦   «                              ¦   «          t          | ¦  «         |st          d¦  «        ‚t	          |t
          ¦  «        rt          d„ |D ¦   «         ¦  «        st          d¦  «        ‚|€t          j	        }g }|d         j
        }|                     t          d|dd|t          j        ¬¦  «        ¦  «         t          d	„ |D ¦   «         ¦  «        }	d}
|D ]©}g }t          |j        ¦  «        D ]o}t#          j        |¦  «        }|r|j        |_
        d
|_        |t)          |
¦  «        z  |	z  }|                     |                     |||¦  «        ¦  «         |
d
z  }
Œp|                     t          j        |Ž ¦  «         Œª|d         j        }|�|nd|z  }|                     t          ||d
|t          j        ¬¦  «        ¦  «         t          j        |Ž | _        t          j        d
¦  «        | _        t          j        t          j        |d¬¦  «        t          j        ||¦  «        ¦  «        | _        |                      ¦   «         D �]_}t	          |t          j        ¦  «        rRt          j                              |j!        d¬¦  «         |j"        �$t          j         #                    |j"        ¦  «         Œot	          |t          j	        t          j$        f¦  «        rIt          j         %                    |j!        ¦  «         t          j         #                    |j"        ¦  «         ŒÞt	          |t          j        ¦  «        rgdtM          j'        |j(        ¦  «        z  }t          j         )                    |j!        | |¦  «         t          j         #                    |j"        ¦  «         �ŒadS )a  
        EfficientNet V1 and V2 main class

        Args:
            inverted_residual_setting (Sequence[Union[MBConvConfig, FusedMBConvConfig]]): Network structure
            dropout (float): The droupout probability
            stochastic_depth_prob (float): The stochastic depth probability
            num_classes (int): Number of classes
            norm_layer (Optional[Callable[..., nn.Module]]): Module specifying the normalization layer to use
            last_channel (int): The number of channels on the penultimate layer
        z1The inverted_residual_setting should not be emptyc                 ó8   — g | ]}t          |t          ¦  «        ‘ŒS rP   )Ú
isinstancer6   )Ú.0Úss     rD   ú
<listcomp>z)EfficientNet.__init__.<locals>.<listcomp>  s"   € ÐUÐUÐU°a•Z ¥=Ñ1Ô1ÐUÐUÐUrF   z:The inverted_residual_setting should be List[MBConvConfig]Nr   é   r   r‡   c              3   ó$   K  — | ]}|j         V — Œd S rG   )r<   )r“   rf   s     rD   ú	<genexpr>z(EfficientNet.__init__.<locals>.<genexpr>  s$   è è € Ð UÐ U°C ¤Ð UÐ UÐ UÐ UÐ UÐ UrF   r   éÿÿÿÿrp   rl   T)Úprq   Úfan_out)ÚmoderS   )*rX   rY   r   rt   r’   r
   ÚallÚ	TypeErrorr   ÚBatchNorm2dr:   rw   r   rv   ÚsumÚranger<   Úcopyr;   r9   rK   r=   ry   ÚfeaturesÚAdaptiveAvgPool2dÚavgpoolÚDropoutÚLinearÚ
classifierÚmodulesÚConv2dÚinitÚkaiming_normal_ÚweightÚbiasÚzeros_Ú	GroupNormÚones_r]   ÚsqrtÚout_featuresÚuniform_)rZ   rŒ   r�   rg   rŽ   rh   r�   r{   Úfirstconv_output_channelsÚtotal_stage_blocksÚstage_block_idrf   ÚstageÚ_Ú	block_cnfÚsd_probÚlastconv_input_channelsÚlastconv_output_channelsÚmÚ
init_ranger[   s                       €rD   rY   zEfficientNet.__init__é   s–  ø€ õ( 	‰Œ×ÒÑÔÐÝ˜DÑ!Ô!Ð!à(ð 	ZÝÐPÑQÔQÐQåÐ0µ(Ñ;Ô;ð	ZåÐUÐUÐ;TÐUÑUÔUÑVÔVð	Zõ ÐXÑYÔYÐYàÐÝœˆJà"$ˆð %>¸aÔ$@Ô$OÐ!Ø�ŠÝ ØÐ,¸!ÀAÐR\ÕoqÔovðñ ô ñ	
ô 	
ð 	
õ !Ð UÐ UÐ;TÐ UÑ UÔ UÑUÔUÐØˆØ,ð 	1ð 	1ˆCØ%'ˆEÝ˜3œ>Ñ*Ô*ð $ð $�å œI c™NœN�	ð ð )Ø/8Ô/E�IÔ,Ø'(�IÔ$ð 0µ%¸Ñ2GÔ2GÑGÐJ\Ñ\�à—’˜YŸ_š_¨Y¸ÀÑLÔLÑMÔMÐMØ !Ñ#��à�MŠM�"œ-¨Ð/Ñ0Ô0Ð0Ð0ð #<¸BÔ"?Ô"LÐØ3?Ð3K < <ÐQRÐUlÑQlÐ Ø�ŠÝ Ø'Ø(ØØ%Ý!#¤ðñ ô ñ	
ô 	
ð 	
õ œ vÐ.ˆŒÝÔ+¨AÑ.Ô.ˆŒÝœ-ÝŒJ˜¨$Ð/Ñ/Ô/ÝŒIÐ.°Ñ<Ô<ñ
ô 
ˆŒð
 —’‘”ð 	'ñ 	'ˆAÝ˜!�RœYÑ'Ô'ð 
'Ý”×'Ò'¨¬°yÐ'ÑAÔAÐAØ”6Ð%Ý”G—N’N 1¤6Ñ*Ô*Ð*øÝ˜A¥¤µ´Ð=Ñ>Ô>ð 'Ý”—’˜aœhÑ'Ô'Ð'Ý”—’˜qœvÑ&Ô&Ð&Ð&Ý˜A�rœyÑ)Ô)ð 'Ø ¥4¤9¨Q¬^Ñ#<Ô#<Ñ<�
Ý”× Ò  ¤¨J¨;¸
ÑCÔCÐCÝ”—’˜qœvÑ&Ô&Ð&ùð	'ð 	'rF   Úxc                 ó®   — |                       |¦  «        }|                      |¦  «        }t          j        |d¦  «        }|                      |¦  «        }|S )Nr   )r£   r¥   ÚtorchÚflattenr¨   ©rZ   rÀ   s     rD   Ú_forward_implzEfficientNet._forward_implL  sI   € Ø�MŠM˜!ÑÔˆà�LŠL˜‰OŒOˆÝŒM˜!˜QÑÔˆà�OŠO˜AÑÔˆàˆrF   c                 ó,   — |                       |¦  «        S rG   )rÅ   rÄ   s     rD   rƒ   zEfficientNet.forwardV  s   € Ø×!Ò! !Ñ$Ô$Ð$rF   )rŠ   r‹   NN)rH   rI   rJ   r
   r   rR   rb   rK   rM   r	   r   r   rN   rY   r   rÅ   rƒ   r_   r`   s   @rD   r   r   è   s  ø€ € € € € ð
 (+ØØ9=Ø&*ða'ð a'à#+¨E°,Ð@QÐ2QÔ,RÔ#Sða'ð ða'ð  %ð	a'ð
 ða'ð ˜X c¨2¬9 nÔ5Ô6ða'ð ˜s”mða'ð 
ða'ð a'ð a'ð a'ð a'ð a'ðF˜vð ¨&ð ð ð ð ð%˜ð % Fð %ð %ð %ð %ð %ð %ð %ð %rF   r   rŒ   r�   r�   ÚweightsÚprogressÚkwargsrA   c                 óÔ   — |�)t          |dt          |j        d         ¦  «        ¦  «         t          | |fd|i|¤Ž}|�*|                     |                     |d¬¦  «        ¦  «         |S )NrŽ   Ú
categoriesr�   T)rÈ   Ú
check_hash)r   ÚlenÚmetar   Úload_state_dictÚget_state_dict)rŒ   r�   r�   rÇ   rÈ   rÉ   Úmodels          rD   Ú_efficientnetrÒ   Z  s|   € ð ÐÝ˜f mµS¸¼ÀlÔ9SÑ5TÔ5TÑUÔUÐUåÐ2°GÐaÐaÈ,ÐaÐZ`ÐaÐa€EàÐØ×Ò˜g×4Ò4¸hÐSWÐ4ÑXÔXÑYÔYÐYà€LrF   Úarchc                 óF  — |                       d¦  «        r¬t          t          |                     d¦  «        |                     d¦  «        ¬¦  «        } |dddddd¦  «         |d	dd
ddd
¦  «         |d	dd
ddd
¦  «         |d	dd
ddd¦  «         |d	ddddd¦  «         |d	dd
ddd¦  «         |d	ddddd¦  «        g}d }�nÝ|                       d¦  «        rxt	          dddddd
¦  «        t	          ddd
ddd¦  «        t	          ddd
ddd¦  «        t          ddd
ddd	¦  «        t          d	ddddd¦  «        t          d	dd
ddd¦  «        g}d}�nP|                       d¦  «        rŠt	          dddddd¦  «        t	          ddd
ddd¦  «        t	          ddd
ddd¦  «        t          ddd
ddd¦  «        t          d	ddddd¦  «        t          d	dd
dd d!¦  «        t          d	ddd d"d¦  «        g}d}n±|                       d#¦  «        rŠt	          dddddd¦  «        t	          ddd
ddd¦  «        t	          ddd
dd$d¦  «        t          ddd
d$dd%¦  «        t          d	dddd&d'¦  «        t          d	dd
d&d(d)¦  «        t          d	ddd(d*d¦  «        g}d}nt          d+| › �¦  «        ‚||fS ),NÚefficientnet_br?   rT   ©r?   rT   r   r–   é    é   é   r   é   é   é(   éP   ép   éÀ   rp   é@  r2   é0   é@   é€   é    é	   é   é   i   r3   é   é°   é   i0  é   i   r4   é`   é
   éà   é   é€  é   i€  zUnsupported model type )Ú
startswithr   rR   Úpoprb   rt   )rÓ   rÉ   Ú
bneck_confrŒ   r�   s        rD   Ú_efficientnet_confrõ   m  s3  € ð
 ‡‚Ð'Ñ(Ô(ð -;Ý�\°f·j²jÀÑ6NÔ6NÐ[a×[eÒ[eÐfrÑ[sÔ[sÐtÑtÔtˆ
àˆJ�q˜!˜Q  B¨Ñ*Ô*ØˆJ�q˜!˜Q  B¨Ñ*Ô*ØˆJ�q˜!˜Q  B¨Ñ*Ô*ØˆJ�q˜!˜Q  B¨Ñ*Ô*ØˆJ�q˜!˜Q  C¨Ñ+Ô+ØˆJ�q˜!˜Q  S¨!Ñ,Ô,ØˆJ�q˜!˜Q  S¨!Ñ,Ô,ð%
Ð!ð ˆ‰Ø	�ŠÐ,Ñ	-Ô	-ð !;å˜a  A r¨2¨qÑ1Ô1Ý˜a  A r¨2¨qÑ1Ô1Ý˜a  A r¨2¨qÑ1Ô1Ý˜˜A˜q " c¨1Ñ-Ô-Ý˜˜A˜q # s¨AÑ.Ô.Ý˜˜A˜q # s¨BÑ/Ô/ð%
Ð!ð ˆ‰Ø	�ŠÐ,Ñ	-Ô	-ð ;å˜a  A r¨2¨qÑ1Ô1Ý˜a  A r¨2¨qÑ1Ô1Ý˜a  A r¨2¨qÑ1Ô1Ý˜˜A˜q " c¨1Ñ-Ô-Ý˜˜A˜q # s¨BÑ/Ô/Ý˜˜A˜q # s¨BÑ/Ô/Ý˜˜A˜q # s¨AÑ.Ô.ð%
Ð!ð ˆˆØ	�ŠÐ,Ñ	-Ô	-ð ;å˜a  A r¨2¨qÑ1Ô1Ý˜a  A r¨2¨qÑ1Ô1Ý˜a  A r¨2¨qÑ1Ô1Ý˜˜A˜q " c¨2Ñ.Ô.Ý˜˜A˜q # s¨BÑ/Ô/Ý˜˜A˜q # s¨BÑ/Ô/Ý˜˜A˜q # s¨AÑ.Ô.ð%
Ð!ð ˆˆåÐ9°4Ð9Ð9Ñ:Ô:Ð:à$ lÐ2Ð2rF   rË   Ú_COMMON_META)r   r   zUhttps://github.com/pytorch/vision/tree/main/references/classification#efficientnet-v1)Úmin_sizeÚrecipe)é!   rù   zUhttps://github.com/pytorch/vision/tree/main/references/classification#efficientnet-v2c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥ddddd	œid
dddœ¥¬¦  «        Z	e	Z
dS )r   zJhttps://download.pytorch.org/models/efficientnet_b0_rwightman-7f5810bc.pthrî   ræ   ©Ú	crop_sizeÚresize_sizeÚinterpolationid²P úImageNet-1Kg?5^ºIlS@g5^ºIbW@©zacc@1zacc@5gNbX9´Ø?gú~j¼ts4@ú1These weights are ported from the original paper.©Ú
num_paramsÚ_metricsÚ_opsÚ
_file_sizeÚ_docs©ÚurlÚ
transformsrÎ   N©rH   rI   rJ   r   r   r   r   ÚBICUBICÚ_COMMON_META_V1ÚIMAGENET1K_V1ÚDEFAULTrP   rF   rD   r   r   ·  ó‘   € € € € € Ø�GàXØ�7Ø¨3¸CÐO`ÔOhð
ñ 
ô 
ð
Øð
à!àØ#Ø#ð ð  ðð Ø ØLð
ð 
ð 
ðñ ô €Mð( €G€G€GrF   r   c                   óÐ   — e Zd Z ed eeddej        ¬¦  «        i e¥ddddd	œid
dddœ¥¬¦  «        Z	 ed eeddej
        ¬¦  «        i e¥dddddd	œid
dddœ¥¬¦  «        ZeZdS )r    zJhttps://download.pytorch.org/models/efficientnet_b1_rwightman-bac287d4.pthéð   ræ   rû   iîv rÿ   g+‡©S@g–C‹lç‹W@r   g–C‹lçûå?gü©ñÒM">@r  r  r  z@https://download.pytorch.org/models/efficientnet_b1-c27df63c.pthéÿ   zOhttps://github.com/pytorch/vision/issues/3995#new-recipe-with-lr-wd-crop-tuninggƒÀÊ¡õS@g²�ï§Æ»W@g‰A`åÐ">@á$  
                These weights improve upon the results of the original paper by using a modified version of TorchVision's
                `new training recipe
                <https://pytorch.org/blog/how-to-train-state-of-the-art-models-using-torchvision-latest-primitives/>`_.
            )r  rø   r  r  r  r  N)rH   rI   rJ   r   r   r   r   r  r  r  ÚBILINEARÚIMAGENET1K_V2r  rP   rF   rD   r    r    Ï  s  € € € € € Ø�GàXØ�7Ø¨3¸CÐO`ÔOhð
ñ 
ô 
ð
Øð
à!àØ#Ø#ð ð  ðð Ø ØLð
ð 
ð 
ðñ ô €Mð( �GØNØ�7Ø¨3¸CÐO`ÔOið
ñ 
ô 
ð
Øð
à!ØgàØ#Ø#ð ð  ðð Ø ðð
ð 
ð 
ðñ ô €Mð0 €G€G€GrF   r    c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥dddddœid	d
ddœ¥¬¦  «        Z	e	Z
dS )r!   zJhttps://download.pytorch.org/models/efficientnet_b2_rwightman-c35c1473.pthi   rû   iê‹ rÿ   gôýÔxé&T@g¤p=
×ÓW@r   gœÄ °rhñ?gƒÀÊ¡E–A@r  r  r  Nr  rP   rF   rD   r!   r!   ÿ  r  rF   r!   c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥ddddd	œid
dddœ¥¬¦  «        Z	e	Z
dS )r"   zJhttps://download.pytorch.org/models/efficientnet_b3_rwightman-b3899882.pthi,  rà   rû   iªº rÿ   g�—nƒ€T@gú~j¼tX@r   g¬Zd;ý?gd;ßO�—G@r  r  r  Nr  rP   rF   rD   r"   r"     ó‘   € € € € € Ø�GàXØ�7Ø¨3¸CÐO`ÔOhð
ñ 
ô 
ð
Øð
à"àØ#Ø#ð ð  ðð Ø ØLð
ð 
ð 
ðñ ô €Mð( €G€G€GrF   r"   c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥ddddd	œid
dddœ¥¬¦  «        Z	e	Z
dS )r#   zJhttps://download.pytorch.org/models/efficientnet_b4_rwightman-23ab8bcd.pthi|  rð   rû   i0!'rÿ   gj¼t“ØT@g¼t“&X@r   gú~j¼t“@gžï§ÆKŸR@r  r  r  Nr  rP   rF   rD   r#   r#   /  r  rF   r#   c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥dddddœid	d
ddœ¥¬¦  «        Z	e	Z
dS )r$   zJhttps://download.pytorch.org/models/efficientnet_b5_lukemelas-1a07897c.pthiÈ  rû   i¶Ïrÿ   g#Ûù~jÜT@gÕxé&1(X@r   gÕxé&1ˆ$@gžï§ÆK7]@r  r  r  Nr  rP   rF   rD   r$   r$   G  ó‘   € € € € € Ø�GàXØ�7Ø¨3¸CÐO`ÔOhð
ñ 
ô 
ð
Øð
à"àØ#Ø#ð ð  ðð Ø!ØLð
ð 
ð 
ðñ ô €Mð( €G€G€GrF   r$   c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥dddddœid	d
ddœ¥¬¦  «        Z	e	Z
dS )r%   zJhttps://download.pytorch.org/models/efficientnet_b6_lukemelas-24a108a5.pthi  rû   iÀ¿�rÿ   g�—nƒ U@g´Èv¾Ÿ:X@r   gÅ °rh3@gÝ$�•«d@r  r  r  Nr  rP   rF   rD   r%   r%   _  r  rF   r%   c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥dddddœid	d
ddœ¥¬¦  «        Z	e	Z
dS )r&   zJhttps://download.pytorch.org/models/efficientnet_b7_lukemelas-c5b4e57e.pthiX  rû   i¸côrÿ   g+‡ÙÎU@g'1¬:X@r   gsh‘í|ßB@gš™™™™Õo@r  r  r  Nr  rP   rF   rD   r&   r&   w  r  rF   r&   c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥dddddœid	d
ddœ¥¬¦  «        Z	e	Z
dS )r'   zBhttps://download.pytorch.org/models/efficientnet_v2_s-dd5fe13b.pthrð   rû   i8nGrÿ   g;ßO�—U@gÕxé&18X@r   g¬Zd» @g“V­T@r  r  r  N©rH   rI   rJ   r   r   r   r   r  Ú_COMMON_META_V2r  r  rP   rF   rD   r'   r'   �  s•   € € € € € Ø�GØPØ�7ØØØØ+Ô4ð	
ñ 
ô 
ð
Øð
à"àØ#Ø#ð ð  ðð Ø ðð
ð 
ð 
ðñ ô €Mð4 €G€G€GrF   r'   c                   óp   — e Zd Z ed eeddej        ¬¦  «        i e¥dddddœid	d
ddœ¥¬¦  «        Z	e	Z
dS )r(   zBhttps://download.pytorch.org/models/efficientnet_v2_m-dc08266a.pthéà  rû   iÜ:rÿ   gºI+GU@gD‹lçûIX@r   g¢E¶óý”8@g¸…ëQ j@r  r  r  Nr   rP   rF   rD   r(   r(   ­  s•   € € € € € Ø�GØPØ�7ØØØØ+Ô4ð	
ñ 
ô 
ð
Øð
à"àØ#Ø#ð ð  ðð Ø ðð
ð 
ð 
ðñ ô €Mð4 €G€G€GrF   r(   c                   ót   — e Zd Z ed eeddej        dd¬¦  «        i e¥ddddd	œid
dddœ¥¬¦  «        Z	e	Z
dS )r)   zBhttps://download.pytorch.org/models/efficientnet_v2_l-59c71312.pthr#  )ç      à?r%  r%  )rü   rý   rþ   ÚmeanÚstdiHfrÿ   gÁÊ¡E¶sU@gßO�—nrX@r   g
×£p=
L@gºI+i|@r  r  r  N)rH   rI   rJ   r   r   r   r   r  r!  r  r  rP   rF   rD   r)   r)   Ë  s™   € € € € € à�GØPØ�7ØØØØ+Ô3Ø Øð
ñ 
ô 
ð
Øð
à#àØ#Ø#ð ð  ðð Ø!ØLð
ð 
ð 
ðñ ô €Mð0 €G€G€GrF   r)   Ú
pretrained)rÇ   T)rÇ   rÈ   c                 óª   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fi |¤ŽS )aØ  EfficientNet B0 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B0_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B0_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B0_Weights
        :members:
    r*   rS   rÖ   r�   rŠ   )r   Úverifyrõ   rÒ   ró   ©rÇ   rÈ   rÉ   rŒ   r�   s        rD   r*   r*   è  óm   € õ. &×,Ò,¨WÑ5Ô5€Gå.@ÐARÐ_bÐorÐ.sÑ.sÔ.sÑ+Ð˜|ÝØ! 6§:¢:¨i¸Ñ#=Ô#=¸|ÈWÐV^ðð Øbhðð ð rF   c                 óª   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fi |¤ŽS )aØ  EfficientNet B1 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B1_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B1_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B1_Weights
        :members:
    r+   rS   çš™™™™™ñ?rÖ   r�   rŠ   )r    r*  rõ   rÒ   ró   r+  s        rD   r+   r+     r,  rF   c                 óª   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fi |¤ŽS )aØ  EfficientNet B2 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B2_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B2_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B2_Weights
        :members:
    r,   r.  ç333333ó?rÖ   r�   ç333333Ó?)r!   r*  rõ   rÒ   ró   r+  s        rD   r,   r,   &  r,  rF   c                 óª   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fi |¤ŽS )aØ  EfficientNet B3 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B3_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B3_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B3_Weights
        :members:
    r-   r0  çffffffö?rÖ   r�   r1  )r"   r*  rõ   rÒ   ró   r+  s        rD   r-   r-   E  ór   € õ. &×,Ò,¨WÑ5Ô5€Gå.@ÐARÐ_bÐorÐ.sÑ.sÔ.sÑ+Ð˜|ÝØ!Ø�
Š
�9˜cÑ"Ô"ØØØðð ð ðð ð rF   c                 óª   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fi |¤ŽS )aØ  EfficientNet B4 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B4_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B4_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B4_Weights
        :members:
    r.   r3  çÍÌÌÌÌÌü?rÖ   r�   çš™™™™™Ù?)r#   r*  rõ   rÒ   ró   r+  s        rD   r.   r.   i  r4  rF   c           	      óâ   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fdt          t          j        dd	¬
¦  «        i|¤ŽS )aØ  EfficientNet B5 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B5_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B5_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B5_Weights
        :members:
    r/   gš™™™™™ù?gš™™™™™@rÖ   r�   r7  rh   çü©ñÒMbP?ç{®Gáz„?©ÚepsÚmomentum)r$   r*  rõ   rÒ   ró   r   r   rŸ   r+  s        rD   r/   r/   �  ó�   € õ. &×,Ò,¨WÑ5Ô5€Gå.@ÐARÐ_bÐorÐ.sÑ.sÔ.sÑ+Ð˜|ÝØ!Ø�
Š
�9˜cÑ"Ô"ØØØðð õ �2œ>¨u¸tÐDÑDÔDðð ðð ð rF   c           	      óâ   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fdt          t          j        dd	¬
¦  «        i|¤ŽS )aØ  EfficientNet B6 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B6_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B6_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B6_Weights
        :members:
    r0   r6  gÍÌÌÌÌÌ@rÖ   r�   r%  rh   r9  r:  r;  )r%   r*  rõ   rÒ   ró   r   r   rŸ   r+  s        rD   r0   r0   ²  r>  rF   c           	      óâ   — t                                | ¦  «        } t          ddd¬¦  «        \  }}t          ||                     dd¦  «        || |fdt          t          j        dd	¬
¦  «        i|¤ŽS )aØ  EfficientNet B7 model architecture from the `EfficientNet: Rethinking Model Scaling for Convolutional
    Neural Networks <https://arxiv.org/abs/1905.11946>`_ paper.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_B7_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_B7_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_B7_Weights
        :members:
    r1   g       @gÍÌÌÌÌÌ@rÖ   r�   r%  rh   r9  r:  r;  )r&   r*  rõ   rÒ   ró   r   r   rŸ   r+  s        rD   r1   r1   ×  r>  rF   c                 óÚ   — t                                | ¦  «        } t          d¦  «        \  }}t          ||                     dd¦  «        || |fdt          t          j        d¬¦  «        i|¤ŽS )aÌ  
    Constructs an EfficientNetV2-S architecture from
    `EfficientNetV2: Smaller Models and Faster Training <https://arxiv.org/abs/2104.00298>`_.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_V2_S_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_V2_S_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_V2_S_Weights
        :members:
    r2   r�   rŠ   rh   r9  ©r<  )r'   r*  rõ   rÒ   ró   r   r   rŸ   r+  s        rD   r2   r2   ü  ó‚   € õ0 (×.Ò.¨wÑ7Ô7€Gå.@ÐATÑ.UÔ.UÑ+Ð˜|ÝØ!Ø�
Š
�9˜cÑ"Ô"ØØØðð õ �2œ>¨uÐ5Ñ5Ô5ðð ðð ð rF   c                 óÚ   — t                                | ¦  «        } t          d¦  «        \  }}t          ||                     dd¦  «        || |fdt          t          j        d¬¦  «        i|¤ŽS )aÌ  
    Constructs an EfficientNetV2-M architecture from
    `EfficientNetV2: Smaller Models and Faster Training <https://arxiv.org/abs/2104.00298>`_.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_V2_M_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_V2_M_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_V2_M_Weights
        :members:
    r3   r�   r1  rh   r9  rB  )r(   r*  rõ   rÒ   ró   r   r   rŸ   r+  s        rD   r3   r3   "  rC  rF   c                 óÚ   — t                                | ¦  «        } t          d¦  «        \  }}t          ||                     dd¦  «        || |fdt          t          j        d¬¦  «        i|¤ŽS )aÌ  
    Constructs an EfficientNetV2-L architecture from
    `EfficientNetV2: Smaller Models and Faster Training <https://arxiv.org/abs/2104.00298>`_.

    Args:
        weights (:class:`~torchvision.models.EfficientNet_V2_L_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.EfficientNet_V2_L_Weights` below for
            more details, and possible values. By default, no pre-trained
            weights are used.
        progress (bool, optional): If True, displays a progress bar of the
            download to stderr. Default is True.
        **kwargs: parameters passed to the ``torchvision.models.efficientnet.EfficientNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/efficientnet.py>`_
            for more details about this class.
    .. autoclass:: torchvision.models.EfficientNet_V2_L_Weights
        :members:
    r4   r�   r7  rh   r9  rB  )r)   r*  rõ   rÒ   ró   r   r   rŸ   r+  s        rD   r4   r4   H  rC  rF   )Or¢   r]   Údataclassesr   Ú	functoolsr   Útypingr   r   r   r   r	   r
   r   r   rÂ   r   r   Útorchvision.opsr   Úops.miscr   r   Útransforms._presetsr   r   Úutilsr   Ú_apir   r   r   Ú_metar   Ú_utilsr   r   r   Ú__all__r6   rR   rb   rN   rW   rd   r   rK   rM   ÚboolrÒ   Ústrrõ   rö   rL   r  r!  r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r  r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   rP   rF   rD   ú<module>rS     s  ðØ €€€€Ø €€€Ø !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nà €€€Ø Ð Ð Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +à >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ SÐ Sðð ð €ð6 ðDð Dð Dð Dð Dñ Dô Dñ „ðDð7ð 7ð 7ð 7ð 7�=ñ 7ô 7ð 7ð4hð hð hð hð h˜ñ hô hð hð"@ð @ð @ð @ð @ˆRŒYñ @ô @ð @ðF:ð :ð :ð :ð :�"”)ñ :ô :ð :ðzo%ð o%ð o%ð o%ð o%�2”9ñ o%ô o%ð o%ðdØ'¨¨lÐ<MÐ.MÔ(NÔOðàðð ˜3”-ðð �kÔ"ð	ð
 ðð ðð ðð ð ð ð&43Ø
ð43àð43ð ˆ8�E˜,Ð(9Ð9Ô:Ô;¸XÀc¼]ÐJÔKð43ð 43ð 43ð 43ðp Ð&ð €ˆd�3˜�8Œnð ð ñ ð
ØðàØeðð ð €ðØðàØeðð ð €ðð ð ð ð ˜kñ ô ð ð0-ð -ð -ð -ð -˜kñ -ô -ð -ð`ð ð ð ð ˜kñ ô ð ð0ð ð ð ð ˜kñ ô ð ð0ð ð ð ð ˜kñ ô ð ð0ð ð ð ð ˜kñ ô ð ð0ð ð ð ð ˜kñ ô ð ð0ð ð ð ð ˜kñ ô ð ð0ð ð ð ð  ñ ô ð ð<ð ð ð ð  ñ ô ð ð<ð ð ð ð  ñ ô ð ð: €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ðð ð ØÐ0Ô1ðØDHðØ[^ðàðð ð ñ XÔWñ Ôðð: €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ðð ð ØÐ0Ô1ðØDHðØ[^ðàðð ð ñ XÔWñ Ôðð: €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ðð ð ØÐ0Ô1ðØDHðØ[^ðàðð ð ñ XÔWñ Ôðð: €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ðð ð ØÐ0Ô1ðØDHðØ[^ðàðð ð ñ XÔWñ ÔððD €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ðð ð ØÐ0Ô1ðØDHðØ[^ðàðð ð ñ XÔWñ ÔððD €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ð ð  ð  ØÐ0Ô1ð ØDHð Ø[^ð àð ð  ð  ñ XÔWñ Ôð ðF €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ð ð  ð  ØÐ0Ô1ð ØDHð Ø[^ð àð ð  ð  ñ XÔWñ Ôð ðF €ÑÔØÐ ,Ð0GÔ0UÐ!VÐWÑWÔWà48È4ð ð  ð  ØÐ0Ô1ð ØDHð Ø[^ð àð ð  ð  ñ XÔWñ Ôð ðF €ÑÔØÐ ,Ð0IÔ0WÐ!XÐYÑYÔYà6:ÈTð!ð !ð !ØÐ2Ô3ð!ØFJð!Ø]`ð!àð!ð !ð !ñ ZÔYñ Ôð!ðH €ÑÔØÐ ,Ð0IÔ0WÐ!XÐYÑYÔYà6:ÈTð!ð !ð !ØÐ2Ô3ð!ØFJð!Ø]`ð!àð!ð !ð !ñ ZÔYñ Ôð!ðH €ÑÔØÐ ,Ð0IÔ0WÐ!XÐYÑYÔYà6:ÈTð!ð !ð !ØÐ2Ô3ð!ØFJð!Ø]`ð!àð!ð !ð !ñ ZÔYñ Ôð!ð !ð !rF   