
    kh                     .   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j2                  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)AlexNetAlexNet_Weightsalexnetc                   f     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|            | _        y )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      V/var/www/teggl/fontify/venv/lib/python3.12/site-packages/torchvision/models/alexnet.pyr&   zAlexNet.__init__   sf   D!IIaAqAGGD!LLQq1IIb#1a8GGD!LLQq1IIc3Aq9GGD!IIc3Aq9GGD!IIc3Aq9GGD!LLQq1
 ++F3--JJ!IIk4(GGD!JJ!IIdD!GGD!IIdK(
    xc                     | j                  |      }| j                  |      }t        j                  |d      }| j	                  |      }|S )Nr	   )r,   r.   torchflattenr1   )r2   r6   s     r4   forwardzAlexNet.forward/   s@    MM!LLOMM!QOOAr5   )i  g      ?)
__name__
__module____qualname__intfloatr&   r8   Tensorr:   __classcell__)r3   s   @r4   r   r      s8    
C 
 
 
: %,, r5   r   c                   R    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y)r   z<https://download.pytorch.org/models/alexnet-owt-7be5be79.pth   )	crop_sizei(S)?   rE   zUhttps://github.com/pytorch/vision/tree/main/references/classification#alexnet-and-vggzImageNet-1KgA`BL@gNbX9S@)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 r5   r4   r   r   7   sR    J.#>" .m##  !
M* Gr5   r   
pretrained)weightsT)rU   progressrU   rV   kwargsr   c                     t         j                  |       } | #t        |dt        | j                  d                t        di |}| "|j                  | j                  |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:
    r   rH   T)rV   
check_hashrS   )r   verifyr   lenrP   r   load_state_dictget_state_dict)rU   rV   rW   models       r4   r   r   P   sk    : $$W-GfmSl9S5TUfEg44hSW4XYLr5   )	functoolsr   typingr   r   r8   torch.nnr'   transforms._presetsr   utilsr   _apir
   r   r   _metar   _utilsr   r   __all__Moduler   r   rQ   boolr   rS   r5   r4   <module>rj      s         5 ' 6 6 ' B 4#bii #Lk 2 ,0M0M!NO484 %1 %D %[^ %cj % P %r5   