§
    ù²Åj#  ã                   óL  — d dl mZ d dlmZmZ d dlZd dlmZ d dlmc m	Z	 ddl
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 g d¢Z G d„ dej        ¦  «        Z G d„ dej        ¦  «        Zdedee         dededef
d„ZedddœZ G d„ de¦  «        Z G d„ de¦  «        Z  e¦   «          edej!        f¬¦  «        ddd œdee         dededefd!„¦   «         ¦   «         Z" e¦   «          ede j!        f¬¦  «        ddd œdee          dededefd"„¦   «         ¦   «         Z#dS )#é    )Úpartial)ÚAnyÚOptionalNé   )ÚImageClassification)Ú_log_api_usage_onceé   )Úregister_modelÚWeightsÚWeightsEnum)Ú_IMAGENET_CATEGORIES)Ú_ovewrite_named_paramÚhandle_legacy_interface)Ú
SqueezeNetÚSqueezeNet1_0_WeightsÚSqueezeNet1_1_WeightsÚsqueezenet1_0Úsqueezenet1_1c            
       óX   ‡ — e Zd Zdededededdf
ˆ fd„Zdej        dej        fd	„Zˆ xZS )
ÚFireÚinplanesÚsqueeze_planesÚexpand1x1_planesÚexpand3x3_planesÚreturnNc                 óœ  •— t          ¦   «                              ¦   «          || _        t          j        ||d¬¦  «        | _        t          j        d¬¦  «        | _        t          j        ||d¬¦  «        | _        t          j        d¬¦  «        | _	        t          j        ||dd¬¦  «        | _
        t          j        d¬¦  «        | _        d S )Nr	   ©Úkernel_sizeT©Úinplaceé   )r   Úpadding)ÚsuperÚ__init__r   ÚnnÚConv2dÚsqueezeÚReLUÚsqueeze_activationÚ	expand1x1Úexpand1x1_activationÚ	expand3x3Úexpand3x3_activation)Úselfr   r   r   r   Ú	__class__s        €úNC:\Projects\Historical\venv\Lib\site-packages\torchvision/models/squeezenet.pyr$   zFire.__init__   s´   ø€ Ý‰Œ×ÒÑÔÐØ ˆŒÝ”y ¨>ÀqÐIÑIÔIˆŒÝ"$¤'°$Ð"7Ñ"7Ô"7ˆÔÝœ >Ð3CÐQRÐSÑSÔSˆŒÝ$&¤G°DÐ$9Ñ$9Ô$9ˆÔ!Ýœ >Ð3CÐQRÐ\]Ð^Ñ^Ô^ˆŒÝ$&¤G°DÐ$9Ñ$9Ô$9ˆÔ!Ð!Ð!ó    Úxc                 ó  — |                       |                      |¦  «        ¦  «        }t          j        |                      |                      |¦  «        ¦  «        |                      |                      |¦  «        ¦  «        gd¦  «        S ©Nr	   )r)   r'   ÚtorchÚcatr+   r*   r-   r,   ©r.   r2   s     r0   ÚforwardzFire.forward   sv   € Ø×#Ò# D§L¢L°¡O¤OÑ4Ô4ˆÝŒyØ×&Ò& t§~¢~°aÑ'8Ô'8Ñ9Ô9¸4×;TÒ;TÐUY×UcÒUcÐdeÑUfÔUfÑ;gÔ;gÐhÐjkñ
ô 
ð 	
r1   )	Ú__name__Ú
__module__Ú__qualname__Úintr$   r5   ÚTensorr8   Ú__classcell__©r/   s   @r0   r   r      sˆ   ø€ € € € € ð: ð :°cð :ÈSð :Ðdgð :Ðlpð :ð :ð :ð :ð :ð :ð
˜œð 
¨%¬,ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r1   r   c            	       óV   ‡ — e Zd Zddedededdfˆ fd	„Zd
ej        dej        fd„Z	ˆ xZ
S )r   Ú1_0éè  ç      à?ÚversionÚnum_classesÚdropoutr   Nc                 óè  •— t          ¦   «                              ¦   «          t          | ¦  «         || _        |dk    �rt	          j        t	          j        dddd¬¦  «        t	          j        d¬¦  «        t	          j        ddd¬	¦  «        t          dd
dd¦  «        t          dd
dd¦  «        t          dddd¦  «        t	          j        ddd¬	¦  «        t          dddd¦  «        t          dddd¦  «        t          dddd¦  «        t          dddd¦  «        t	          j        ddd¬	¦  «        t          dddd¦  «        ¦  «        | _
        �n(|dk    �rt	          j        t	          j        dddd¬¦  «        t	          j        d¬¦  «        t	          j        ddd¬	¦  «        t          dd
dd¦  «        t          dd
dd¦  «        t	          j        ddd¬	¦  «        t          dddd¦  «        t          dddd¦  «        t	          j        ddd¬	¦  «        t          dddd¦  «        t          dddd¦  «        t          dddd¦  «        t          dddd¦  «        ¦  «        | _
        nt          d|› d�¦  «        ‚t	          j        d| j        d¬¦  «        }t	          j        t	          j        |¬¦  «        |t	          j        d¬¦  «        t	          j        d¦  «        ¦  «        | _        |                      ¦   «         D ]w}t!          |t          j        ¦  «        r[||u rt#          j        |j        dd¬¦  «         nt#          j        |j        ¦  «         |j        �t#          j        |j        d¦  «         Œxd S )NrA   r!   é`   é   r   )r   ÚstrideTr   )r   rJ   Ú	ceil_modeé   é@   é€   é    é   é0   éÀ   i€  i   Ú1_1zUnsupported SqueezeNet version z: 1_0 or 1_1 expectedr	   r   )Úp)r	   r	   g        g{®Gáz„?)ÚmeanÚstdr   )r#   r$   r   rE   r%   Ú
Sequentialr&   r(   Ú	MaxPool2dr   ÚfeaturesÚ
ValueErrorÚDropoutÚAdaptiveAvgPool2dÚ
classifierÚmodulesÚ
isinstanceÚinitÚnormal_ÚweightÚkaiming_uniform_ÚbiasÚ	constant_)r.   rD   rE   rF   Ú
final_convÚmr/   s         €r0   r$   zSqueezeNet.__init__%   sJ  ø€ Ý‰Œ×ÒÑÔÐÝ˜DÑ!Ô!Ð!Ø&ˆÔØ�eÒÑÝœMÝ”	˜!˜R¨Q°qÐ9Ñ9Ô9Ý” Ð%Ñ%Ô%Ý”¨°1ÀÐEÑEÔEÝ�R˜˜R Ñ$Ô$Ý�S˜"˜b "Ñ%Ô%Ý�S˜"˜c 3Ñ'Ô'Ý”¨°1ÀÐEÑEÔEÝ�S˜"˜c 3Ñ'Ô'Ý�S˜"˜c 3Ñ'Ô'Ý�S˜"˜c 3Ñ'Ô'Ý�S˜"˜c 3Ñ'Ô'Ý”¨°1ÀÐEÑEÔEÝ�S˜"˜c 3Ñ'Ô'ñô ˆDŒM‰Mð ˜ÒÑÝœMÝ”	˜!˜R¨Q°qÐ9Ñ9Ô9Ý” Ð%Ñ%Ô%Ý”¨°1ÀÐEÑEÔEÝ�R˜˜R Ñ$Ô$Ý�S˜"˜b "Ñ%Ô%Ý”¨°1ÀÐEÑEÔEÝ�S˜"˜c 3Ñ'Ô'Ý�S˜"˜c 3Ñ'Ô'Ý”¨°1ÀÐEÑEÔEÝ�S˜"˜c 3Ñ'Ô'Ý�S˜"˜c 3Ñ'Ô'Ý�S˜"˜c 3Ñ'Ô'Ý�S˜"˜c 3Ñ'Ô'ñô ˆDŒMˆMõ& Ð]¸wÐ]Ð]Ð]Ñ^Ô^Ð^õ ”Y˜s DÔ$4À!ÐDÑDÔDˆ
Ýœ-ÝŒJ˜Ð!Ñ!Ô! :­r¬w¸tÐ/DÑ/DÔ/DÅbÔFZÐ[aÑFbÔFbñ
ô 
ˆŒð —’‘”ð 	.ð 	.ˆAÝ˜!�RœYÑ'Ô'ð .Ø˜
�?�?Ý”L ¤°¸Ð>Ñ>Ô>Ð>Ð>åÔ)¨!¬(Ñ3Ô3Ð3Ø”6Ð%Ý”N 1¤6¨1Ñ-Ô-Ð-øð	.ð 	.r1   r2   c                 ó€   — |                       |¦  «        }|                      |¦  «        }t          j        |d¦  «        S r4   )rY   r]   r5   Úflattenr7   s     r0   r8   zSqueezeNet.forward^   s6   € Ø�MŠM˜!ÑÔˆØ�OŠO˜AÑÔˆÝŒ}˜Q Ñ"Ô"Ð"r1   )rA   rB   rC   )r9   r:   r;   Ústrr<   Úfloatr$   r5   r=   r8   r>   r?   s   @r0   r   r   $   s†   ø€ € € € € ð7.ð 7. ð 7.¸#ð 7.Èuð 7.Ð_cð 7.ð 7.ð 7.ð 7.ð 7.ð 7.ðr#˜œð #¨%¬,ð #ð #ð #ð #ð #ð #ð #ð #r1   r   rD   ÚweightsÚprogressÚkwargsr   c                 óÎ   — |�)t          |dt          |j        d         ¦  «        ¦  «         t          | fi |¤Ž}|�*|                     |                     |d¬¦  «        ¦  «         |S )NrE   Ú
categoriesT)rm   Ú
check_hash)r   ÚlenÚmetar   Úload_state_dictÚget_state_dict)rD   rl   rm   rn   Úmodels        r0   Ú_squeezenetrw   d   ss   € ð ÐÝ˜f mµS¸¼ÀlÔ9SÑ5TÔ5TÑUÔUÐUå�wÐ)Ð) &Ð)Ð)€EàÐØ×Ò˜g×4Ò4¸hÐSWÐ4ÑXÔXÑYÔYÐYà€Lr1   z@https://github.com/pytorch/vision/pull/49#issuecomment-277560717zXThese weights reproduce closely the results of the paper using a simple training recipe.)rp   ÚrecipeÚ_docsc                   ób   — e Zd Z ed eed¬¦  «        i e¥dddddd	œid
ddœ¥¬¦  «        ZeZdS )r   z>https://download.pytorch.org/models/squeezenet1_0-b66bff10.pthéà   ©Ú	crop_size)é   r~   i¨ úImageNet-1Kg²�ï§ÆM@g{®GáT@©zacc@1zacc@5gh‘í|?5ê?gé&1¬@©Úmin_sizeÚ
num_paramsÚ_metricsÚ_opsÚ
_file_size©ÚurlÚ
transformsrs   N©	r9   r:   r;   r   r   r   Ú_COMMON_METAÚIMAGENET1K_V1ÚDEFAULT© r1   r0   r   r   |   óƒ   € € € € € Ø�GØLØ�7Ð.¸#Ð>Ñ>Ô>ð
Øð
à Ø!àØ#Ø#ð ð  ðð Øð
ð 
ð 
ðñ ô €Mð" €G€G€Gr1   r   c                   ób   — e Zd Z ed eed¬¦  «        i e¥dddddd	œid
ddœ¥¬¦  «        ZeZdS )r   z>https://download.pytorch.org/models/squeezenet1_1-b8a52dc0.pthr{   r|   )é   r‘   i(Ú r   gX9´ÈM@g-²�ï'T@r€   g¼t“VÖ?gÑ"Ûù~ê@r�   r‡   NrŠ   rŽ   r1   r0   r   r   ‘   r�   r1   r   Ú
pretrained)rl   T)rl   rm   c                 óT   — t                                | ¦  «        } t          d| |fi |¤ŽS )aÖ  SqueezeNet model architecture from the `SqueezeNet: AlexNet-level
    accuracy with 50x fewer parameters and <0.5MB model size
    <https://arxiv.org/abs/1602.07360>`_ paper.

    Args:
        weights (:class:`~torchvision.models.SqueezeNet1_0_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.SqueezeNet1_0_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.squeezenet.SqueezeNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/squeezenet.py>`_
            for more details about this class.

    .. autoclass:: torchvision.models.SqueezeNet1_0_Weights
        :members:
    rA   )r   Úverifyrw   ©rl   rm   rn   s      r0   r   r   ¦   s1   € õ2 $×*Ò*¨7Ñ3Ô3€GÝ�u˜g xÐ:Ð:°6Ð:Ð:Ð:r1   c                 óT   — t                                | ¦  «        } t          d| |fi |¤ŽS )a/  SqueezeNet 1.1 model from the `official SqueezeNet repo
    <https://github.com/DeepScale/SqueezeNet/tree/master/SqueezeNet_v1.1>`_.

    SqueezeNet 1.1 has 2.4x less computation and slightly fewer parameters
    than SqueezeNet 1.0, without sacrificing accuracy.

    Args:
        weights (:class:`~torchvision.models.SqueezeNet1_1_Weights`, optional): The
            pretrained weights to use. See
            :class:`~torchvision.models.SqueezeNet1_1_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.squeezenet.SqueezeNet``
            base class. Please refer to the `source code
            <https://github.com/pytorch/vision/blob/main/torchvision/models/squeezenet.py>`_
            for more details about this class.

    .. autoclass:: torchvision.models.SqueezeNet1_1_Weights
        :members:
    rS   )r   r”   rw   r•   s      r0   r   r   Ã   s1   € õ6 $×*Ò*¨7Ñ3Ô3€GÝ�u˜g xÐ:Ð:°6Ð:Ð:Ð:r1   )$Ú	functoolsr   Útypingr   r   r5   Útorch.nnr%   Útorch.nn.initr`   Útransforms._presetsr   Úutilsr   Ú_apir
   r   r   Ú_metar   Ú_utilsr   r   Ú__all__ÚModuler   r   rj   Úboolrw   r‹   r   r   rŒ   r   r   rŽ   r1   r0   ú<module>r£      sö  ðØ Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð mÐ
lÐ
l€ð
ð 
ð 
ð 
ð 
ˆ2Œ9ñ 
ô 
ð 
ð$=#ð =#ð =#ð =#ð =#�”ñ =#ô =#ð =#ð@Øðà�kÔ"ðð ðð ð	ð
 ðð ð ð ð$ 'ØPØkðð €ðð ð ð ð ˜Kñ ô ð ð*ð ð ð ð ˜Kñ ô ð ð* €ÑÔØÐ ,Ð0EÔ0SÐ!TÐUÑUÔUà26Èð;ð ;ð ;ØÐ.Ô/ð;ØBFð;ØY\ð;àð;ð ;ð ;ñ VÔUñ Ôð;ð6 €ÑÔØÐ ,Ð0EÔ0SÐ!TÐUÑUÔUà26Èð;ð ;ð ;ØÐ.Ô/ð;ØBFð;ØY\ð;àð;ð ;ð ;ñ VÔUñ Ôð;ð ;ð ;r1   