Ë
    éÓ^jÉC  ã                   óî  — d Z ddlmZ ddlmZ ddlmZ ddlZddlm	Z	 ddl
mZmZmZmZ ddlmZ dd	lmZmZ d
gZ G d„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ de	j*                  «      Z G d„ de«      Z G d„ de«      Z G d„ d
e	j*                  «      Zd)d„Z edddddd d!d!d"d#d$d%d&œi«      Zed)d'efd(„«       Z y)*zÝ
 pnasnet5large implementation grabbed from Cadene's pretrained models
 Additional credit to https://github.com/creafz

 https://github.com/Cadene/pretrained-models.pytorch/blob/master/pretrainedmodels/models/pnasnet.py

é    )ÚOrderedDict)Úpartial)ÚTypeN)ÚConvNormActÚcreate_conv2dÚcreate_pool2dÚcreate_classifieré   )Úbuild_model_with_cfg)Úregister_modelÚgenerate_default_cfgsÚPNASNet5Largec                   óB   ‡ — e Zd Z	 	 	 ddededededef
ˆ fd„Zd„ Zˆ xZS )	ÚSeparableConv2dÚin_channelsÚout_channelsÚkernel_sizeÚstrideÚpaddingc                 ó„   •— ||dœ}t         ‰	| �  «        t        ||f||||dœ|¤Ž| _        t        ||fd|dœ|¤Ž| _        y )N©ÚdeviceÚdtype)r   r   r   Úgroupsr
   ©r   r   )ÚsuperÚ__init__r   Údepthwise_conv2dÚpointwise_conv2d©
Úselfr   r   r   r   r   r   r   ÚddÚ	__class__s
            €ú^/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/pnasnet.pyr   zSeparableConv2d.__init__   sv   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ -ØØð!
ð $ØØØñ!
ð ñ!
ˆÔô !.ØØð!
ð Øñ	!
ð
 ñ!
ˆÕó    c                 óJ   — | j                  |«      }| j                  |«      }|S ©N)r   r   ©r!   Úxs     r$   ÚforwardzSeparableConv2d.forward5   s'   € Ø×!Ñ! !Ó$ˆØ×!Ñ! !Ó$ˆØˆr%   ©Ú NN©Ú__name__Ú
__module__Ú__qualname__ÚintÚstrr   r*   Ú__classcell__©r#   s   @r$   r   r      sH   ø„ ð ØØñ
àð
ð ð
ð ð	
ð
 ð
ð õ
ö:r%   r   c                   óJ   ‡ — e Zd Z	 	 	 	 	 d	dedededededefˆ fd„Zd„ Zˆ xZS )
ÚBranchSeparablesr   r   r   r   Ú	stem_cellr   c	                 óh  •— ||dœ}	t         ‰| �  «        |r|n|}
t        j                  «       | _        t        ||
|f||dœ|	¤Ž| _        t        j                  |
fddi|	¤Ž| _        t        j                  «       | _	        t        |
||fd|dœ|	¤Ž| _
        t        j                  |fddi|	¤Ž| _        y )Nr   ©r   r   Úepsçü©ñÒMbP?r
   )r   r   ÚnnÚReLUÚact_1r   Úseparable_1ÚBatchNorm2dÚbn_sep_1Úact_2Úseparable_2Úbn_sep_2)r!   r   r   r   r   r7   r   r   r   r"   Úmiddle_channelsr#   s              €r$   r   zBranchSeparables.__init__=   sÏ   ø€ ð ¨Ñ/ˆÜ‰ÑÔÙ*3™,¸ˆÜ—W‘W“YˆŒ
Ü*ØØØð
ð Øñ
ð ñ
ˆÔô Ÿ™ ÑH¸EÐHÀRÑHˆŒÜ—W‘W“YˆŒ
Ü*ØØØð
ð Øñ
ð ñ
ˆÔô Ÿ™ |ÑE¸ÐEÀ"ÑEˆ�r%   c                 óÒ   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }|S r'   )r>   r?   rA   rB   rC   rD   r(   s     r$   r*   zBranchSeparables.forward`   s]   € Ø�J‰J�q‹MˆØ×Ñ˜QÓˆØ�M‰M˜!ÓˆØ�J‰J�q‹MˆØ×Ñ˜QÓˆØ�M‰M˜!ÓˆØˆr%   )r
   Fr,   NN)	r.   r/   r0   r1   Úboolr2   r   r*   r3   r4   s   @r$   r6   r6   ;   s`   ø„ ð Ø#ØØØñ!Fàð!Fð ð!Fð ð	!Fð
 ð!Fð ð!Fð õ!FöFr%   r6   c                   óD   ‡ — e Zd Z	 	 	 	 ddededededef
ˆ fd„Zd„ Zˆ xZS )	Ú	ActConvBnr   r   r   r   r   c                 óÄ   •— ||dœ}t         ‰	| �  «        t        j                  «       | _        t        ||f|||dœ|¤Ž| _        t        j                  |fddi|¤Ž| _        y )Nr   ©r   r   r   r:   r;   )	r   r   r<   r=   Úactr   Úconvr@   Úbnr    s
            €r$   r   zActConvBn.__init__l   so   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ—7‘7“9ˆŒÜ!ØØð
ð $ØØñ
ð ñ
ˆŒ	ô —.‘. Ñ?°5Ð?¸BÑ?ˆ�r%   c                 ól   — | j                  |«      }| j                  |«      }| j                  |«      }|S r'   )rL   rM   rN   r(   s     r$   r*   zActConvBn.forwardƒ   s.   € Ø�H‰H�Q‹KˆØ�I‰I�a‹LˆØ�G‰G�A‹JˆØˆr%   )r
   r,   NNr-   r4   s   @r$   rI   rI   j   sQ   ø„ ð ØØØñ@àð@ð ð@ð ð	@ð
 ð@ð õ@ö.r%   rI   c                   ó:   ‡ — e Zd Z	 	 	 ddededefˆ fd„Zd„ Zˆ xZS )ÚFactorizedReductionr   r   r   c                 ó  •— ||dœ}t         ‰| �  «        t        j                  «       | _        t        j
                  t        dt        j                  ddd¬«      fdt        ||dz  fd|dœ|¤Žfg«      «      | _	        t        j
                  t        d	t        j                  d
«      fdt        j                  ddd¬«      fdt        ||dz  fd|dœ|¤Žfg«      «      | _        t        j                  |fddi|¤Ž| _        y )Nr   Úavgpoolr
   é   F)r   Úcount_include_padrM   r   Úpad)éÿÿÿÿr
   rW   r
   r:   r;   )r   r   r<   r=   rL   Ú
Sequentialr   Ú	AvgPool2dr   Úpath_1Ú	ZeroPad2dÚpath_2r@   Úfinal_path_bn)r!   r   r   r   r   r   r"   r#   s          €r$   r   zFactorizedReduction.__init__Œ   sý   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ—7‘7“9ˆŒÜ—m‘m¤KØœŸ™ Q¨qÀEÔJÐKØ”] ;°ÀÑ0AÐhÈqÐZaÑhÐegÑhÐið1
ó %ó ˆŒô —m‘m¤KØ”B—L‘L Ó0Ð1ØœŸ™ Q¨qÀEÔJÐKØ”] ;°ÀÑ0AÐhÈqÐZaÑhÐegÑhÐið1
ó %ó ˆŒô
  Ÿ^™^¨LÑJ¸eÐJÀrÑJˆÕr%   c                 óº   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  t	        j
                  ||gd«      «      }|S ©Nr
   )rL   rZ   r\   r]   ÚtorchÚcat)r!   r)   Úx_path1Úx_path2Úouts        r$   r*   zFactorizedReduction.forward¢   sN   € Ø�H‰H�Q‹KˆØ—+‘+˜a“.ˆØ—+‘+˜a“.ˆØ× Ñ ¤§¡¨G°WÐ+=¸qÓ!AÓBˆØˆ
r%   r+   r-   r4   s   @r$   rQ   rQ   Š   s8   ø„ ð ØØñKàðKð ðKð õ	Kö,r%   rQ   c                   ó   — e Zd Zd„ Zy)ÚCellBasec                 óà  — | j                  |«      }| j                  |«      }||z   }| j                  |«      }| j                  |«      }||z   }| j	                  |«      }	| j                  |«      }
|	|
z   }| j                  |«      }| j                  |«      }||z   }| j                  |«      }| j                  �| j                  |«      }n|}||z   }t        j                  |||||gd«      }|S r_   )Úcomb_iter_0_leftÚcomb_iter_0_rightÚcomb_iter_1_leftÚcomb_iter_1_rightÚcomb_iter_2_leftÚcomb_iter_2_rightÚcomb_iter_3_leftÚcomb_iter_3_rightÚcomb_iter_4_leftÚcomb_iter_4_rightr`   ra   )r!   Úx_leftÚx_rightÚx_comb_iter_0_leftÚx_comb_iter_0_rightÚx_comb_iter_0Úx_comb_iter_1_leftÚx_comb_iter_1_rightÚx_comb_iter_1Úx_comb_iter_2_leftÚx_comb_iter_2_rightÚx_comb_iter_2Úx_comb_iter_3_leftÚx_comb_iter_3_rightÚx_comb_iter_3Úx_comb_iter_4_leftÚx_comb_iter_4_rightÚx_comb_iter_4Úx_outs                      r$   Úcell_forwardzCellBase.cell_forward¬   s  € Ø!×2Ñ2°6Ó:ÐØ"×4Ñ4°VÓ<ÐØ*Ð-@Ñ@ˆà!×2Ñ2°7Ó;ÐØ"×4Ñ4°WÓ=ÐØ*Ð-@Ñ@ˆà!×2Ñ2°7Ó;ÐØ"×4Ñ4°WÓ=ÐØ*Ð-@Ñ@ˆà!×2Ñ2°=ÓAÐØ"×4Ñ4°WÓ=ÐØ*Ð-@Ñ@ˆà!×2Ñ2°6Ó:ÐØ×!Ñ!Ð-Ø"&×"8Ñ"8¸Ó"AÑà")ÐØ*Ð-@Ñ@ˆä—	‘	˜=¨-¸ÈÐWdÐeÐghÓiˆØˆr%   N)r.   r/   r0   r„   © r%   r$   rf   rf   ª   s   „ ór%   rf   c                   óB   ‡ — e Zd Z	 	 	 ddededededef
ˆ fd„Zd„ Zˆ xZS )	Ú	CellStem0Úin_chs_leftÚout_chs_leftÚin_chs_rightÚout_chs_rightÚpad_typec                 ó–  •— ||dœ}t         ‰	| �  «        t        ||fd|dœ|¤Ž| _        t	        ||fddd|dœ|¤Ž| _        t        j                  t        dt        d	d
d|¬«      fdt        ||fd|dœ|¤Žfdt        j                  |fddi|¤Žfg«      «      | _        t	        ||fdd|dœ|¤Ž| _        t        d	d
d|¬«      | _        t	        ||fdd|dœ|¤Ž| _        t	        ||fd
d|dœ|¤Ž| _        t	        ||fd
|dœ|¤Ž| _        t        d	d
d|¬«      | _        t	        ||fd
dd|dœ|¤Ž| _        t        ||fdd|dœ|¤Ž| _        y )Nr   r
   r   é   rT   T)r   r   r7   r   Úmax_poolÚmaxé   r9   rM   rN   r:   r;   é   rK   )r   r   rI   Úconv_1x1r6   rh   r<   rX   r   r   r   r@   ri   rj   rk   rl   rm   rn   ro   rp   rq   )
r!   rˆ   r‰   rŠ   r‹   rŒ   r   r   r"   r#   s
            €r$   r   zCellStem0.__init__Ê   së  ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ! ,°ÐeÈ1ÐV^ÑeÐbdÑeˆŒä 0Ø˜ð!hØ34¸QÈ$ÐX`ñ!hØdfñ!hˆÔä!#§¡¬{Øœ u¨a¸À8ÔLÐMØ”] ;°ÐdÈ!ÐU]ÑdÐacÑdÐeØ”2—>‘> ,Ñ@°EÐ@¸RÑ@ÐAð<
ó 0ó "ˆÔô !1Ø˜=ð![Ø67ÀÈ8ñ![ØWYñ![ˆÔä!.¨u°aÀÈ8Ô!TˆÔä 0Ø˜=ð![Ø67ÀÈ8ñ![ØWYñ![ˆÔä!1Ø˜=ð"[Ø67ÀÈ8ñ"[ØWYñ"[ˆÔô !1Ø˜=ð!QØ67Àñ!QØMOñ!QˆÔä!.¨u°aÀÈ8Ô!TˆÔä 0Ø˜-ð!jØ56¸qÈDÐZbñ!jØfhñ!jˆÔä!*Ø˜=ð"[Ø67ÀÈ8ñ"[ØWYñ"[ˆÕr%   c                 óL   — | j                  |«      }| j                  ||«      }|S r'   )r“   r„   ©r!   rr   rs   rƒ   s       r$   r*   zCellStem0.forwardò   s'   € Ø—-‘- Ó'ˆØ×!Ñ! &¨'Ó2ˆØˆr%   r+   r-   r4   s   @r$   r‡   r‡   È   sO   ø„ ð ØØñ&[àð&[ð ð&[ð ð	&[ð
 ð&[ð õ&[öPr%   r‡   c                   óN   ‡ — e Zd Z	 	 	 	 	 d
dededededededefˆ fd„Zd	„ Zˆ xZS )ÚCellrˆ   r‰   rŠ   r‹   rŒ   Úis_reductionÚmatch_prev_layer_dimsc
                 ó„  •— ||	dœ}
t         ‰| �  «        |rdnd}|| _        |rt        ||fd|i|
¤Ž| _        nt        ||fd|dœ|
¤Ž| _        t        ||fd|dœ|
¤Ž| _        t        ||fd||dœ|
¤Ž| _        t        dd	||¬
«      | _
        t        ||fd||dœ|
¤Ž| _        t        dd	||¬
«      | _        t        ||fd||dœ|
¤Ž| _        t        ||fd	||dœ|
¤Ž| _        t        ||fdd	i|
¤Ž| _        t        dd	||¬
«      | _        t        ||fd	||dœ|
¤Ž| _        |rt        ||fd||dœ|
¤Ž| _        y d | _        y )Nr   rT   r
   r   r   rŽ   rK   r�   r‘   r9   r’   r   )r   r   Úmatch_prev_layer_dimensionsrQ   Úconv_prev_1x1rI   r“   r6   rh   r   ri   rj   rk   rl   rm   rn   ro   rp   rq   )r!   rˆ   r‰   rŠ   r‹   rŒ   r˜   r™   r   r   r"   r   r#   s               €r$   r   zCell.__init__ú   sè  ø€ ð ¨Ñ/ˆÜ‰ÑÔñ #‘¨ˆð
 ,AˆÔ(Ù Ü!4°[À,Ñ!gÐX`Ð!gÐdfÑ!gˆDÕä!*¨;¸Ð!lÐRSÐ]eÑ!lÐikÑ!lˆDÔÜ! ,°ÐeÈ1ÐV^ÑeÐbdÑeˆŒä 0Ø˜,ð!^Ø45¸fÈhñ!^ØZ\ñ!^ˆÔä!.¨u°aÀÐPXÔ!YˆÔä 0Ø˜=ð!`Ø67ÀÐPXñ!`Ø\^ñ!`ˆÔä!.¨u°aÀÐPXÔ!YˆÔä 0Ø˜=ð!`Ø67ÀÐPXñ!`Ø\^ñ!`ˆÔä!1Ø˜=ð"`Ø67ÀÐPXñ"`Ø\^ñ"`ˆÔô !1°ÀÑ cÐ[\Ð cÐ`bÑ cˆÔÜ!.¨u°aÀÐPXÔ!YˆÔä 0Ø˜,ð!^Ø45¸fÈhñ!^ØZ\ñ!^ˆÔáÜ%.Ø˜}ð&dØ:;ÀFÐT\ñ&dØ`bñ&dˆDÕ"ð &*ˆDÕ"r%   c                 ón   — | j                  |«      }| j                  |«      }| j                  ||«      }|S r'   )rœ   r“   r„   r•   s       r$   r*   zCell.forward/  s7   € Ø×#Ñ# FÓ+ˆØ—-‘- Ó(ˆØ×!Ñ! &¨'Ó2ˆØˆr%   )r,   FFNN)	r.   r/   r0   r1   r2   rG   r   r*   r3   r4   s   @r$   r—   r—   ø   sc   ø„ ð Ø!&Ø*/ØØñ3*àð3*ð ð3*ð ð	3*ð
 ð3*ð ð3*ð ð3*ð $(õ3*öjr%   r—   c                   ó<  ‡ — e Zd Z	 	 	 	 	 	 	 	 ddededededede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fd„Zd„ Zddefd„Zd„ Zˆ xZS )r   Únum_classesÚin_chansÚoutput_strideÚ	drop_rateÚglobal_poolrŒ   c	                 ó|  •— t         ‰
| �  «        ||dœ}	|| _        || _        dx| _        | _        |dk(  sJ ‚t        |dfdddt        t        j                  dd	¬
«      ddœ|	¤Ž| _
        t        d%dddd|dœ|	¤Ž| _        t        d%dddd|dddœ|	¤Ž| _        t        d%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dœ|	¤Ž| _        t        d%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dœ|	¤Ž| _        t        d%dddd|ddœ|	¤Ž| _        t        d%dddd|dœ|	¤Ž| _        t        d%dddd|dœ|	¤Ž| _        t        j6                  «       | _        t;        ddd¬«      t;        ddd¬«      t;        ddd ¬«      t;        dd!d"¬«      t;        ddd#¬«      g| _        t?        | j                  | j                  f||d$œ|	¤Ž\  | _         | _!        | _"        y )&Nr   ià  é    é`   r‘   rT   r   r;   gš™™™™™¹?)r:   ÚmomentumF)r   r   r   Ú
norm_layerÚ	apply_acté6   )rˆ   r‰   rŠ   r‹   rŒ   él   i  T)rˆ   r‰   rŠ   r‹   rŒ   r™   r˜   éØ   i  )rˆ   r‰   rŠ   r‹   rŒ   r™   i8  i°  )rˆ   r‰   rŠ   r‹   rŒ   r˜   ip  i`  Úconv_0)Únum_chsÚ	reductionÚmoduleé   zcell_stem_1.conv_1x1.acté   zcell_4.conv_1x1.acté   zcell_8.conv_1x1.actrL   )Ú	pool_typer¢   r…   )#r   r   rŸ   r    Únum_featuresÚhead_hidden_sizer   r   r<   r@   r­   r‡   Úcell_stem_0r—   Úcell_stem_1Úcell_0Úcell_1Úcell_2Úcell_3Úcell_4Úcell_5Úcell_6Úcell_7Úcell_8Úcell_9Úcell_10Úcell_11r=   rL   ÚdictÚfeature_infor	   r£   Ú	head_dropÚlast_linear)r!   rŸ   r    r¡   r¢   r£   rŒ   r   r   r"   r#   s             €r$   r   zPNASNet5Large.__init__7  sq  ø€ ô 	‰ÑÔØ¨Ñ/ˆØ&ˆÔØ ˆŒØ48Ð8ˆÔ˜DÔ1Ø Ò"Ð"Ð"ä!Ø�bð`Ø&'°¸1ÜœrŸ~™~°5À3ÔGÐSXñ`à\^ñ`ˆŒô %ð iØ¨¸"ÈBÐYañiØegñiˆÔô  ð AØ¨¸3ÈcÐ\dØ"&°TñAà=?ñAˆÔô ð .Ø¨#¸CÈsÐ]eØ"&ñ.à*,ñ.ˆŒô ð nØ¨#¸DÐPSÐ^fñnØjlñnˆŒäð oØ¨3¸TÐQTÐ_gñoØkmñoˆŒäð oØ¨3¸TÐQTÐ_gñoØkmñoˆŒô ð %Ø¨3¸TÐQTÐ_gØñ%à!#ñ%ˆŒô ð .Ø¨3¸TÐQTÐ_gØ"&ñ.à*,ñ.ˆŒô ð oØ¨3¸TÐQTÐ_gñoØkmñoˆŒäð oØ¨3¸TÐQTÐ_gñoØkmñoˆŒô ð %Ø¨3¸TÐQTÐ_gØñ%à!#ñ%ˆŒô ð .Ø¨3¸TÐQTÐ_gØ"&ñ.à*,ñ.ˆŒô ð oØ¨3¸TÐQTÐ_gñoØkmñoˆŒäð oØ¨3¸TÐQTÐ_gñoØkmñoˆŒä—7‘7“9ˆŒä˜ q°Ô:Ü˜¨Ð2LÔMÜ˜¨Ð3HÔIÜ˜¨Ð4IÔJÜ˜¨°EÔ:ð
ˆÔô >OØ×Ñ˜t×/Ñ/ð>cØ;FÐR[ñ>cØ_añ>cÑ:ˆÔ˜$œ.¨$Õ*:r%   c                 ó   — t        dd¬«      S )Nz^conv_0|cell_stem_[01]z^cell_(\d+))ÚstemÚblocks)rÅ   )r!   Úcoarses     r$   Úgroup_matcherzPNASNet5Large.group_matcher~  s   € äÐ2¸>ÔJÐJr%   c                 ó   — |rJ d«       ‚y )Nz$gradient checkpointing not supportedr…   )r!   Úenables     r$   Úset_grad_checkpointingz$PNASNet5Large.set_grad_checkpointing‚  s   € áÐAÐAÓAˆz�6r%   Úreturnc                 ó   — | j                   S r'   )rÈ   )r!   s    r$   Úget_classifierzPNASNet5Large.get_classifier†  s   € à×ÑÐr%   c                 ó|   — ||dœ}|| _         t        | j                  | j                   fd|i|¤Ž\  | _        | _        y )Nr   r´   )rŸ   r	   rµ   r£   rÈ   )r!   rŸ   r£   r   r   r"   s         r$   Úreset_classifierzPNASNet5Large.reset_classifierŠ  sM   € Ø¨Ñ/ˆØ&ˆÔÜ->Ø×Ñ˜t×/Ñ/ñ.NØ;Fð.NØJLñ.NÑ*ˆÔ˜$Õ*r%   c                 ó@  — | j                  |«      }| j                  |«      }| j                  ||«      }| j                  ||«      }| j	                  ||«      }| j                  ||«      }| j                  ||«      }| j                  ||«      }	| j                  ||	«      }
| j                  |	|
«      }| j                  |
|«      }| j                  ||«      }| j                  ||«      }| j                  ||«      }| j                  ||«      }| j                  |«      }|S r'   )r­   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rL   )r!   r)   Úx_conv_0Úx_stem_0Úx_stem_1Úx_cell_0Úx_cell_1Úx_cell_2Úx_cell_3Úx_cell_4Úx_cell_5Úx_cell_6Úx_cell_7Úx_cell_8Úx_cell_9Ú	x_cell_10Ú	x_cell_11s                    r$   Úforward_featureszPNASNet5Large.forward_features�  s  € Ø—;‘;˜q“>ˆØ×#Ñ# HÓ-ˆØ×#Ñ# H¨hÓ7ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—;‘;˜x¨Ó2ˆØ—L‘L ¨8Ó4ˆ	Ø—L‘L ¨9Ó5ˆ	Ø�H‰H�YÓˆØˆr%   Ú
pre_logitsc                 óp   — | j                  |«      }| j                  |«      }|r|S | j                  |«      S r'   )r£   rÇ   rÈ   )r!   r)   rç   s      r$   Úforward_headzPNASNet5Large.forward_head£  s8   € Ø×Ñ˜QÓˆØ�N‰N˜1ÓˆÙˆqÐ7 D×$4Ñ$4°QÓ$7Ð7r%   c                 óJ   — | j                  |«      }| j                  |«      }|S r'   )ræ   ré   r(   s     r$   r*   zPNASNet5Large.forward¨  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆr%   )éè  r‘   r¥   g        Úavgr,   NN©F)T)rì   NN)r.   r/   r0   r1   Úfloatr2   r   r`   ÚjitÚignorerÍ   rÐ   r<   ÚModulerÓ   rÕ   ræ   rG   ré   r*   r3   r4   s   @r$   r   r   6  s   ø„ ð  $ØØ!#Ø!Ø$ØØØñEcàðEcð ðEcð ð	Ecð
 ðEcð ðEcð õEcðN ‡Y�Y×ÑòKó ðKð ‡Y�Y×ÑòBó ðBð ‡Y�Y×Ñð  §	¡	ò  ó ð ñN¨Cð N¸có Nòñ&8¨$ó 8ö
r%   c                 ó@   — t        t        | |fdt        dd¬«      i|¤ŽS )NÚfeature_cfgÚhookT)Úfeature_clsÚ
no_rewrite)r   r   rÅ   )ÚvariantÚ
pretrainedÚkwargss      r$   Ú_create_pnasnetrú   ®  s3   € ÜÜØØñô  V¸Ô=ð	ð
 ñð r%   zpnasnet5large.tf_in1kztimm/)r‘   éK  rû   )é   rü   gôýÔxé&í?Úbicubic)ç      à?rþ   rþ   rë   zconv_0.convrÈ   z
apache-2.0)Ú	hf_hub_idÚ
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdrŸ   Ú
first_convÚ
classifierÚlicenserÑ   c                 ó6   — t        dddi|¤Ž}t        d| fi |¤ŽS )zˆPNASNet-5 model architecture from the
    `"Progressive Neural Architecture Search"
    <https://arxiv.org/abs/1712.00559>`_ paper.
    rŒ   ÚsameÚpnasnet5larger…   )rÅ   rú   )rø   rù   Úmodel_kwargss      r$   r  r  É  s(   € ô Ñ2 Ð2¨6Ñ2€LÜ˜?¨JÑG¸,ÑGÐGr%   rí   )!Ú__doc__Úcollectionsr   Ú	functoolsr   Útypingr   r`   Útorch.nnr<   Útimm.layersr   r   r   r	   Ú_builderr   Ú	_registryr   r   Ú__all__rñ   r   r6   rI   rQ   rf   r‡   r—   r   rú   Údefault_cfgsr  r…   r%   r$   ú<module>r     s  ðñõ $Ý Ý ã Ý ç TÓ TÝ *ß <àÐ
€ô"�b—i‘iô "ôJ,�r—y‘yô ,ô^�—	‘	ô ô@˜"Ÿ)™)ô ô@ˆr�y‰yô ô<-�ô -ô`;ˆ8ô ;ô|u�B—I‘Iô uópñ %ØØØ#ØØØ"ØØØØ#Ø#Øñð&ó €ð" ñH°ò Hó ñHr%   