
    h1                        S SK r S SKJr  S SKJr  S SKJrJrJr  S SK	r	S SK
Jr  S SKJs  Jr  S SK	Jr  SSKJr  SSKJr  S	S
KJrJrJr  S	SKJr  S	SKJrJr  / SQr\" S/ SQ5      r\\\   \\   S.\l        \r  " S S\RB                  5      r" " S S\RB                  5      r# " S S\RB                  5      r$ " S S\RB                  5      r% " S S\5      r&\" 5       \" S\&RN                  4S9SSS.S\\&   S\(S \S!\"4S" jj5       5       r)g)#    N)
namedtuple)partial)AnyCallableOptional)Tensor   )ImageClassification)_log_api_usage_once   )register_modelWeightsWeightsEnum)_IMAGENET_CATEGORIES)_ovewrite_named_paramhandle_legacy_interface)	GoogLeNetGoogLeNetOutputs_GoogLeNetOutputsGoogLeNet_Weights	googlenetr   )logitsaux_logits2aux_logits1c                   6  ^  \ rS rSrSS/r       SS\S\S\S\\   S\\\	S\
R                  4         S	\S
\SS4U 4S jjjrS\S\4S jrS\S\\\\   \\   4   4S jr\R&                  R(                  S\S\S\\   S\4S j5       rS\S\4S jrSrU =r$ )r      
aux_logitstransform_inputNnum_classesinit_weightsblocks.dropoutdropout_auxreturnc           	        > [         TU ]  5         [        U 5        Uc  [        [        [
        /nUc  [        R                  " S[        5        Sn[        U5      S:w  a  [        S[        U5       35      eUS   nUS   n	US   n
X l        X0l        U" SSS	SSS
9U l        [        R                  " SSSS9U l        U" SSSS9U l        U" SSSSS9U l        [        R                  " SSSS9U l        U	" SSSSSSS5      U l        U	" SSSSSSS5      U l        [        R                  " SSSS9U l        U	" SSSSSSS5      U l        U	" SSSSSSS5      U l        U	" SSSSSSS5      U l        U	" SSSSSSS5      U l        U	" SSSSSSS5      U l        [        R                  " SSSS9U l        U	" S SSSSSS5      U l        U	" S S!SS!SSS5      U l        U(       a  U
" SXS"9U l        U
" SXS"9U l         OS U l        S U l         [        RB                  " S#5      U l"        [        RF                  " US$9U l$        [        RJ                  " S%U5      U l&        U(       Ga  U RO                  5        H  n[Q        U[        RR                  5      (       d  [Q        U[        RJ                  5      (       a7  [T        R                  RV                  RY                  URZ                  S&S'S(SS)9  Mx  [Q        U[        R\                  5      (       d  M  [        RV                  R_                  URZ                  S5        [        RV                  R_                  UR`                  S5        M     g g )*NzThe default weight initialization of GoogleNet will be changed in future releases of torchvision. If you wish to keep the old behavior (which leads to long initialization times due to scipy/scipy#11299), please set init_weights=True.T   z%blocks length should be 3 instead of r   r   r	   @      )kernel_sizestridepadding)r*   	ceil_moder)      r)   r+   `                i     0   i      p            i   i  i@  i@  i  )r"   )r   r   p   g        g{Gz?)meanstdab)1super__init__r   BasicConv2d	InceptionInceptionAuxwarningswarnFutureWarninglen
ValueErrorr   r   conv1nn	MaxPool2dmaxpool1conv2conv3maxpool2inception3ainception3bmaxpool3inception4ainception4binception4cinception4dinception4emaxpool4inception5ainception5baux1aux2AdaptiveAvgPool2davgpoolDropoutr"   Linearfcmodules
isinstanceConv2dtorchinittrunc_normal_weightBatchNorm2d	constant_bias)selfr   r   r   r    r!   r"   r#   
conv_blockinception_blockinception_aux_blockm	__class__s               T/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/models/googlenet.pyrE   GoogLeNet.__init__    s     	D!>!9l;FMML 	  Lv;!DS[MRSSAY
 )$Qi$.21QJ
QqDABA6
CQB
QqDA*3BRRH*3S#r2rJQqDA*3Rb"bI*3S#r2rJ*3S#r2rJ*3S#r2rJ*3S#r3LQqDA*3S#r3L*3S#r3L+CRDI+CRDIDIDI++F3zzG,))D+.\\^a++z!RYY/G/GHHMM//sPRVW/X2>>22GG%%ahh2GG%%affa0 $     xc                 2   U R                   (       a  [        R                  " US S 2S4   S5      S-  S-   n[        R                  " US S 2S4   S5      S-  S-   n[        R                  " US S 2S4   S5      S-  S	-   n[        R                  " X#U4S5      nU$ )
Nr   r   gZd;O?gQgy&1?gI+r	   g?gMbȿ)r   rj   	unsqueezecat)rq   rz   x_ch0x_ch1x_ch2s        rw   _transform_inputGoogLeNet._transform_inputf   s    OOAadGQ/;?BUUEOOAadGQ/;?BUUEOOAadGQ/;?BUUE		5/3Ary   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 R                  U5      nU R                  U5      nU R                  U5      nS nU R                  b"  U R                  (       a  U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nS nU R                  b"  U R                  (       a  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[(        R*                  " US5      nU R-                  U5      nU R/                  U5      nXU4$ Nr   )rN   rQ   rR   rS   rT   rU   rV   rW   rX   r`   trainingrY   rZ   r[   ra   r\   r]   r^   r_   rc   rj   flattenr"   rf   )rq   rz   r`   ra   s       rw   _forwardGoogLeNet._forwardn   s|   JJqMMM!JJqMJJqMMM! QQMM!Q!%99 }}yy|QQQ!%99 }}yy|QMM!QQ LLOMM!QLLOGGAJ}ry   ra   r`   c                 b    U R                   (       a  U R                  (       a  [        XU5      $ U$ N)r   r   r   )rq   rz   ra   r`   s       rw   eager_outputsGoogLeNet.eager_outputs   s!    ==T__$Qd33Hry   c                 F   U R                  U5      nU R                  U5      u  pnU R                  =(       a    U R                  n[        R
                  R                  5       (       a)  U(       d  [        R                  " S5        [        XU5      $ U R                  XU5      $ )Nz8Scripted GoogleNet always returns GoogleNetOutputs Tuple)r   r   r   r   rj   jitis_scriptingrI   rJ   r   r   )rq   rz   ra   r`   aux_defineds        rw   forwardGoogLeNet.forward   sy    !!!$a(mm799!!##XY#AT22%%at44ry   )r`   ra   r   rc   rN   rR   rS   r"   rf   rU   rV   rX   rY   rZ   r[   r\   r^   r_   rQ   rT   rW   r]   r   )i  TFNNg?ffffff?)__name__
__module____qualname____firstlineno____constants__intboolr   listr   rO   ModulefloatrE   r   r   tupler   rj   r   unusedr   r   r   __static_attributes____classcell__rv   s   @rw   r   r      s9   !#45M   %'+;? D1D1 D1 	D1
 tnD1 hsBII~678D1 D1 D1 
D1 D1L& V 5& 5U68F3CXfEU+U%V 5n YYv V 8F;K P`  	5 	5$4 	5 	5ry   r   c                      ^  \ rS rSr SS\S\S\S\S\S\S	\S
\\S\R                  4      SS4U 4S jjjr	S\
S\\
   4S jrS\
S\
4S jrSrU =r$ )rG      Nin_channelsch1x1ch3x3redch3x3ch5x5redch5x5	pool_projrr   .r$   c	           
      T  > [         T	U ]  5         Uc  [        nU" XSS9U l        [        R
                  " U" XSS9U" X4SSS95      U l        [        R
                  " U" XSS9U" XVSSS95      U l        [        R
                  " [        R                  " SSSSS9U" XSS95      U l	        g )Nr   r-   r&   r/   T)r)   r*   r+   r,   )
rD   rE   rF   branch1rO   
Sequentialbranch2branch3rP   branch4)
rq   r   r   r   r   r   r   r   rr   rv   s
            rw   rE   Inception.__init__   s     	$J!+!D}}{!<jfgqr>s
 }}{!< xAqA	
 }}LLQq!tL{1=
ry   rz   c                     U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nX#XE/nU$ r   r   r   r   r   )rq   rz   r   r   r   r   outputss          rw   r   Inception._forward   sE    ,,q/,,q/,,q/,,q/W6ry   c                 R    U R                  U5      n[        R                  " US5      $ r   )r   rj   r}   )rq   rz   r   s      rw   r   Inception.forward   s!    --"yy!$$ry   r   r   )r   r   r   r   r   r   r   rO   r   rE   r   r   r   r   r   r   r   s   @rw   rG   rG      s     :>

 
 	

 
 
 
 
 Xc299n56
 

 
@& T&\ % %F % %ry   rG   c                   ~   ^  \ rS rSr  SS\S\S\\S\R                  4      S\	SS4
U 4S	 jjjr
S
\S\4S jrSrU =r$ )rH      Nr   r   rr   .r"   r$   c                    > [         TU ]  5         Uc  [        nU" USSS9U l        [        R
                  " SS5      U l        [        R
                  " SU5      U l        [        R                  " US9U l	        g )Nr1   r   r-   i   r>   r<   )
rD   rE   rF   convrO   re   fc1fc2rd   r"   )rq   r   r   rr   r"   rv   s        rw   rE   InceptionAux.__init__   s_     	$J{CQ?	99T4(99T;/zzG,ry   rz   c                    [         R                  " US5      nU R                  U5      n[        R                  " US5      n[         R
                  " U R                  U5      SS9nU R                  U5      nU R                  U5      nU$ )N)   r   r   Tinplace)	Fadaptive_avg_pool2dr   rj   r   relur   r"   r   rq   rz   s     rw   r   InceptionAux.forward   sj    !!!V,IIaLMM!QFF488A;-LLOHHQK ry   )r   r"   r   r   )Nr   )r   r   r   r   r   r   r   rO   r   r   rE   r   r   r   r   r   s   @rw   rH   rH      so    
 :>-- - Xc299n56	-
 - 
- -  F  ry   rH   c                   N   ^  \ rS rSrS\S\S\SS4U 4S jjrS\S\4S	 jrS
r	U =r
$ )rF   i
  r   out_channelskwargsr$   Nc                    > [         TU ]  5         [        R                  " X4SS0UD6U l        [        R
                  " USS9U l        g )Nrp   FgMbP?)eps)rD   rE   rO   ri   r   rn   bn)rq   r   r   r   rv   s       rw   rE   BasicConv2d.__init__  s:    IIkNeNvN	..59ry   rz   c                 p    U R                  U5      nU R                  U5      n[        R                  " USS9$ )NTr   )r   r   r   r   r   s     rw   r   BasicConv2d.forward  s-    IIaLGGAJvva&&ry   )r   r   )r   r   r   r   r   r   rE   r   r   r   r   r   s   @rw   rF   rF   
  s<    :C :s :c :d :
' 'F ' 'ry   rF   c                   N    \ rS rSr\" S\" \SS9SS\SSS	S
S.0SSSS.S9r\r	Sr
g)r   i  z:https://download.pytorch.org/models/googlenet-1378be20.pthr9   )	crop_sizeie )   r   zOhttps://github.com/pytorch/vision/tree/main/references/classification#googlenetzImageNet-1KgoqQ@gRaV@)zacc@1zacc@5g+?g!rhH@z1These weights are ported from the original paper.)
num_paramsmin_size
categoriesrecipe_metrics_ops
_file_size_docs)url
transformsmeta N)r   r   r   r   r   r   r
   r   IMAGENET1K_V1DEFAULTr   r   ry   rw   r   r     sP    H.#>! .g##   L
M& Gry   r   
pretrained)weightsT)r   progressr   r   r   r$   c                    [         R                  U 5      n UR                  SS5      nU bP  SU;  a  [        USS5        [        USS5        [        USS5        [        US[	        U R
                  S   5      5        [        S0 UD6nU bS  UR                  U R                  USS	95        U(       d  SUl	        SUl
        SUl        U$ [        R                  " S
5        U$ )aM  GoogLeNet (Inception v1) model architecture from
`Going Deeper with Convolutions <http://arxiv.org/abs/1409.4842>`_.

Args:
    weights (:class:`~torchvision.models.GoogLeNet_Weights`, optional): The
        pretrained weights for the model. See
        :class:`~torchvision.models.GoogLeNet_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.GoogLeNet``
        base class. Please refer to the `source code
        <https://github.com/pytorch/vision/blob/main/torchvision/models/googlenet.py>`_
        for more details about this class.
.. autoclass:: torchvision.models.GoogLeNet_Weights
    :members:
r   FNr   Tr    r   r   )r   
check_hashz`auxiliary heads in the pretrained googlenet model are NOT pretrained, so make sure to train themr   )r   verifygetr   rL   r   r   load_state_dictget_state_dictr   r`   ra   rI   rJ   )r   r   r   original_aux_logitsmodels        rw   r   r   -  s    *  &&w/G **\59F*!&*;TBflD9fne<fmSl9S5TUEg44hSW4XY"$EEJEJ L	 MMr Lry   )*rI   collectionsr   	functoolsr   typingr   r   r   rj   torch.nnrO   torch.nn.functional
functionalr   r   transforms._presetsr
   utilsr   _apir   r   r   _metar   _utilsr   r   __all__r   __annotations__r   r   r   rG   rH   rF   r   r   r   r   r   ry   rw   <module>r      s    "  * *      5 ' 6 6 ' B c 02Z[ .4XfEUfnoufv#w    % X5		 X5v,%		 ,%^ 299  F	'")) 	' . ,0A0O0O!PQ8<t *(#45 * *_b *gp * R *ry   