
    hK                     h   U d dl mZ d dlmZmZmZmZ d dlZd dl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d<deeeef      dede	j<                  fdZg dg dg dg ddZ e!eeeeef      f   e"d<   dededee   dededefdZ#dedddZ$ G d  d!e      Z% G d" d#e      Z& G d$ d%e      Z' G d& d'e      Z( G d( d)e      Z) G d* d+e      Z* G d, d-e      Z+ G d. d/e      Z, e        ed0e%jZ                  f1      dd2d3dee%   dededefd4              Z. e        ed0e&jZ                  f1      dd2d3dee&   dededefd5              Z/ e        ed0e'jZ                  f1      dd2d3dee'   dededefd6              Z0 e        ed0e(jZ                  f1      dd2d3dee(   dededefd7              Z1 e        ed0e)jZ                  f1      dd2d3dee)   dededefd8              Z2 e        ed0e*jZ                  f1      dd2d3dee*   dededefd9              Z3 e        ed0e+jZ                  f1      dd2d3dee+   dededefd:              Z4 e        ed0e,jZ                  f1      dd2d3dee,   dededefd;              Z5y)=    )partial)AnycastOptionalUnionN   )ImageClassification)_log_api_usage_once   )register_modelWeightsWeightsEnum)_IMAGENET_CATEGORIES)_ovewrite_named_paramhandle_legacy_interface)VGGVGG11_WeightsVGG11_BN_WeightsVGG13_WeightsVGG13_BN_WeightsVGG16_WeightsVGG16_BN_WeightsVGG19_WeightsVGG19_BN_Weightsvgg11vgg11_bnvgg13vgg13_bnvgg16vgg16_bnvgg19vgg19_bnc                        e Zd Z	 d
dej                  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   featuresnum_classesinit_weightsdropoutreturnNc                    t         |           t        |        || _        t	        j
                  d      | _        t	        j                  t	        j                  dd      t	        j                  d      t	        j                  |      t	        j                  dd      t	        j                  d      t	        j                  |      t	        j                  d|            | _        |rv| j                         D ]a  }t        |t        j                        rdt        j                  j!                  |j"                  dd       |j$                  Wt        j                  j'                  |j$                  d	       t        |t        j(                        rUt        j                  j'                  |j"                  d
       t        j                  j'                  |j$                  d	       t        |t        j                        st        j                  j+                  |j"                  d	d       t        j                  j'                  |j$                  d	       d y y )N)   r*   i b  i   T)pfan_outrelu)modenonlinearityr   r   g{Gz?)super__init__r
   r$   nnAdaptiveAvgPool2davgpool
SequentialLinearReLUDropout
classifiermodules
isinstanceConv2dinitkaiming_normal_weightbias	constant_BatchNorm2dnormal_)selfr$   r%   r&   r'   m	__class__s         T/var/www/html/eduruby.in/venv/lib/python3.12/site-packages/torchvision/models/vgg.pyr1   zVGG.__init__$   s    	D! ++F3--IIk4(GGDMJJ!IIdD!GGDMJJ!IIdK(
 \\^ 
1a+GG++AHH9SY+Zvv)))!&&!42>>2GG%%ahh2GG%%affa0299-GGOOAHHa6GG%%affa0
1     xc                     | j                  |      }| j                  |      }t        j                  |d      }| j	                  |      }|S )Nr   )r$   r4   torchflattenr9   )rD   rI   s     rG   forwardzVGG.forwardA   s@    MM!LLOMM!QOOArH   )i  Tg      ?)__name__
__module____qualname__r2   Moduleintboolfloatr1   rK   TensorrM   __classcell__)rF   s   @rG   r   r   #   sR    hk1		1031JN1`e1	1: %,, rH   r   cfg
batch_normr(   c                 n   g }d}| D ]  }|dk(  r|t        j                  dd      gz  }$t        t        |      }t        j                  ||dd      }|r0||t        j
                  |      t        j                  d      gz  }n||t        j                  d      gz  }|} t        j                  | S )	N   Mr   )kernel_sizestrider   )r\   paddingT)inplace)r2   	MaxPool2dr   rR   r<   rB   r7   r5   )rW   rX   layersin_channelsvconv2ds         rG   make_layersre   I   s     FK 
8r||!<==FS!AYY{A1aHF62>>!#4bggd6KLL62774#899K
 ==&!!rH   )@   r[      r[      rh   r[      ri   r[   ri   ri   r[   )rf   rf   r[   rg   rg   r[   rh   rh   r[   ri   ri   r[   ri   ri   r[   )rf   rf   r[   rg   rg   r[   rh   rh   rh   r[   ri   ri   ri   r[   ri   ri   ri   r[   )rf   rf   r[   rg   rg   r[   rh   rh   rh   rh   r[   ri   ri   ri   ri   r[   ri   ri   ri   ri   r[   )ABDEcfgsweightsprogresskwargsc                     |7d|d<   |j                   d   #t        |dt        |j                   d                t        t	        t
        |    |      fi |}|"|j                  |j                  |d             |S )NFr&   
categoriesr%   )rX   T)rp   
check_hash)metar   lenr   re   rn   load_state_dictget_state_dict)rW   rX   ro   rp   rq   models         rG   _vggrz   b   s    !&~<<%1!&-W\\,=W9XYDI*=HHEg44hSW4XYLrH   )    r{   zUhttps://github.com/pytorch/vision/tree/main/references/classification#alexnet-and-vggzNThese weights were trained from scratch by using a simplified training recipe.)min_sizers   recipe_docsc            
       R    e Zd Z ed eed      i edddddid	d
d      ZeZy)r   z6https://download.pytorch.org/models/vgg11-8a719046.pth   	crop_sizeihUImageNet-1KgzGAQ@gx&1(V@zacc@1zacc@5V-o@g=
ףp@
num_params_metrics_ops
_file_sizeurl
transformsru   N	rN   rO   rP   r   r   r	   _COMMON_METAIMAGENET1K_V1DEFAULT rH   rG   r   r   u   sQ    D.#>

###   
M  GrH   r   c            
       R    e Zd Z ed eed      i edddddid	d
d      ZeZy)r   z9https://download.pytorch.org/models/vgg11_bn-6002323d.pthr   r   ijr   gHzQ@gp=
sV@r   r   gjt@r   r   Nr   r   rH   rG   r   r      Q    G.#>

###  !
M  GrH   r   c            
       R    e Zd Z ed eed      i edddddid	d
d      ZeZy)r   z6https://download.pytorch.org/models/vgg13-19584684.pthr   r   i(&r   gZd{Q@g9vOV@r   V-&@gQ@r   r   Nr   r   rH   rG   r   r      Q    D.#>

###  !
M  GrH   r   c            
       R    e Zd Z ed eed      i edddddid	d
d      ZeZy)r   z9https://download.pytorch.org/models/vgg13_bn-abd245e5.pthr   r   i(=r   g/$Q@g-V@r   r   g=
ףp@r   r   Nr   r   rH   rG   r   r      sQ    G.#>

###   
M  GrH   r   c                       e Zd Z ed eed      i edddddid	d
d      Z ed eeddd      i edddd ed       ed      did	ddd      Z	eZ
y)r   z6https://download.pytorch.org/models/vgg16-397923af.pthr   r   i(+?r   gSQ@g rV@r   q=
ף.@g|?5^~@r   r   zIhttps://download.pytorch.org/models/vgg16_features-amdegroot-88682ab5.pth)g;pΈ?gN]?g|
?)p?r   r   )r   meanstdNz5https://github.com/amdegroot/ssd.pytorch#training-ssdnang#~j~@a`  
                These weights can't be used for classification because they are missing values in the `classifier`
                module. Only the `features` module has valid values and can be used for feature extraction. The weights
                were trained using the original input standardization method as described in the paper.
            )r   rs   r}   r   r   r   r~   )rN   rO   rP   r   r   r	   r   r   rT   IMAGENET1K_FEATURESr   r   rH   rG   r   r      s    D.#>

###  !
M  "W,7	


#M"5\"5\  !
: GrH   r   c            
       R    e Zd Z ed eed      i edddddid	d
d      ZeZy)r   z9https://download.pytorch.org/models/vgg16_bn-6c64b313.pthr   r   i(L?r   gףp=
WR@g/$V@r   r   grh~@r   r   Nr   r   rH   rG   r   r      r   rH   r   c            
       R    e Zd Z ed eed      i edddddid	d
d      ZeZy)r   z6https://download.pytorch.org/models/vgg19-dcbb9e9d.pthr   r   i(0r   gMbR@gMbV@r   oʡ3@g rh @r   r   Nr   r   rH   rG   r   r   
  r   rH   r   c            
       R    e Zd Z ed eed      i edddddid	d
d      ZeZy)r   z9https://download.pytorch.org/models/vgg19_bn-c79401a0.pthr   r   i([r   gˡER@gSV@r   r   g/$!@r   r   Nr   r   rH   rG   r   r     sQ    G.#>

###  !
M  GrH   r   
pretrained)ro   T)ro   rp   c                 J    t         j                  |       } t        dd| |fi |S )ap  VGG-11 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG11_Weights
        :members:
    rj   F)r   verifyrz   ro   rp   rq   s      rG   r   r   2  *    * ""7+GUGX888rH   c                 J    t         j                  |       } t        dd| |fi |S )a|  VGG-11-BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG11_BN_Weights
        :members:
    rj   T)r   r   rz   r   s      rG   r   r   L  *    * %%g.GT7H777rH   c                 J    t         j                  |       } t        dd| |fi |S )ap  VGG-13 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG13_Weights
        :members:
    rk   F)r   r   rz   r   s      rG   r   r   f  r   rH   c                 J    t         j                  |       } t        dd| |fi |S )a|  VGG-13-BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG13_BN_Weights
        :members:
    rk   T)r   r   rz   r   s      rG   r   r     r   rH   c                 J    t         j                  |       } t        dd| |fi |S )ap  VGG-16 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG16_Weights
        :members:
    rl   F)r   r   rz   r   s      rG   r   r     r   rH   c                 J    t         j                  |       } t        dd| |fi |S )a|  VGG-16-BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG16_BN_Weights
        :members:
    rl   T)r   r   rz   r   s      rG   r    r      r   rH   c                 J    t         j                  |       } t        dd| |fi |S )ap  VGG-19 from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG19_Weights
        :members:
    rm   F)r   r   rz   r   s      rG   r!   r!     r   rH   c                 J    t         j                  |       } t        dd| |fi |S )a|  VGG-19_BN from `Very Deep Convolutional Networks for Large-Scale Image Recognition <https://arxiv.org/abs/1409.1556>`__.

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

    .. autoclass:: torchvision.models.VGG19_BN_Weights
        :members:
    rm   T)r   r   rz   r   s      rG   r"   r"     r   rH   )F)6	functoolsr   typingr   r   r   r   rK   torch.nnr2   transforms._presetsr	   utilsr
   _apir   r   r   _metar   _utilsr   r   __all__rQ   r   liststrrR   rS   r5   re   rn   dict__annotations__rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r   rH   rG   <module>r      s    - -   5 ' 6 6 ' B*#")) #L"T%S/* " " "$ 
J	R	a	p	*d3U38_%%& c t h{.C t _b gj  &ea	K ({ (K ({ (.K .b{ (K ({ ( ,0K0K!LM04t 9h}- 9 9WZ 9_b 9 N 90 ,0@0N0N!OP6:T 8"23 8d 8]` 8eh 8 Q 80 ,0K0K!LM04t 9h}- 9 9WZ 9_b 9 N 90 ,0@0N0N!OP6:T 8"23 8d 8]` 8eh 8 Q 80 ,0K0K!LM04t 9h}- 9 9WZ 9_b 9 N 90 ,0@0N0N!OP6:T 8"23 8d 8]` 8eh 8 Q 80 ,0K0K!LM04t 9h}- 9 9WZ 9_b 9 N 90 ,0@0N0N!OP6:T 8"23 8d 8]` 8eh 8 Q 8rH   