
    RЦir                     j   S r SSKJr  SSKJrJr  SSKrSSKJr  SSK	J
r
JrJrJr  SSKJr  SSKJrJr  S	/r " S
 S\R(                  5      r " S S\R(                  5      r " S S\R(                  5      r " S S\R(                  5      r " S S\R(                  5      r " S S\R(                  5      r " S S\R(                  5      r " S S\R(                  5      r " S S\R(                  5      r " S S	\R(                  5      rS-S jr\" SSS S!S"S#S$S%S%S&S'S(S)S*.05      r \S-S+\4S, jj5       r!g).zNasNet-A (Large)
nasnetalarge implementation grabbed from Cadene's pretrained models
https://github.com/Cadene/pretrained-models.pytorch
    )partial)OptionalTypeN)ConvNormActcreate_conv2dcreate_pool2dcreate_classifier   )build_model_with_cfg)register_modelgenerate_default_cfgsNASNetALargec                   R   ^  \ rS rSr    S
S\S\S\S\S\4
U 4S jjjrS rS	rU =r	$ )	ActConvBn   in_channelsout_channelskernel_sizestridepaddingc                    > XgS.n[         T	U ]  5         [        R                  " 5       U l        [        X4X4US.UD6U l        [        R                  " U4SSS.UD6U l        g )Ndevicedtype)r   r   r   MbP?皙?epsmomentum)	super__init__nnReLUactr   convBatchNorm2dbn
selfr   r   r   r   r   r   r   dd	__class__s
            Q/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/timm/models/nasnet.pyr!   ActConvBn.__init__   sf     /779!f3>W^fbdf	..M53M"M    c                 l    U R                  U5      nU R                  U5      nU R                  U5      nU$ N)r$   r%   r'   r)   xs     r,   forwardActConvBn.forward&   s.    HHQKIIaLGGAJr.   )r$   r'   r%   )r
    NN
__name__
__module____qualname____firstlineno__intstrr!   r3   __static_attributes____classcell__r+   s   @r,   r   r      s\     NN N 	N
 N N N" r.   r   c                   P   ^  \ rS rSr   S
S\S\S\S\S\4
U 4S jjjrS rS	rU =r	$ )SeparableConv2d-   r   r   r   r   r   c                    > XgS.n[         T	U ]  5         [        UU4UUUUS.UD6U l        [        UU4SSS.UD6U l        g )Nr   )r   r   r   groupsr
   r   )r   r   )r    r!   r   depthwise_conv2dpointwise_conv2dr(   s
            r,   r!   SeparableConv2d.__init__/   st     / -!
 $!
 !
 !.!
 	!

 !
r.   c                 J    U R                  U5      nU R                  U5      nU$ r0   rE   rF   r1   s     r,   r3   SeparableConv2d.forwardL   s'    !!!$!!!$r.   rI   r5   NNr6   r?   s   @r,   rA   rA   -   sR     

 
 	

 
 
 
: r.   rA   c                   X   ^  \ rS rSr     SS\S\S\S\S\S\4U 4S jjjrS	 rS
r	U =r
$ )BranchSeparablesR   r   r   r   r   pad_type	stem_cellc	                 t  > XxS.n	[         TU ]  5         U(       a  UOUn
[        R                  " 5       U l        [        XU4XES.U	D6U l        [        R                  " U
4SSS.U	D6U l        [        R                  " SS9U l	        [        XU4SUS.U	D6U l
        [        R                  " U4SSS.U	D6U l        g )	Nr   r   r   r   r   r   Tinplacer
   )r    r!   r"   r#   act_1rA   separable_1r&   bn_sep_1act_2separable_2bn_sep_2)r)   r   r   r   r   rO   rP   r   r   r*   middle_channelsr+   s              r,   r!   BranchSeparables.__init__T   s     /*3,WWY
*+^>D^Z\^VECVSUVWWT*
*;Z?@(ZVXZ|SSPRSr.   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nU$ r0   )rU   rV   rW   rX   rY   rZ   r1   s     r,   r3   BranchSeparables.forwardk   s]    JJqMQMM!JJqMQMM!r.   )rU   rX   rW   rZ   rV   rY   )r
   r5   FNN)r7   r8   r9   r:   r;   r<   boolr!   r3   r=   r>   r?   s   @r,   rM   rM   R   sj     #TT T 	T
 T T T T. r.   rM   c                   J   ^  \ rS rSr    SS\S\S\4U 4S jjjrS rSrU =r	$ )		CellStem0u   	stem_sizenum_channelsrO   c                   > XES.n[         TU ]  5         X l        Xl        [	        U R                  U R                  S4SS0UD6U l        [        U R                  U R                  SSU40 UD6U l        [        U R                  U R                  SSU4SS0UD6U l        [        S	S
SUS9U l
        [        U R                  U R                  SSU4SS0UD6U l        [        SS
SSUS9U l        [        U R                  U R                  SSU4SS0UD6U l        [        SS
SSUS9U l        [        U R                  U R                  S
SU40 UD6U l        [        S	S
SUS9U l        g )Nr   r
   r            rP   Tmax   r   avgFcount_include_padr   )r    r!   rd   rc   r   conv_1x1rM   comb_iter_0_leftcomb_iter_0_rightr   comb_iter_1_leftcomb_iter_1_rightcomb_iter_2_leftcomb_iter_2_rightcomb_iter_3_rightcomb_iter_4_leftcomb_iter_4_rightr)   rc   rd   rO   r   r   r*   r+   s          r,   r!   CellStem0.__init__v   s    /("!$..$2C2CQWqWTVW 0t00!Q!HDF!H!1NND--q!X"UIM"UQS"U !.eQ8 L!1NND--q!X"UIM"UQS"U !.eQU\d e!1NND--q!X"UIM"UQS"U "/uae]e!f 0t00!Q!HDF!H!.uaH!Mr.   c                    U R                  U5      nU R                  U5      nU R                  U5      nX4-   nU R                  U5      nU R	                  U5      nXg-   nU R                  U5      n	U R                  U5      n
X-   nU R                  U5      nX-   nU R                  U5      nU R                  U5      nX-   n[        R                  " XUU/S5      nU$ Nr
   )ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   torchcat)r)   r2   x1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_rightx_comb_iter_3x_comb_iter_4_leftx_comb_iter_4_rightx_comb_iter_4x_outs                     r,   r3   CellStem0.forward   s    ]]1!2226"44Q7*@!2226"44Q7*@!2226"44Q7*@"44]C+;!22=A"44R8*@		=VXYZr.   )rp   rq   rr   rs   rt   ru   rv   rw   rx   ro   rd   rc   )*   r5   NNr6   r?   s   @r,   ra   ra   u   sG     !#NN N 	N NB r.   ra   c                   H   ^  \ rS rSr   SS\S\S\4U 4S jjjrS rSrU =r	$ )		CellStem1   rc   rd   rO   c           	        > XES.n[         TU ]  5         X l        Xl        [	        SU R                  -  U R                  S4SS0UD6U l        [        R                  " 5       U l        [        R                  " 5       U l
        U R                  R                  S[        R                  " SSSS95        U R                  R                  S[        R                  " U R                  U R                  S-  S4SSS	.UD65        [        R                  " 5       U l        U R                  R                  S
[        R                  " S5      5        U R                  R                  S[        R                  " SSSS95        U R                  R                  S[        R                  " U R                  U R                  S-  S4SSS	.UD65        [        R                   " U R                  4SSS.UD6U l        [%        U R                  U R                  SSU40 UD6U l        [%        U R                  U R                  SSU40 UD6U l        [+        SSSUS9U l        [%        U R                  U R                  SSU40 UD6U l        [+        SSSSUS9U l        [%        U R                  U R                  SSU40 UD6U l        [+        SSSSUS9U l        [%        U R                  U R                  SSU40 UD6U l        [+        SSSUS9U l        g )Nr   rg   r
   r   avgpoolFr   rn   r%   r   biaspadr
   r   r
   r   r   r   rf   rh   ri   rj   rk   rl   rm   )r    r!   rd   rc   r   ro   r"   r#   r$   
Sequentialpath_1
add_module	AvgPool2dConv2dpath_2	ZeroPad2dr&   final_path_bnrM   rp   rq   r   rr   rs   rt   ru   rv   rw   rx   ry   s          r,   r!   CellStem1.__init__   s    /("!!d&7&7"79J9JA^VW^[]^779mmoy",,qV[*\]vryyARARVWAWYZ'wcdkp'wtv'wxmmoubll>&BCy",,qV[*\]vryyARARVWAWYZ'wcdkp'wtv'wx^^D,=,=]5SV]Z\] 01B1BDDUDUWXZ[]e lik l!1$2C2CTEVEVXY[\^f!mjl!m -eQ8 L!1$2C2CTEVEVXY[\^f!mjl!m -eQU\d e!1$2C2CTEVEVXY[\^f!mjl!m!.uae]e!f 01B1BDDUDUWXZ[]e lik l!.uaH!Mr.   c                 p   U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  [
        R                  " XV/S5      5      nU R                  U5      nU R                  U5      n	X-   n
U R                  U5      nU R                  U5      nX-   nU R                  U5      nU R                  U5      nX-   nU R                  U
5      nUU-   nU R                  U
5      nU R                  U5      nUU-   n[
        R                  " UUUU/S5      nU$ r|   )ro   r$   r   r   r   r}   r~   rp   rq   rr   rs   rt   ru   rv   rw   rx   )r)   x_conv0x_stem_0x_leftx_relux_path1x_path2x_rightr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                          r,   r3   CellStem1.forward   s=   x('"++f%++f%$$UYY/A1%EF!226:"44W=*@!226:"44W=*@!226:"44W=*@"44]C+m;!22=A"44V<*-@@		=-VXYZr.   )r$   rp   rq   rr   rs   rt   ru   rv   rw   rx   ro   r   rd   r   r   rc   rK   r6   r?   s   @r,   r   r      sD     &N&N &N 	&N &NP r.   r   c                   P   ^  \ rS rSr   S
S\S\S\S\S\4
U 4S jjjrS rS	rU =r	$ )	FirstCell   in_chs_leftout_chs_leftin_chs_rightout_chs_rightrO   c           	      Z  > XgS.n[         T	U ]  5         [        X4S4SS0UD6U l        [        R
                  " 5       U l        [        R                  " 5       U l        U R                  R                  S[        R                  " SSSS95        U R                  R                  S[        R                  " XS4SSS	.UD65        [        R                  " 5       U l        U R                  R                  S
[        R                  " S5      5        U R                  R                  S[        R                  " SSSS95        U R                  R                  S[        R                  " XS4SSS	.UD65        [        R                  " US-  4SSS.UD6U l        [!        XDSSU40 UD6U l        [!        XDSSU40 UD6U l        [!        XDSSU40 UD6U l        [!        XDSSU40 UD6U l        [+        SSSSUS9U l        [+        SSSSUS9U l        [+        SSSSUS9U l        [!        XDSSU40 UD6U l        g )Nr   r
   r   r   rg   Fr   r%   r   r   r   r   r   r   rf   rj   rl   rm   )r    r!   r   ro   r"   r#   r$   r   r   r   r   r   r   r   r&   r   rM   rp   rq   rr   rs   r   rt   comb_iter_3_leftrv   rw   
r)   r   r   r   r   rO   r   r   r*   r+   s
            r,   r!   FirstCell.__init__   s    /!,qQQbQ779mmoy",,qV[*\]vryyA'jVW^c'jgi'jkmmoubll>&BCy",,qV[*\]vryyA'jVW^c'jgi'jk^^L1,<\%RU\Y[\ 0qRSU] dac d!1-PQSTV^!ebd!e 0qRSU] dac d!1-PQSTV^!ebd!e -eQU\d e -eQU\d e!.uae]e!f 0qRSU] dac dr.   c                 N   U R                  U5      nU R                  U5      nU R                  U5      nU R                  [        R
                  " XE/S5      5      nU R                  U5      nU R                  U5      nU R                  U5      n	X-   n
U R                  U5      nU R                  U5      nX-   nU R                  U5      nX-   nU R                  U5      nU R                  U5      nUU-   nU R                  U5      nUU-   n[        R
                  " XjXUU/S5      nU$ r|   )r$   r   r   r   r}   r~   ro   rp   rq   rr   rs   rt   r   rv   rw   )r)   r2   x_prevr   r   r   r   r   r   r   r   r   r   r   r   r   x_comb_iter_3_leftr   r   r   r   r   s                         r,   r3   FirstCell.forward&  s.   &!++f%++f%##EIIw.@!$DE--"!227;"44V<*@!226:"44V<*@!227;*3!226:"44V<*-@@!227;*W4		6-P]_lmopqr.   )r$   rp   rq   rr   rs   rt   r   rv   rw   ro   r   r   r   rK   r6   r?   s   @r,   r   r      sZ     %e%e %e 	%e
 %e %e %eN r.   r   c                   P   ^  \ rS rSr   S
S\S\S\S\S\4
U 4S jjjrS rS	rU =r	$ )
NormalCelliC  r   r   r   r   rO   c                   > XgS.n[         T	U ]  5         [        XS4SUS.UD6U l        [        X4S4SUS.UD6U l        [        XDSSU40 UD6U l        [        X"SSU40 UD6U l        [        X"SSU40 UD6U l        [        X"SSU40 UD6U l	        [        SSSSUS9U l        [        SSSSUS9U l        [        SSSSUS9U l        [        XDSSU40 UD6U l        g )	Nr   r
   rR   rf   rj   rl   Frm   )r    r!   r   conv_prev_1x1ro   rM   rp   rq   rr   rs   r   rt   r   rv   rw   r   s
            r,   r!   NormalCell.__init__E  s    /&{!fAW_fcef!,qcT\c`bc 0qRSU] dac d!1,aQRT\!c`b!c 0QPQS[ b_a b!1,aQRT\!c`b!c -eQU\d e -eQU\d e!.uae]e!f 0qRSU] dac dr.   c                    U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nXV-   nU R	                  U5      nU R                  U5      n	X-   n
U R                  U5      nX-   nU R                  U5      nU R                  U5      nX-   nU R                  U5      nUU-   n[        R                  " X7XUU/S5      nU$ r|   )r   ro   rp   rq   rr   rs   rt   r   rv   rw   r}   r~   )r)   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                      r,   r3   NormalCell.forwarda  s    ##F+--"!227;"44V<*@!226:"44V<*@!227;*3!226:"44V<*@!227;*W4		6-P]_lmopqr.   )
rp   rq   rr   rs   rt   r   rv   rw   ro   r   rK   r6   r?   s   @r,   r   r   C  sY     ee e 	e
 e e e8 r.   r   c                   P   ^  \ rS rSr   S
S\S\S\S\S\4
U 4S jjjrS rS	rU =r	$ )ReductionCell0i{  r   r   r   r   rO   c                   > XgS.n[         T	U ]  5         [        XS4SUS.UD6U l        [        X4S4SUS.UD6U l        [        XDSSU40 UD6U l        [        XDSSU40 UD6U l        [        SSSUS	9U l	        [        XDSSU40 UD6U l
        [        S
SSSUS9U l        [        XDSSU40 UD6U l        [        S
SSSUS9U l        [        XDSSU40 UD6U l        [        SSSUS	9U l        g Nr   r
   rR   rf   rg   rh   ri   rj   rk   rl   Frm   r    r!   r   r   ro   rM   rp   rq   r   rr   rs   rt   ru   rv   rw   rx   r   s
            r,   r!   ReductionCell0.__init__}  -    /&{!fAW_fcef!,qcT\c`bc 0qRSU] dac d!1-PQSTV^!ebd!e -eQ8 L!1-PQSTV^!ebd!e -eQU\d e!1-PQSTV^!ebd!e!.uae]e!f 0qRSU] dac d!.uaH!Mr.   c                    U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nXV-   nU R	                  U5      nU R                  U5      n	X-   n
U R                  U5      nU R                  U5      nX-   nU R                  U5      nX-   nU R                  U5      nU R                  U5      nUU-   n[        R                  " XUU/S5      nU$ r|   r   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   r}   r~   r)   r2   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s                       r,   r3   ReductionCell0.forward     ##F+--"!227;"44V<*@!227;"44V<*@!227;"44V<*@"44]C+;!22=A"44W=*-@@		=VXYZr.   rp   rq   rr   rs   rt   ru   rv   rw   rx   ro   r   rK   r6   r?   s   @r,   r   r   {  Y     NN N 	N
 N N N: r.   r   c                   P   ^  \ rS rSr   S
S\S\S\S\S\4
U 4S jjjrS rS	rU =r	$ )ReductionCell1i  r   r   r   r   rO   c                   > XgS.n[         T	U ]  5         [        XS4SUS.UD6U l        [        X4S4SUS.UD6U l        [        XDSSU40 UD6U l        [        XDSSU40 UD6U l        [        SSSUS	9U l	        [        XDSSU40 UD6U l
        [        S
SSSUS9U l        [        XDSSU40 UD6U l        [        S
SSSUS9U l        [        XDSSU40 UD6U l        [        SSSUS	9U l        g r   r   r   s
            r,   r!   ReductionCell1.__init__  r   r.   c                    U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nXV-   nU R	                  U5      nU R                  U5      n	X-   n
U R                  U5      nU R                  U5      nX-   nU R                  U5      nX-   nU R                  U5      nU R                  U5      nUU-   n[        R                  " XUU/S5      nU$ r|   r   r   s                       r,   r3   ReductionCell1.forward  r   r.   r   rK   r6   r?   s   @r,   r   r     r   r.   r   c                   n  ^  \ rS rSrSr           SS\S\S\S\S\S\S	\S
\S\4U 4S jjjr\	R                  R                  SS j5       r\	R                  R                  SS j5       r\	R                  R                  S\R                  4S j5       rSS\S
\4S jjrS rSS\4S jjrS rSrU =r$ )r   i  zNASNetALarge (6 @ 4032) num_classesin_chansrc   channel_multipliernum_featuresoutput_stride	drop_rateglobal_poolrO   c                   > [         TU ]  5         XS.nXl        X l        X0l        U=U l        U l        X@l        US:X  d   eU R
                  S-  n[        S!UU R                  SSS[        [        R                  SSS	9S
S.UD6U l        [        U R                  4XS-  -  U	S.UD6U l        [        U R                  4X-  U	S.UD6U l        [#        S!XS-  SU-  XS.UD6U l        ['        S!SU-  USU-  XS.UD6U l        ['        S!SU-  USU-  XS.UD6U l        ['        S!SU-  USU-  XS.UD6U l        ['        S!SU-  USU-  XS.UD6U l        ['        S!SU-  USU-  XS.UD6U l        [3        S!SU-  SU-  SU-  SU-  U	S.UD6U l        [#        S!SU-  USU-  SU-  U	S.UD6U l        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l         [C        S!SU-  SU-  SU-  SU-  U	S.UD6U l"        [#        S!SU-  SU-  SU-  SU-  U	S.UD6U l#        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l$        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l%        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l&        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l'        ['        S!SU-  SU-  SU-  SU-  U	S.UD6U l(        [        RR                  " SS9U l*        [W        SSSS9[W        SSSS9[W        SSSS9[W        SSSS9[W        SSSS9/U l,        [[        U R
                  U R                  4UUS .UD6u  U l.        U l/        U l0        g )"Nr          rj   r   rg   r   r   r   F)r   r   r   r   r   
norm_layer	apply_act)rd   rO   )r   r   r   r   rO                  TrS   `   conv0)num_chs	reductionmodule   zcell_stem_1.conv_1x1.acti  zreduction_cell_0.conv_1x1.acti  zreduction_cell_1.conv_1x1.act  r$   )	pool_typer    )1r    r!   r   r   rc   r   head_hidden_sizer   r   r   r"   r&   r   ra   cell_stem_0r   cell_stem_1r   cell_0r   cell_1cell_2cell_3cell_4cell_5r   reduction_cell_0cell_6cell_7cell_8cell_9cell_10cell_11r   reduction_cell_1cell_12cell_13cell_14cell_15cell_16cell_17r#   r$   dictfeature_infor	   r   	head_droplast_linear)r)   r   r   rc   r   r   r   r   r   rO   r   r   r*   channelsr+   s                 r,   r!   NASNetALarge.__init__  s    	/& "4@@D1"4"""$$* ! 	
 r~~53G	
 	

 %NNi)1A6M)NYaiegi$NNb)1)GRZb^`b   X 1}XXXTVX ! XH8XXXTVX ! XH8XXXTVX ! XH8XXXTVX ! XH8XXXTVX ! XH8XXXTVX !/ !\H1x<XQ\H!\XZ!\   \H8XQ\H\XZ\ ! ]H1x<ha(lX]Y[] ! ]XALha(lX]Y[] ! ]XALha(lX]Y[] " ]XALha(lX]Y[] " ]XALha(lX]Y[] !/ !]XALha(lX!]Y[!] ! ]XALha(lX]Y[] " ]XALha(lX]Y[] " ]XALha(lX]Y[] " ]XALha(lX]Y[] " ]XALha(lX]Y[] " ]XALha(lX]Y[] 774(q92LM3RS4STE:
 >O>
 "	>

 >
:$.$*:r.   c                     [        S/ SQS9nU$ )Nz^conv0|cell_stem_[01]))z^cell_(\d+)N)z^reduction_cell_0)r   )z^reduction_cell_1)r   )stemblocks)r
  )r)   coarsematchers      r,   group_matcherNASNetALarge.group_matcherk  s    )
 r.   c                      U(       a   S5       eg )Nz$gradient checkpointing not supportedr   )r)   enables     r,   set_grad_checkpointing#NASNetALarge.set_grad_checkpointingw  s    AAAz6r.   returnc                     U R                   $ r0   )r  )r)   s    r,   get_classifierNASNetALarge.get_classifier{  s    r.   c                 h    Xl         [        U R                  U R                   US9u  U l        U l        g )N)r   )r   r	   r   r   r  )r)   r   r   s      r,   reset_classifierNASNetALarge.reset_classifier  s1    &->t//;.H*$*r.   c                 F   U R                  U5      nU R                  U5      nU R                  X#5      nU R                  XC5      nU R	                  XT5      nU R                  Xe5      nU R                  Xv5      nU R                  X5      n	U R                  X5      n
U R                  X5      nU R                  X5      nU R                  X5      nU R                  X5      nU R                  X5      nU R                  X5      nU R                  UU5      nU R!                  UU5      nU R#                  UU5      nU R%                  UU5      nU R'                  UU5      nU R)                  UU5      nU R+                  UU5      nU R-                  UU5      nU R/                  U5      nU$ r0   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r$   )r)   r2   r   r   x_stem_1x_cell_0x_cell_1x_cell_2x_cell_3x_cell_4x_cell_5x_reduction_cell_0x_cell_6x_cell_7x_cell_8x_cell_9	x_cell_10	x_cell_11x_reduction_cell_1	x_cell_12	x_cell_13	x_cell_14	x_cell_15	x_cell_16	x_cell_17s                            r,   forward_featuresNASNetALarge.forward_features  ss   **Q-##G,##G6;;x2;;x2;;x2;;x2;;x2;;x2!228F;;1<;;x<;;x2;;x2LL4	LLH5	!229iHLL!3Y?	LL,>?	LLI6	LLI6	LLI6	LLI6	HHYr.   
pre_logitsc                 z    U R                  U5      nU R                  U5      nU(       a  U$ U R                  U5      $ r0   )r   r  r  )r)   r2   r:  s      r,   forward_headNASNetALarge.forward_head  s8    QNN1q7D$4$4Q$77r.   c                 J    U R                  U5      nU R                  U5      nU$ r0   )r8  r<  r1   s     r,   r3   NASNetALarge.forward  s'    !!!$a r.   )"r$   r   r   r  r  r  r  r  r  r  r	  r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r  r   r   r   r  rc   )  rj   r   rg   r   r   g        rl   sameNNF)T)rl   )r7   r8   r9   r:   __doc__r;   floatr<   r!   r}   jitignorer  r  r"   Moduler  r   r8  r_   r<  r3   r=   r>   r?   s   @r,   r   r     s/   "  $&' $!#!$"w
w
 w
 	w

 !$w
 w
 w
 w
 w
 w
 w
r YY	 	 YYB B YY 		    HC Hc H
>8$ 8
 r.   c           	      :    [        [        U U4S[        SSS90UD6$ )Nfeature_cfghookT)feature_cls
no_rewrite)r   r   r
  )variant
pretrainedkwargss      r,   _create_nasnetrP    s3     V=	
  r.   znasnetalarge.tf_in1kztimm/zjhttps://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/nasnetalarge-dc4a7b8b.pth)rj   K  rQ  )   rR  gx&?bicubic)      ?rT  rT  r@  z
conv0.convr  z
apache-2.0)	hf_hub_idurl
input_size	pool_sizecrop_pctinterpolationmeanstdr   
first_conv
classifierlicenser  c                 6    [        SSS0UD6n[        SU 40 UD6$ )z'NASNet-A large model architecture.
    rO   rA  nasnetalarger   )r
  rP  )rN  rO  model_kwargss      r,   ra  ra    s(     2262L.*EEEr.   rB  )"rC  	functoolsr   typingr   r   r}   torch.nnr"   timm.layersr   r   r   r	   _builderr   	_registryr   r   __all__rG  r   rA   rM   ra   r   r   r   r   r   r   rP  default_cfgsra  r   r.   r,   <module>rk     s;    !   T T * <
		 4"bii "J ryy  F9		 9xI		 IXC		 CL5 5p7RYY 7t7RYY 7t|299 |~ %{#""#& $ F F Fr.   