§
    ù²Åjÿ  ã                   óF  — 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	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¦  «        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)ÚAlexNetÚAlexNet_WeightsÚalexnetc                   óR   ‡ — e Zd Zd
dededdfˆ fd„Zdej        dej        fd	„Zˆ xZ	S )r   éè  ç      à?Únum_classesÚdropoutÚreturnNc                 ó>  •— t          ¦   «                              ¦   «          t          | ¦  «         t          j        t          j        ddddd¬¦  «        t          j        d¬¦  «        t          j        dd¬	¦  «        t          j        dd
dd¬¦  «        t          j        d¬¦  «        t          j        dd¬	¦  «        t          j        d
ddd¬¦  «        t          j        d¬¦  «        t          j        dddd¬¦  «        t          j        d¬¦  «        t          j        dddd¬¦  «        t          j        d¬¦  «        t          j        dd¬	¦  «        ¦  «        | _        t          j	        d¦  «        | _
        t          j        t          j        |¬¦  «        t          j        dd¦  «        t          j        d¬¦  «        t          j        |¬¦  «        t          j        dd¦  «        t          j        d¬¦  «        t          j        d|¦  «        ¦  «        | _        d S )Né   é@   é   é   r   )Úkernel_sizeÚstrideÚpaddingT)Úinplace)r   r   éÀ   é   )r   r    i€  r	   é   )é   r%   )Úpi $  i   )ÚsuperÚ__init__r   ÚnnÚ
SequentialÚConv2dÚReLUÚ	MaxPool2dÚfeaturesÚAdaptiveAvgPool2dÚavgpoolÚDropoutÚLinearÚ
classifier)Úselfr   r   Ú	__class__s      €úKC:\Projects\Historical\venv\Lib\site-packages\torchvision/models/alexnet.pyr(   zAlexNet.__init__   sÈ  ø€ Ý‰Œ×ÒÑÔÐÝ˜DÑ!Ô!Ð!ÝœÝŒI�a˜¨°A¸qÐAÑAÔAÝŒG˜DÐ!Ñ!Ô!ÝŒL Q¨qÐ1Ñ1Ô1ÝŒI�b˜#¨1°aÐ8Ñ8Ô8ÝŒG˜DÐ!Ñ!Ô!ÝŒL Q¨qÐ1Ñ1Ô1ÝŒI�c˜3¨A°qÐ9Ñ9Ô9ÝŒG˜DÐ!Ñ!Ô!ÝŒI�c˜3¨A°qÐ9Ñ9Ô9ÝŒG˜DÐ!Ñ!Ô!ÝŒI�c˜3¨A°qÐ9Ñ9Ô9ÝŒG˜DÐ!Ñ!Ô!ÝŒL Q¨qÐ1Ñ1Ô1ñ
ô 
ˆŒõ Ô+¨FÑ3Ô3ˆŒÝœ-ÝŒJ˜Ð!Ñ!Ô!ÝŒI�k 4Ñ(Ô(ÝŒG˜DÐ!Ñ!Ô!ÝŒJ˜Ð!Ñ!Ô!ÝŒI�d˜DÑ!Ô!ÝŒG˜DÐ!Ñ!Ô!ÝŒI�d˜KÑ(Ô(ñ
ô 
ˆŒˆˆó    Úxc                 ó®   — |                       |¦  «        }|                      |¦  «        }t          j        |d¦  «        }|                      |¦  «        }|S )Nr	   )r.   r0   ÚtorchÚflattenr3   )r4   r8   s     r6   ÚforwardzAlexNet.forward/   sI   € Ø�MŠM˜!ÑÔˆØ�LŠL˜‰OŒOˆÝŒM˜!˜QÑÔˆØ�OŠO˜AÑÔˆØˆr7   )r   r   )
Ú__name__Ú
__module__Ú__qualname__ÚintÚfloatr(   r:   ÚTensorr<   Ú__classcell__)r5   s   @r6   r   r      s}   ø€ € € € € ð
ð 
 Cð 
¸ð 
Èð 
ð 
ð 
ð 
ð 
ð 
ð:˜œð ¨%¬,ð ð ð ð ð ð ð ð r7   r   c                   ó`   — e Zd Z ed eed¬¦  «        ddedddd	d
œiddddœ¬¦  «        ZeZdS )r   z<https://download.pytorch.org/models/alexnet-owt-7be5be79.pthéà   )Ú	crop_sizei(S¤)é?   rG   zUhttps://github.com/pytorch/vision/tree/main/references/classification#alexnet-and-vggzImageNet-1Kg‰A`åÐBL@gNbX9ÄS@)zacc@1zacc@5g+‡Ùæ?gX9´È"m@zz
                These weights reproduce closely the results of the paper using a simplified training recipe.
            )Ú
num_paramsÚmin_sizeÚ
categoriesÚrecipeÚ_metricsÚ_opsÚ
_file_sizeÚ_docs)ÚurlÚ
transformsÚmetaN)	r=   r>   r?   r   r   r   r   ÚIMAGENET1K_V1ÚDEFAULT© r7   r6   r   r   7   s|   € € € € € Ø�GØJØ�7Ð.¸#Ð>Ñ>Ô>à"Ø Ø.ØmàØ#Ø#ð ð  ðð Ø!ðð
ð 
ðñ ô €Mð* €G€G€Gr7   r   Ú
pretrained)ÚweightsT)rW   ÚprogressrW   rX   Úkwargsr   c                 ó   — t                                | ¦  «        } | �)t          |dt          | j        d         ¦  «        ¦  «         t          di |¤Ž}| �*|                     |                      |d¬¦  «        ¦  «         |S )aã  AlexNet model architecture from `One weird trick for parallelizing convolutional neural networks <https://arxiv.org/abs/1404.5997>`__.

    .. note::
        AlexNet was originally introduced in the `ImageNet Classification with
        Deep Convolutional Neural Networks
        <https://papers.nips.cc/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html>`__
        paper. Our implementation is based instead on the "One weird trick"
        paper above.

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

    .. autoclass:: torchvision.models.AlexNet_Weights
        :members:
    Nr   rJ   T)rX   Ú
check_hashrU   )r   Úverifyr   ÚlenrR   r   Úload_state_dictÚget_state_dict)rW   rX   rY   Úmodels       r6   r   r   P   s„   € õ: ×$Ò$ WÑ-Ô-€GàÐÝ˜f mµS¸¼ÀlÔ9SÑ5TÔ5TÑUÔUÐUåÐÐ�fÐÐ€EàÐØ×Ò˜g×4Ò4¸hÐSWÐ4ÑXÔXÑYÔYÐYà€Lr7   )Ú	functoolsr   Útypingr   r   r:   Útorch.nnr)   Útransforms._presetsr   Úutilsr   Ú_apir
   r   r   Ú_metar   Ú_utilsr   r   Ú__all__ÚModuler   r   rS   Úboolr   rU   r7   r6   ú<module>rl      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ð 4Ð
3Ð
3€ð#ð #ð #ð #ð #ˆbŒiñ #ô #ð #ðLð ð ð ð �kñ ô ð ð2 €ÑÔØÐ ,°Ô0MÐ!NÐOÑOÔOØ48È4ð %ð %ð %˜ Ô1ð %ÀDð %Ð[^ð %Ðcjð %ð %ð %ñ PÔOñ Ôð%ð %ð %r7   