Ë
    þÍ:j;"  ã                   ó  — 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j0                  «      Z G d„ dej0                  «      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jB                  f¬«      ddd œdee   dededefd!„«       «       Z" e«        ede jB                  f¬«      ddd œdee    dededefd"„«       «       Z#y)#é    )Ú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            
       ól   ‡ — 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¬«      | _        y )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        €úr/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/torchvision/models/squeezenet.pyr$   zFire.__init__   s‹   ø€ Ü‰ÑÔØ ˆŒÜ—y‘y ¨>ÀqÔIˆŒÜ"$§'¡'°$Ô"7ˆÔÜŸ™ >Ð3CÐQRÔSˆŒÜ$&§G¡G°DÔ$9ˆÔ!ÜŸ™ >Ð3CÐQRÐ\]Ô^ˆŒÜ$&§G¡G°DÔ$9ˆÕ!ó    Úxc                 óê   — | j                  | j                  |«      «      }t        j                  | j	                  | j                  |«      «      | j                  | j                  |«      «      gd«      S ©Nr	   )r)   r'   ÚtorchÚcatr+   r*   r-   r,   ©r.   r2   s     r0   ÚforwardzFire.forward   sb   € Ø×#Ñ# D§L¡L°£OÓ4ˆÜ�y‰yØ×&Ñ& t§~¡~°aÓ'8Ó9¸4×;TÑ;TÐUY×UcÑUcÐdeÓUfÓ;gÐhÐjkó
ð 	
r1   )	Ú__name__Ú
__module__Ú__qualname__Úintr$   r5   ÚTensorr8   Ú__classcell__©r/   s   @r0   r   r      sH   ø„ ð: ð :°cð :ÈSð :Ðdgð :Ðlpõ :ð
˜Ÿ™ð 
¨%¯,©,÷ 
r1   r   c            	       ój   ‡ — 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   Ú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«      «      | _        | j                  «       D ]�  }t!        |t        j                  «      sŒ||u r#t#        j$                  |j&                  dd¬«       nt#        j(                  |j&                  «       |j*                  €Œqt#        j,                  |j*                  d«       Œ’ y )NÚ1_0r!   é`   é   r   )r   ÚstrideTr   )r   rH   Ú	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   rB   r%   Ú
Sequentialr&   r(   Ú	MaxPool2dr   ÚfeaturesÚ
ValueErrorÚDropoutÚAdaptiveAvgPool2dÚ
classifierÚmodulesÚ
isinstanceÚinitÚnormal_ÚweightÚkaiming_uniform_ÚbiasÚ	constant_)r.   rA   rB   rC   Ú
final_convÚmr/   s         €r0   r$   zSqueezeNet.__init__%   s£  ø€ Ü‰ÑÔÜ˜DÔ!Ø&ˆÔØ�eÒÜŸM™MÜ—	‘	˜!˜R¨Q°qÔ9Ü—‘ Ô%Ü—‘¨°1ÀÔEÜ�R˜˜R Ó$Ü�S˜"˜b "Ó%Ü�S˜"˜c 3Ó'Ü—‘¨°1ÀÔEÜ�S˜"˜c 3Ó'Ü�S˜"˜c 3Ó'Ü�S˜"˜c 3Ó'Ü�S˜"˜c 3Ó'Ü—‘¨°1ÀÔEÜ�S˜"˜c 3Ó'óˆDŽMð ˜ÒÜŸM™MÜ—	‘	˜!˜R¨Q°qÔ9Ü—‘ Ô%Ü—‘¨°1ÀÔEÜ�R˜˜R Ó$Ü�S˜"˜b "Ó%Ü—‘¨°1ÀÔEÜ�S˜"˜c 3Ó'Ü�S˜"˜c 3Ó'Ü—‘¨°1ÀÔEÜ�S˜"˜c 3Ó'Ü�S˜"˜c 3Ó'Ü�S˜"˜c 3Ó'Ü�S˜"˜c 3Ó'óˆD�Mô& Ð>¸w¸iÐG\Ð]Ó^Ð^ô —Y‘Y˜s D×$4Ñ$4À!ÔDˆ
ÜŸ-™-Ü�J‰J˜Ô! :¬r¯w©w¸tÔ/DÄb×FZÑFZÐ[aÓFbó
ˆŒð —‘“ò 	.ˆAÜ˜!œRŸY™YÕ'Ø˜
‘?Ü—L‘L §¡°¸Ö>ä×)Ñ)¨!¯(©(Ô3Ø—6‘6Ñ%Ü—N‘N 1§6¡6¨1Õ-ñ	.r1   r2   c                 ór   — | j                  |«      }| j                  |«      }t        j                  |d«      S r4   )rW   r[   r5   Úflattenr7   s     r0   r8   zSqueezeNet.forward^   s/   € Ø�M‰M˜!ÓˆØ�O‰O˜AÓˆÜ�}‰}˜Q Ó"Ð"r1   )rE   iè  g      à?)r9   r:   r;   Ústrr<   Úfloatr$   r5   r=   r8   r>   r?   s   @r0   r   r   $   sA   ø„ ñ7. ð 7.¸#ð 7.Èuð 7.Ð_cõ 7.ðr#˜Ÿ™ð #¨%¯,©,÷ #r1   r   rA   ÚweightsÚprogressÚkwargsr   c                 ó°   — |�#t        |dt        |j                  d   «      «       t        | fi |¤Ž}|�"|j	                  |j                  |d¬«      «       |S )NrB   Ú
categoriesT)rk   Ú
check_hash)r   ÚlenÚmetar   Úload_state_dictÚget_state_dict)rA   rj   rk   rl   Úmodels        r0   Ú_squeezenetru   d   s]   € ð ÐÜ˜f m´S¸¿¹ÀlÑ9SÓ5TÔUä�wÑ) &Ñ)€EàÐØ×Ñ˜g×4Ñ4¸hÐSWÐ4ÓXÔ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.)rn   ÚrecipeÚ_docsc                   óT   — e Zd Z ed eed¬«      i e¥dddddd	œid
ddœ¥¬«      ZeZy)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Ú
transformsrq   N©	r9   r:   r;   r   r   r   Ú_COMMON_METAÚIMAGENET1K_V1ÚDEFAULT© r1   r0   r   r   |   óT   „ ÙØLÙÐ.¸#Ô>ð
Øð
à Ø!àØ#Ø#ñ ðð Øò
ô€Mð" �Gr1   r   c                   óT   — e Zd Z ed eed¬«      i e¥dddddd	œid
ddœ¥¬«      ZeZy)r   z>https://download.pytorch.org/models/squeezenet1_1-b8a52dc0.pthry   rz   )é   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)rj   T)rj   rk   c                 óH   — t         j                  | «      } 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:
    rE   )r   Úverifyru   ©rj   rk   rl   s      r0   r   r   ¦   s(   € ô2 $×*Ñ*¨7Ó3€GÜ�u˜g xÑ:°6Ñ:Ð:r1   c                 óH   — t         j                  | «      } 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:
    rQ   )r   r’   ru   r“   s      r0   r   r   Ã   s(   € ô6 $×*Ñ*¨7Ó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   rh   Úboolru   r‰   r   r   rŠ   r   r   rŒ   r1   r0   ú<module>r¡      sl  ðÝ ß  ã Ý ß Ð å 5Ý 'ß 6Ñ 6Ý 'ß Bò m€ô
ˆ2�9‰9ô 
ô$=#�—‘ô =#ð@Øðà�kÑ"ðð ðð ð	ð
 óð$ 'ØPØkñ€ô˜Kô ô*˜Kô ñ* ÓÙ ,Ð0E×0SÑ0SÐ!TÔUà26Èò;ØÐ.Ñ/ð;ØBFð;ØY\ð;àò;ó Vó ð;ñ6 ÓÙ ,Ð0E×0SÑ0SÐ!TÔUà26Èò;ØÐ.Ñ/ð;ØBFð;ØY\ð;àò;ó Vó ñ;r1   