Ë
    éÓ^j¦;  ã                   óX  — d Z ddlmZ ddlmZmZmZmZmZ ddl	Z	ddl
mZ ddlmZmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZmZ dgZ G d„ dej4                  «      Z G d„ dej4                  «      Z G d„ dej4                  «      Z G d„ dej4                  «      Z G d„ dej4                  «      Z G d„ dej4                  «      Z  G d„ dej4                  «      Z! G d„ dej4                  «      Z" G d„ dej4                  «      Z#d+de#fd„Z$ edd d!d"d#d$d%eed&d'd(d)œi«      Z%ed+d*„«       Z&y),zØ Pytorch Inception-V4 implementation
Sourced from https://github.com/Cadene/tensorflow-model-zoo.torch (MIT License) which is
based upon Google's Tensorflow implementation and pretrained weights (Apache 2.0 License)
é    )Úpartial)ÚListÚOptionalÚTupleÚUnionÚTypeN)ÚIMAGENET_INCEPTION_MEANÚIMAGENET_INCEPTION_STD)Úcreate_classifierÚConvNormActé   )Úbuild_model_with_cfg)Úfeature_take_indices)Úregister_modelÚgenerate_default_cfgsÚInceptionV4c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )ÚMixed3aNÚ
conv_blockc                 ó„   •— ||dœ}t         ‰| �  «        t        j                  dd¬«      | _         |ddddœ|¤Ž| _        y )N©ÚdeviceÚdtypeé   é   ©Ústride©Úkernel_sizer   ©é@   é`   )ÚsuperÚ__init__ÚnnÚ	MaxPool2dÚmaxpoolÚconv©Úselfr   r   r   ÚddÚ	__class__s        €úc/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/timm/models/inception_v4.pyr$   zMixed3a.__init__   sB   ø€ ð ¨Ñ/ˆÜ‰ÑÔÜ—|‘| A¨aÔ0ˆŒÙÐE°1¸QÑEÀ"ÑEˆ�	ó    c                 óz   — | j                  |«      }| j                  |«      }t        j                  ||fd«      }|S ©Nr   )r'   r(   ÚtorchÚcat©r*   ÚxÚx0Úx1Úouts        r-   ÚforwardzMixed3a.forward    s5   € Ø�\‰\˜!‹_ˆØ�Y‰Y�q‹\ˆÜ�i‰i˜˜R˜ !Ó$ˆØˆ
r.   ©
Ú__name__Ú
__module__Ú__qualname__r   r   r%   ÚModuler$   r8   Ú__classcell__©r,   s   @r-   r   r      s*   ø„ ð +6ØØñ		Fà˜RŸY™Y™õ	För.   r   c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )ÚMixed4aNr   c                 ó  •— ||dœ}t         ‰| �  «        t        j                   |ddddœ|¤Ž |ddddœ|¤Ž«      | _        t        j                   |ddddœ|¤Ž |dddddœ|¤Ž |dddd	dœ|¤Ž |dd
ddœ|¤Ž«      | _        y )Nr   r   r   r   ©r   é   ©r   r   ©r   r   Úpadding©rD   r   ©r   r   )r   r   )é    r!   r    )r!   r!   )r#   r$   r%   Ú
SequentialÚbranch0Úbranch1r)   s        €r-   r$   zMixed4a.__init__(   s¬   ø€ ð ¨Ñ/ˆÜ‰ÑÔä—}‘}ÙÐ>¨A°aÑ>¸2Ñ>ÙÐ=¨1°QÑ=¸"Ñ=ó
ˆŒô
 —}‘}ÙÐ>¨A°aÑ>¸2Ñ>ÙÐR¨6¸!ÀVÑRÈrÑRÙÐR¨6¸!ÀVÑRÈrÑRÙÐB¨6¸!ÑB¸rÑBó	
ˆ�r.   c                 óz   — | j                  |«      }| j                  |«      }t        j                  ||fd«      }|S r0   )rL   rM   r1   r2   r3   s        r-   r8   zMixed4a.forward=   s5   € Ø�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆÜ�i‰i˜˜R˜ !Ó$ˆØˆ
r.   r9   r?   s   @r-   rA   rA   '   s(   ø„ ð +6ØØñ	
à˜RŸY™Y™õ
ö*r.   rA   c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )ÚMixed5aNr   c                 ó„   •— ||dœ}t         ‰| �  «         |ddddœ|¤Ž| _        t        j                  dd¬«      | _        y )Nr   r   r   r   r   ©éÀ   rS   )r#   r$   r(   r%   r&   r'   r)   s        €r-   r$   zMixed5a.__init__E   sB   ø€ ð ¨Ñ/ˆÜ‰ÑÔÙÐG°Q¸qÑGÀBÑGˆŒ	Ü—|‘| A¨aÔ0ˆ�r.   c                 óz   — | j                  |«      }| j                  |«      }t        j                  ||fd«      }|S r0   )r(   r'   r1   r2   r3   s        r-   r8   zMixed5a.forwardP   s5   € Ø�Y‰Y�q‹\ˆØ�\‰\˜!‹_ˆÜ�i‰i˜˜R˜ !Ó$ˆØˆ
r.   r9   r?   s   @r-   rP   rP   D   s(   ø„ ð +6ØØñ		1à˜RŸY™Y™õ	1ör.   rP   c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )Ú
InceptionANr   c                 ó�  •— ||dœ}t         ‰| �  «         |ddddœ|¤Ž| _        t        j                   |d	dddœ|¤Ž |d
ddddœ|¤Ž«      | _        t        j                   |d	dddœ|¤Ž |d
ddddœ|¤Ž |dddddœ|¤Ž«      | _        t        j                  t        j                  dddd¬«       |ddddœ|¤Ž«      | _        y )Nr   r   r   r   rF   F©r   rG   Úcount_include_pad)é€  r"   )rZ   r!   r    )r"   r"   ©	r#   r$   rL   r%   rK   rM   Úbranch2Ú	AvgPool2dÚbranch3r)   s        €r-   r$   zInceptionA.__init__X   sè   ø€ ð ¨Ñ/ˆÜ‰ÑÔÙ!ÐI°qÀÑIÀbÑIˆŒä—}‘}ÙÐ>¨A°aÑ>¸2Ñ>ÙÐH¨1°QÀÑHÀRÑHó
ˆŒô
 —}‘}ÙÐ>¨A°aÑ>¸2Ñ>ÙÐH¨1°QÀÑHÀRÑHÙÐH¨1°QÀÑHÀRÑHó
ˆŒô —}‘}Ü�L‰L˜ 1¨aÀ5ÔIÙÐ>¨A°aÑ>¸2Ñ>ó
ˆ�r.   c                 óÂ   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }t	        j
                  ||||fd«      }|S r0   ©rL   rM   r\   r^   r1   r2   ©r*   r4   r5   r6   Úx2Úx3r7   s          r-   r8   zInceptionA.forwardr   óT   € Ø�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆÜ�i‰i˜˜R  RÐ(¨!Ó,ˆØˆ
r.   r9   r?   s   @r-   rV   rV   W   s(   ø„ ð +6ØØñ	
à˜RŸY™Y™õ
ö4r.   rV   c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )Ú
ReductionANr   c           
      óô   •— ||dœ}t         ‰| �  «         |ddddœ|¤Ž| _        t        j                   |d	dddœ|¤Ž |d
ddddœ|¤Ž |ddddœ|¤Ž«      | _        t        j                  dd¬«      | _        y )Nr   r   r   r   r   rF   r   )rZ   rZ   )rZ   rS   ©rS   éà   ©ri   é   )r#   r$   rL   r%   rK   rM   r&   r\   r)   s        €r-   r$   zReductionA.__init__|   sŒ   ø€ ð ¨Ñ/ˆÜ‰ÑÔÙ!ÐJ¸À!ÑJÀrÑJˆŒä—}‘}ÙÐ?¨Q°qÑ?¸BÑ?ÙÐJ¨Q°qÀ!ÑJÀrÑJÙÐ?¨Q°qÑ?¸BÑ?ó
ˆŒô —|‘| A¨aÔ0ˆ�r.   c                 óž   — | j                  |«      }| j                  |«      }| j                  |«      }t        j                  |||fd«      }|S r0   ©rL   rM   r\   r1   r2   ©r*   r4   r5   r6   rb   r7   s         r-   r8   zReductionA.forwardŽ   óD   € Ø�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆØ�\‰\˜!‹_ˆÜ�i‰i˜˜R ˜ aÓ(ˆØˆ
r.   r9   r?   s   @r-   rf   rf   {   s(   ø„ ð +6ØØñ	1à˜RŸY™Y™õ1ö$r.   rf   c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )Ú
InceptionBNr   c                 óÒ  •— ||dœ}t         ‰| �  «         |ddddœ|¤Ž| _        t        j                   |ddddœ|¤Ž |dddddœ|¤Ž |dddddœ|¤Ž«      | _        t        j                   |ddddœ|¤Ž |dddddœ|¤Ž |dddddœ|¤Ž |dddddœ|¤Ž |dddddœ|¤Ž«      | _        t        j                  t        j                  d	ddd
¬«       |ddddœ|¤Ž«      | _        y )Nr   r   r   rC   rE   rF   rH   rI   r   FrX   )é   rZ   ©rs   rS   rh   rj   rR   )ri   ri   )rs   é€   r[   r)   s        €r-   r$   zInceptionB.__init__—   s*  ø€ ð ¨Ñ/ˆÜ‰ÑÔÙ!ÐK¸À1ÑKÈÑKˆŒä—}‘}ÙÐ@¨a¸Ñ@¸RÑ@ÙÐT¨V¸AÀvÑTÐQSÑTÙÐT¨V¸AÀvÑTÐQSÑTó
ˆŒô —}‘}ÙÐ@¨a¸Ñ@¸RÑ@ÙÐT¨V¸AÀvÑTÐQSÑTÙÐT¨V¸AÀvÑTÐQSÑTÙÐT¨V¸AÀvÑTÐQSÑTÙÐT¨V¸AÀvÑTÐQSÑTó
ˆŒô —}‘}Ü�L‰L˜ 1¨aÀ5ÔIÙÐ@¨a¸Ñ@¸RÑ@ó
ˆ�r.   c                 óÂ   — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }t	        j
                  ||||fd«      }|S r0   r`   ra   s          r-   r8   zInceptionB.forward´   rd   r.   r9   r?   s   @r-   rq   rq   –   s(   ø„ ð +6ØØñ	
à˜RŸY™Y™õ
ö:r.   rq   c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )Ú
ReductionBNr   c                 óD  •— ||dœ}t         ‰| �  «        t        j                   |ddddœ|¤Ž |ddddœ|¤Ž«      | _        t        j                   |ddddœ|¤Ž |dddddœ|¤Ž |dd	dd
dœ|¤Ž |ddddœ|¤Ž«      | _        t        j                  dd¬«      | _        y )Nr   r   r   r   r   rC   rE   rF   rH   rI   r   rt   rR   )rs   rk   )rk   rk   )rk   é@  )rz   rz   )r#   r$   r%   rK   rL   rM   r&   r\   r)   s        €r-   r$   zReductionB.__init__¾   sÂ   ø€ ð ¨Ñ/ˆÜ‰ÑÔä—}‘}ÙÐ@¨a¸Ñ@¸RÑ@ÙÐ?¨Q°qÑ?¸BÑ?ó
ˆŒô
 —}‘}ÙÐ@¨a¸Ñ@¸RÑ@ÙÐT¨V¸AÀvÑTÐQSÑTÙÐT¨V¸AÀvÑTÐQSÑTÙÐ?¨Q°qÑ?¸BÑ?ó	
ˆŒô —|‘| A¨aÔ0ˆ�r.   c                 óž   — | j                  |«      }| j                  |«      }| j                  |«      }t        j                  |||fd«      }|S r0   rm   rn   s         r-   r8   zReductionB.forwardÕ   ro   r.   r9   r?   s   @r-   rx   rx   ½   s(   ø„ ð +6ØØñ	1à˜RŸY™Y™õ1ö.r.   rx   c                   óL   ‡ — e Zd Zeddfdeej                     fˆ fd„Zd„ Zˆ xZ	S )Ú
InceptionCNr   c           	      óÎ  •— ||dœ}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œ|¤Ž| _
        t        j                  t        j                  d	ddd
¬«       |ddddœ|¤Ž«      | _        y )Nr   r   r   )r   r   )r   r   rF   )r   r   )r   r   r   FrX   )é   rk   )r   rZ   )rZ   rk   )rZ   éÀ  )r€   é   )r�   rk   )r#   r$   rL   Ú	branch1_0Ú
branch1_1aÚ
branch1_1bÚ	branch2_0Ú	branch2_1Ú	branch2_2Ú
branch2_3aÚ
branch2_3br%   rK   r]   r^   r)   s        €r-   r$   zInceptionC.__init__Þ   s,  ø€ ð ¨Ñ/ˆÜ‰ÑÔá!ÐK¸À1ÑKÈÑKˆŒá#ÐM¸1ÀQÑMÈ"ÑMˆŒÙ$Ðb¸6È!ÐU[ÑbÐ_aÑbˆŒÙ$Ðb¸6È!ÐU[ÑbÐ_aÑbˆŒá#ÐM¸1ÀQÑMÈ"ÑMˆŒÙ#Ða¸&ÈÐTZÑaÐ^`ÑaˆŒÙ#Ða¸&ÈÐTZÑaÐ^`ÑaˆŒÙ$Ðb¸6È!ÐU[ÑbÐ_aÑbˆŒÙ$Ðb¸6È!ÐU[ÑbÐ_aÑbˆŒä—}‘}Ü�L‰L˜ 1¨aÀ5ÔIÙÐ@¨a¸Ñ@¸RÑ@ó
ˆ�r.   c                 óî  — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }t	        j
                  ||fd«      }| j                  |«      }| j                  |«      }| j                  |«      }	| j                  |	«      }
| j                  |	«      }t	        j
                  |
|fd«      }| j                  |«      }t	        j
                  ||||fd«      }|S r0   )rL   r‚   rƒ   r„   r1   r2   r…   r†   r‡   rˆ   r‰   r^   )r*   r4   r5   Úx1_0Úx1_1aÚx1_1br6   Úx2_0Úx2_1Úx2_2Úx2_3aÚx2_3brb   rc   r7   s                  r-   r8   zInceptionC.forwardø   sÒ   € Ø�\‰\˜!‹_ˆà�~‰~˜aÓ ˆØ—‘ Ó%ˆØ—‘ Ó%ˆÜ�Y‰Y˜˜u�~ qÓ)ˆà�~‰~˜aÓ ˆØ�~‰~˜dÓ#ˆØ�~‰~˜dÓ#ˆØ—‘ Ó%ˆØ—‘ Ó%ˆÜ�Y‰Y˜˜u�~ qÓ)ˆà�\‰\˜!‹_ˆä�i‰i˜˜R  RÐ(¨!Ó,ˆØˆ
r.   r9   r?   s   @r-   r}   r}   Ý   s(   ø„ ð +6ØØñ	
à˜RŸY™Y™õ
ö4r.   r}   c                   ó.  ‡ — e Zd Z	 	 	 	 	 	 	 	 	 	 ddededededededed	ed
d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"dej                   deeeee   f      dedededed
eeej                      eej                   eej                      f   f   fd„Z	 	 	 d#deeee   f   dedefd„Zd„ Zddefd„Zd„ Zˆ xZS )$r   NÚnum_classesÚin_chansÚoutput_strideÚ	drop_rateÚglobal_poolÚ
norm_layerÚnorm_epsÚ	act_layerÚreturnc           
      óº  •— |	|
dœ}t         ‰| �  «        |dk(  sJ ‚|| _        || _        dx| _        | _        t        t        d||t        |¬«      t        d¬«      ¬«      } ||dfd	d
dœ|¤Ž |dd	ddœ|¤Ž |dd	dddœ|¤Žt        |fi |¤Žt        |fi |¤Žt        |fi |¤Žg}|t        d«      D �cg c]  }t        |fi |¤Ž‘Œ c}z  }|t        |fi |¤Žgz  }|t        d«      D �cg c]  }t        |fi |¤Ž‘Œ c}z  }|t!        |fi |¤Žgz  }|t        d	«      D �cg c]  }t#        |fi |¤Ž‘Œ c}z  }t%        j&                  |Ž | _        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 c c}w c c}w c c}w )Nr   é    r   r   )ÚepsT)Úinplace)rG   r™   r›   Únorm_kwargsÚ
act_kwargsr   r   r   r   r!   rF   é   rD   z
features.2)Únum_chsÚ	reductionÚmodulerJ   z
features.3rZ   é   z
features.9rs   é   zfeatures.17zfeatures.21)Ú	pool_typer—   )rž   rž   )rž   r!   )r#   r$   r”   r•   Únum_featuresÚhead_hidden_sizer   r   Údictr   rA   rP   ÚrangerV   rf   rq   rx   r}   r%   rK   ÚfeaturesÚfeature_infor   r˜   Ú	head_dropÚlast_linear)r*   r”   r•   r–   r—   r˜   r™   rš   r›   r   r   r+   r   r®   Ú_r,   s                  €r-   r$   zInceptionV4.__init__  s  ø€ ð ¨Ñ/ˆÜ‰ÑÔØ Ò"Ð"Ð"Ø&ˆÔØ ˆŒØ48Ð8ˆÔ˜DÔ1ÜÜØØ!ØÜ Ô*Ü DÔ)ô
ˆ
ñ �x ÐC°¸1ÑCÀÑCÙÐ=¨1°QÑ=¸"Ñ=ÙÐH¨1°QÀÑHÀRÑHÜ�JÑ% "Ñ%Ü�JÑ% "Ñ%Ü�JÑ% "Ñ%ð
ˆð 	¼5À»8ÖD°a”Z 
Ñ1¨bÓ1ÒDÑDˆØ”Z 
Ñ1¨bÑ1Ð2Ñ2ˆØ¼5À»8ÖD°a”Z 
Ñ1¨bÓ1ÒDÑDˆØ”Z 
Ñ1¨bÑ1Ð2Ñ2ˆØ¼5À»8ÖD°a”Z 
Ñ1¨bÓ1ÒDÑDˆÜŸ™ xÐ0ˆŒä˜ q°Ô>Ü˜¨°,Ô?Ü˜¨°,Ô?Ü˜¨°MÔBÜ˜¨°MÔBð
ˆÔô >OØ×ÑØ×Ñð>
ð "Øñ	>
ð
 ñ>
Ñ:ˆÔ˜$œ.¨$Õ*:ùò EùâDùâDs   Â3GÃ)GÄGc                 ó   — t        dd¬«      S )Nz^features\.[012]\.z^features\.(\d+))ÚstemÚblocks)r¬   )r*   Úcoarses     r-   Úgroup_matcherzInceptionV4.group_matcherG  s   € äØ&Ø&ô
ð 	
r.   c                 ó   — |rJ d«       ‚y )Nz$gradient checkpointing not supported© )r*   Úenables     r-   Úset_grad_checkpointingz"InceptionV4.set_grad_checkpointingN  s   € áÐAÐAÓAˆz�6r.   c                 ó   — | j                   S ©N)r±   )r*   s    r-   Úget_classifierzInceptionV4.get_classifierR  s   € à×ÑÐr.   c                 óp   — || _         t        | j                  | j                   |¬«      \  | _        | _        y )N)r©   )r”   r   rª   r˜   r±   )r*   r”   r˜   s      r-   Úreset_classifierzInceptionV4.reset_classifierV  s3   € Ø&ˆÔÜ->Ø×Ñ˜t×/Ñ/¸;ô.HÑ*ˆÔ˜$Õ*r.   r4   ÚindicesÚnormÚ
stop_earlyÚ
output_fmtÚintermediates_onlyc                 óì  — |dv sJ d«       ‚g }| j                   D �cg c]"  }t        |d   j                  d«      d   «      ‘Œ$ }	}t        t	        |	«      |«      \  }
}|
D �cg c]  }|	|   ‘Œ	 }
}|	|   }t
        j                  j                  «       s|s| j                  }n| j                  d|dz    }t        |«      D ]#  \  }} ||«      }||
v sŒ|j                  |«       Œ% |r|S ||fS c c}w c c}w )aï   Forward features that returns intermediates.

        Args:
            x: Input image tensor
            indices: Take last n blocks if int, all if None, select matching indices if sequence
            norm: Apply norm layer to compatible intermediates
            stop_early: Stop iterating over blocks when last desired intermediate hit
            output_fmt: Shape of intermediate feature outputs
            intermediates_only: Only return intermediate features
        Returns:

        )ÚNCHWzOutput shape must be NCHW.r¦   ú.éÿÿÿÿNr   )r¯   ÚintÚsplitr   Úlenr1   ÚjitÚis_scriptingr®   Ú	enumerateÚappend)r*   r4   rÁ   rÂ   rÃ   rÄ   rÅ   ÚintermediatesÚinfoÚ
stage_endsÚtake_indicesÚ	max_indexÚiÚstagesÚfeat_idxÚstages                   r-   Úforward_intermediatesz!InceptionV4.forward_intermediates[  s  € ð* ˜YÑ&ÐDÐ(DÓDÐ&ØˆØEI×EVÑEVÖW¸T”c˜$˜x™.×.Ñ.¨sÓ3°BÑ7Õ8ÐWˆ
ÐWÜ"6´s¸:³ÈÓ"PÑˆ�iØ/;Ö<¨!˜
 1›Ð<ˆÐ<Ø˜yÑ)ˆ	ô �9‰9×!Ñ!Ô#©:Ø—]‘]‰Fà—]‘] > I°¡MÐ2ˆFä(¨Ó0ò 	(‰OˆH�eÙ�a“ˆAØ˜<Ò'Ø×$Ñ$ QÕ'ð	(ñ
 Ø Ð à�-ÐÐùò' Xùâ<s   œ'C,Á!C1Ú
prune_normÚ
prune_headc                 ó  — | j                   D �cg c]"  }t        |d   j                  d«      d   «      ‘Œ$ }}t        t	        |«      |«      \  }}||   }| j
                  d|dz    | _        |r| j                  dd«       |S c c}w )z@ Prune layers not required for specified intermediates.
        r¦   rÈ   rÉ   Nr   r   Ú )r¯   rÊ   rË   r   rÌ   r®   rÀ   )r*   rÁ   rÛ   rÜ   rÒ   rÓ   rÔ   rÕ   s           r-   Úprune_intermediate_layersz%InceptionV4.prune_intermediate_layers‡  sŒ   € ð FJ×EVÑEVÖW¸T”c˜$˜x™.×.Ñ.¨sÓ3°BÑ7Õ8ÐWˆ
ÐWÜ"6´s¸:³ÈÓ"PÑˆ�iØ˜yÑ)ˆ	ØŸ™ n y°1¡}Ð5ˆŒÙØ×!Ñ! ! RÔ(ØÐùò Xs   �'Bc                 ó$   — | j                  |«      S r½   )r®   ©r*   r4   s     r-   Úforward_featureszInceptionV4.forward_features—  s   € Ø�}‰}˜QÓÐr.   Ú
pre_logitsc                 óp   — | j                  |«      }| j                  |«      }|r|S | j                  |«      S r½   )r˜   r°   r±   )r*   r4   rã   s      r-   Úforward_headzInceptionV4.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-   r8   zInceptionV4.forwardŸ  s'   € Ø×!Ñ! !Ó$ˆØ×Ñ˜aÓ ˆØˆr.   )
éè  r   rž   g        ÚavgÚbatchnorm2dgü©ñÒMbP?ÚreluNN©F)T)rè   )NFFrÇ   F)r   FT)r:   r;   r<   rÊ   ÚfloatÚstrr$   r1   rÍ   Úignorer·   r»   r%   r=   r¾   rÀ   ÚTensorr   r   r   Úboolr   rÚ   rß   râ   rå   r8   r>   r?   s   @r-   r   r     sè  ø„ ð  $ØØ!#Ø!Ø$Ø+Ø"Ø#ØØñ7
àð7
ð ð7
ð ð	7
ð
 ð7
ð ð7
ð ð7
ð ð7
ð ð7
ð 
õ7
ðr ‡Y�Y×Ñò
ó ð
ð ‡Y�Y×ÑòBó ðBð ‡Y�Y×Ñð  §	¡	ò  ó ð ñH¨Cð H¸có Hð 8<ØØ$Ø$Ø',ñ* à�|‰|ð* ð ˜e C¨¨c© NÑ3Ñ4ð* ð ð	* ð
 ð* ð ð* ð !%ð* ð 
ˆt�E—L‘LÑ! 5¨¯©°t¸E¿L¹LÑ7IÐ)IÑ#JÐJÑ	Kó* ð\ ./Ø$Ø#ñ	à˜3  S¡	˜>Ñ*ðð ðð ó	ò  ñ8¨$ó 8ö
r.   rœ   c                 ó>   — t        t        | |fdt        d¬«      i|¤ŽS )NÚfeature_cfgT)Úflatten_sequential)r   r   r¬   )ÚvariantÚ
pretrainedÚkwargss      r-   Ú_create_inception_v4r÷   ¥  s1   € ÜÜØØñô ¨DÔ1ð	ð
 ñð r.   zinception_v4.tf_in1kztimm/rç   )r   é+  rø   )r§   r§   g      ì?Úbicubiczfeatures.0.convr±   z
apache-2.0)Ú	hf_hub_idr”   Ú
input_sizeÚ	pool_sizeÚcrop_pctÚinterpolationÚmeanÚstdÚ
first_convÚ
classifierÚlicensec                 ó   — t        d| fi |¤ŽS )NÚinception_v4)r÷   )rõ   rö   s     r-   r  r  »  s   € ä °
ÑE¸fÑEÐEr.   rë   )'Ú__doc__Ú	functoolsr   Útypingr   r   r   r   r   r1   Útorch.nnr%   Ú	timm.datar	   r
   Útimm.layersr   r   Ú_builderr   Ú	_featuresr   Ú	_registryr   r   Ú__all__r=   r   rA   rP   rV   rf   rq   rx   r}   r   r÷   Údefault_cfgsr  r¹   r.   r-   ú<module>r     s   ðñõ ß 5Õ 5ã Ý ç Eß 6Ý *Ý +ß <àˆ/€ôˆb�i‰iô ô&ˆb�i‰iô ô:ˆb�i‰iô ô&!�—‘ô !ôH�—‘ô ô6$�—‘ô $ôN�—‘ô ô@-�—‘ô -ô`U�"—)‘)ô UñpÀó ñ %ØØØ¨=ÀvØ¨IØ'Ð0FØ'°}Øñð	&ó 	€ð òFó ñFr.   