U
    ­Ê¹jˆ  ã                   @   sÞ   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 dddgZG dd„ dejƒZG dd„ deƒZeƒ edejfd�dddœee eeedœd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                       s<   e Zd Zd
eeddœ‡ fdd„Zejejdœdd	„Z‡  Z	S )r   éè  ç      à?N)Únum_classesÚdropoutÚreturnc                    s$  t ƒ  ¡  t| ƒ t tjdddddd�tjdd�tjddd	�tjdd
ddd�tjdd�tjddd	�tjd
dddd�tjdd�tjddddd�tjdd�tjddddd�tjdd�tjddd	�¡| _t 	d¡| _
t tj|d�t dd¡tjdd�tj|d�t dd¡tjdd�t d|¡¡| _d S )Né   é@   é   é   r   )Úkernel_sizeÚstrideÚpaddingT)Zinplace)r   r   éÀ   é   )r   r   i€  r   é   )é   r!   )Úpi $  i   )ÚsuperÚ__init__r   ÚnnZ
SequentialZConv2dZReLUZ	MaxPool2dÚfeaturesZAdaptiveAvgPool2dÚavgpoolZDropoutZLinearÚ
classifier)Úselfr   r   ©Ú	__class__© úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torchvision/models/alexnet.pyr$      s6    





ó






ùzAlexNet.__init__)Úxr   c                 C   s.   |   |¡}|  |¡}t |d¡}|  |¡}|S )Nr   )r&   r'   ÚtorchÚflattenr(   )r)   r.   r,   r,   r-   Úforward/   s
    


zAlexNet.forward)r   r   )
Ú__name__Ú
__module__Ú__qualname__ÚintÚfloatr$   r/   ZTensorr1   Ú__classcell__r,   r,   r*   r-   r      s   c                   @   sB   e Zd Zedeedd�ddedddd	d
œiddddœd�ZeZdS )r   z<https://download.pytorch.org/models/alexnet-owt-7be5be79.pthéà   )Z	crop_sizei(S¤)é?   r9   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.
            )Z
num_paramsZmin_sizeÚ
categoriesZrecipeZ_metricsZ_opsÚ
_file_sizeZ_docs)ÚurlZ
transformsÚmetaN)	r2   r3   r4   r
   r   r   r   ÚIMAGENET1K_V1ÚDEFAULTr,   r,   r,   r-   r   7   s$   
þÿóýZ
pretrained)ÚweightsT)r@   Úprogress)r@   rA   Úkwargsr   c                 K   sR   t  | ¡} | dk	r(t|dt| jd ƒƒ tf |Ž}| dk	rN| | j|d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   r:   T)rA   Z
check_hash)r   Úverifyr   Úlenr=   r   Zload_state_dictZget_state_dict)r@   rA   rB   Úmodelr,   r,   r-   r   P   s    

)Ú	functoolsr   Útypingr   r   r/   Ztorch.nnr%   Ztransforms._presetsr   Úutilsr   Z_apir	   r
   r   Ú_metar   Z_utilsr   r   Ú__all__ÚModuler   r   r>   Úboolr   r,   r,   r,   r-   Ú<module>   s   
&