
    ڧg;"                     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        Y/var/www/html/ai-engine/env/lib/python3.11/site-packages/torchvision/models/squeezenet.pyr$   zFire.__init__   s     y>qIII"$'$"7"7"7>3CQRSSS$&GD$9$9$9!>3CQR\]^^^$&GD$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    ##DLLOO44y&&t~~a'8'8994;T;TUYUcUcdeUfUf;g;ghjk
 
 	
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{Gz?)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	!RQq999%%%1EEERR$$S"b"%%S"c3''1EEES"c3''S"c3''S"c3''S"c3''1EEES"c3'' DMM M	!RQq999%%%1EEERR$$S"b"%%1EEES"c3''S"c3''1EEES"c3''S"c3''S"c3''S"c3'' DMM& ]w]]]^^^ YsD$4!DDD
-J!!!:rwt/D/D/DbFZ[aFbFb
 
  	. 	.A!RY'' .
??L>>>>>)!(3336%N161---	. 	.r1   r2   c                     |                      |          }|                     |          }t          j        |d          S r4   )rY   r]   r5   flattenr7   s     r0   r8   zSqueezeNet.forward^   s6    MM!OOA}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     fmSl9S5T5TUUUw))&))Eg44hSW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" GGGr1   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   gt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3Gugx::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3Gugx::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
 
 
 
 
29 
 
 
$=# =# =# =# =# =# =# =#@k"  	
    $ 'Pk     K   *    K   * ,0E0S!TUUU26; ; ;./;BF;Y\;; ; ; VU ;6 ,0E0S!TUUU26; ; ;./;BF;Y\;; ; ; VU ; ; ;r1   