
    ёi                    n   S SK Jr  S SKrS SKJrJr  S SKJrJr  S SK	r	S SK
Js  Jr  S SK	Jr  S SKJr  S SKJrJrJrJrJr  S SKJr  S S	KJr  S
S0r/ r\(       a  S SK	Jr  S SKJr   " S S\5      r " S S\R@                  5      r! " S S\R@                  5      r"        SS jr# S     SS jjr$g)    )annotationsN)TYPE_CHECKING	TypedDict)NotRequiredUnpack)nn)	ParamAttr)Conv2DDropoutLinear	MaxPool2DReLU)Uniform)get_weights_path_from_urlalexnet)zUhttps://paddle-imagenet-models-name.bj.bcebos.com/dygraph/AlexNet_pretrained.pdparams 7f0f9f737132e02732d75a1459d98a43)Tensor)Size2c                       \ rS rSr% S\S'   Srg)_AlexNetOptions.   zNotRequired[int]num_classes N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       \/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/vision/models/alexnet.pyr   r   .   s    %%r    r   c                  `   ^  \ rS rSr  S                 SU 4S jjjrSS jrSrU =r$ )ConvPoolLayer2   c	                   > [         T	U ]  5         US:X  a
  [        5       OS U l        [	        UUUUUU[        [        U* U5      S9[        [        U* U5      S9S9U l        [        SSSS9U l	        g )Nreluinitializer)in_channelsout_channelskernel_sizestridepaddinggroupsweight_attr	bias_attr      r   )r+   r,   r-   )
super__init__r   r&   r
   r	   r   _convr   _pool)
selfinput_channelsoutput_channelsfilter_sizer,   r-   stdvr.   act	__class__s
            r!   r4   ConvPoolLayer.__init__3   ss     	!VmDF	&(#!gteT.BCGTE4,@A	

 1QB
r    c                    U R                  U5      nU R                  b  U R                  U5      nU R                  U5      nU$ )N)r5   r&   r6   r7   inputsxs      r!   forwardConvPoolLayer.forwardN   s9    JJv99 		!AJJqMr    )r5   r6   r&   )   N)r8   intr9   rF   r:   r   r,   r   r-   r   r;   floatr.   rF   r<   z
str | NonereturnNonerA   r   rH   r   )r   r   r   r   r4   rC   r   __classcell__r=   s   @r!   r#   r#   2   s     CC C 	C
 C C C C C 
C C6 r    r#   c                  J   ^  \ rS rSr% SrS\S'   SS	U 4S jjjrS
S jrSrU =r	$ )AlexNetV   a  AlexNet model from
`"ImageNet Classification with Deep Convolutional Neural Networks"
<https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf>`_.

Args:
    num_classes (int, optional): Output dim of last fc layer. If num_classes <= 0, last fc layer
        will not be defined. Default: 1000.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of AlexNet model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import AlexNet

        >>> alexnet = AlexNet()
        >>> x = paddle.rand([1, 3, 224, 224])
        >>> out = alexnet(x)
        >>> print(out.shape)
        paddle.Size([1, 1000])
rF   r   c                N  > [         TU ]  5         Xl        S[        R                  " S5      -  n[        SSSSSUSS	9U l        S[        R                  " S
5      -  n[        SSSSSUSS	9U l        S[        R                  " S5      -  n[        SSSSS[        [        U* U5      S9[        [        U* U5      S9S9U l        S[        R                  " S5      -  n[        SSSSS[        [        U* U5      S9[        [        U* U5      S9S9U l        S[        R                  " S5      -  n[        SSSSSUSS	9U l        U R                  S:  a  S[        R                  " S5      -  n[        SSS9U l        [!        SS[        [        U* U5      S9[        [        U* U5      S9S9U l        [        SSS9U l        [!        SS[        [        U* U5      S9[        [        U* U5      S9S9U l        [!        SU[        [        U* U5      S9[        [        U* U5      S9S9U l        g g )Ng      ?ik  r1   @         r2   r&   )r<   i@        rE   i  i  r'   )r,   r-   r/   r0   i     i 	  r   i $  g      ?downscale_in_infer)pmodei   )in_featuresout_featuresr/   r0   )r3   r4   r   mathsqrtr#   _conv1_conv2r
   r	   r   _conv3_conv4_conv5r   _drop1r   _fc6_drop2_fc7_fc8)r7   r   r;   r=   s      r!   r4   AlexNet.__init__q   s   &TYY{++#Ar2q!TvFTYYz**#BQ1dGTYY{++!gteT.BCGTE4,@A
 TYY{++!gteT.BCGTE4,@A
 TYY{++#CaAtHa;//D!C.BCDK'!%'4%2FG#t0DE	DI "C.BCDK !%'4%2FG#t0DE	DI  (%'4%2FG#t0DE	DI#  r    c                V   U R                  U5      nU R                  U5      nU R                  U5      n[        R                  " U5      nU R                  U5      n[        R                  " U5      nU R                  U5      nU R                  S:  a  [        R                  " USSS9nU R                  U5      nU R                  U5      n[        R                  " U5      nU R                  U5      nU R                  U5      n[        R                  " U5      nU R                  U5      nU$ )Nr   rE   )
start_axis	stop_axis)r^   r_   r`   Fr&   ra   rb   r   paddleflattenrc   rd   re   rf   rg   r@   s      r!   rC   AlexNet.forward   s    KKKKNKKNFF1IKKNFF1IKKNaqQ"=AAA		!Aq	AAA		!Aq	A		!Ar    )r^   r_   r`   ra   rb   rc   re   rd   rf   rg   r   )i  )r   rF   rH   rI   rJ   )
r   r   r   r   __doc__r   r4   rC   r   rK   rL   s   @r!   rN   rN   V   s%    0 4 4l r    rN   c                    [        S0 UD6nU(       a[  U [        ;   d
   U  S35       e[        [        U    S   [        U    S   5      n[        R                  " U5      nUR                  U5        U$ )NzJ model do not have a pretrained model now, you should set pretrained=Falser   rE   r   )rN   
model_urlsr   rn   load	load_dict)arch
pretrainedkwargsmodelweight_pathparams         r!   _alexnetr|      sz     fEz! 	
f^_	
! 0tQD!1!!4
 K(Lr    c                    [        SU 40 UD6$ )a  AlexNet model from
`"ImageNet Classification with Deep Convolutional Neural Networks"
<https://proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf>`_.

Args:
    pretrained (bool, optional): Whether to load pre-trained weights. If True, returns a model pre-trained
        on ImageNet. Default: False.
    **kwargs (optional): Additional keyword arguments. For details, please refer to :ref:`AlexNet <api_paddle_vision_AlexNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of AlexNet model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import alexnet

        >>> # Build model
        >>> model = alexnet()

        >>> # Build model and load imagenet pretrained weight
        >>> # model = alexnet(pretrained=True)

        >>> x = paddle.rand([1, 3, 224, 224])
        >>> out = model(x)

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   )r|   )rw   rx   s     r!   r   r      s    B Iz4V44r    )rv   strrw   boolrx   Unpack[_AlexNetOptions]rH   rN   )F)rw   r   rx   r   rH   rN   )%
__future__r   r\   typingr   r   typing_extensionsr   r   rn   paddle.nn.functionalr   
functionalrm   paddle.base.param_attrr	   	paddle.nnr
   r   r   r   r   paddle.nn.initializerr   paddle.utils.downloadr   rs   __all__r   paddle._typingr   r   Layerr#   rN   r|   r   r   r    r!   <module>r      s    # 
 2       , > > ) ;  
 $&) &!BHH !Hdbhh dN
+B( !5!5(?!5!5r    