
    ёin                       % S SK Jr  S SKJrJr  S SKrS SKJr  S SKJr  \(       a,  S SKJ	r	J
r
  S SKJrJr  S SKJr  S S	KJr  \	S
   r " S S\
5      r/ rSSSSSSSSSSSSSS
.rS\S'    " S S\R,                  5      r " S S\R,                  5      r " S  S!\R,                  5      r            S0S" jrS1S2S# jjr S1     S3S$ jjr S1     S3S% jjr S1     S3S& jjr S1     S3S' jjr S1     S3S( jjr  S1     S3S) jjr! S1     S3S* jjr" S1     S3S+ jjr# S1     S3S, jjr$ S1     S3S- jjr% S1     S3S. jjr& S1     S3S/ jjr'g)4    )annotations)TYPE_CHECKINGCallableN)nn)get_weights_path_from_url)Literal	TypedDict)NotRequiredUnpack)Tensor)Size2)resnet18resnet34resnet50	resnet101	resnet152resnext50_32x4dresnext50_64x4dresnext101_32x4dresnext101_64x4dresnext152_32x4dresnext152_64x4dwide_resnet50_2wide_resnet101_2c                  >    \ rS rSr% S\S'   S\S'   S\S'   S\S'   Srg	)
_ResNetOptions.   zNotRequired[int]widthnum_classeszNotRequired[bool]	with_poolgroups N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r"       [/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/vision/models/resnet.pyr   r   .   s    %%$$  r)   r   )z:https://paddle-hapi.bj.bcebos.com/models/resnet18.pdparams cf548f46534aa3560945be4b95cd11c4)z:https://paddle-hapi.bj.bcebos.com/models/resnet34.pdparams 8d2275cf8706028345f78ac0e1d31969)z:https://paddle-hapi.bj.bcebos.com/models/resnet50.pdparams ca6f485ee1ab0492d38f323885b0ad80)z;https://paddle-hapi.bj.bcebos.com/models/resnet101.pdparams 02f35f034ca3858e1e54d4036443c92d)z;https://paddle-hapi.bj.bcebos.com/models/resnet152.pdparams 7ad16a2f1e7333859ff986138630fd7a)zAhttps://paddle-hapi.bj.bcebos.com/models/resnext50_32x4d.pdparams dc47483169be7d6f018fcbb7baf8775d)zAhttps://paddle-hapi.bj.bcebos.com/models/resnext50_64x4d.pdparams 063d4b483e12b06388529450ad7576db)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext101_32x4d.pdparams 967b090039f9de2c8d06fe994fb9095f)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext101_64x4d.pdparams 98e04e7ca616a066699230d769d03008)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext152_32x4d.pdparams 18ff0beee21f2efc99c4b31786107121)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext152_64x4d.pdparams 77c4af00ca42c405fa7f841841959379)zAhttps://paddle-hapi.bj.bcebos.com/models/wide_resnet50_2.pdparams 0282f804d73debdab289bd9fea3fa6dc)zBhttps://paddle-hapi.bj.bcebos.com/models/wide_resnet101_2.pdparams d4360a2d23657f059216f5d5a1a9ac93zdict[str, tuple[str, str]]
model_urlsc                  x   ^  \ 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	$ )
BasicBlocko      int	expansionc	           	     \  > [         T	U ]  5         Uc  [        R                  nUS:  a  [	        S5      e[        R
                  " XSSUSS9U l        U" U5      U l        [        R                  " 5       U l	        [        R
                  " X"SSSS9U l
        U" U5      U l        X@l        X0l        g )Nr<   z(Dilation > 1 not supported in BasicBlock   F)paddingstride	bias_attr)rA   rC   )super__init__r   BatchNorm2DNotImplementedErrorConv2Dconv1bn1ReLUreluconv2bn2
downsamplerB   )
selfinplanesplanesrB   rO   r!   
base_widthdilation
norm_layer	__class__s
            r*   rE   BasicBlock.__init__r   s     	/1~~Ja<%:  YYa6U

 f%GGI	YYvq!uM
f%$r)   c                   UnU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R
                  b  U R                  U5      nX2-  nU R                  U5      nU$ N)rI   rJ   rL   rM   rN   rO   rP   xidentityouts       r*   forwardBasicBlock.forward   sy    jjmhhsmiinjjohhsm??&q)Hiin
r)   )rJ   rN   rI   rM   rO   rL   rB   r<   Nr<   @   r<   NrQ   r=   rR   r=   rB   r   rO   znn.Layer | Noner!   r=   rS   r=   rT   r=   rU   zCallable[..., nn.Layer] | NonereturnNoner[   r   rc   r   
r#   r$   r%   r&   r>   r'   rE   r^   r(   __classcell__rV   s   @r*   r:   r:   o   s    Is &*59  	
 $    3 
 < r)   r:   c                  x   ^  \ 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	$ )BottleneckBlock      r=   r>   c	                  > [         T
U ]  5         Uc  [        R                  n[	        X&S-  -  5      U-  n	[        R
                  " XSSS9U l        U" U	5      U l        [        R
                  " U	U	SUUUUSS9U l        U" U	5      U l	        [        R
                  " XU R                  -  SSS9U l        U" X R                  -  5      U l        [        R                  " 5       U l        X@l        X0l        g )Ng      P@r<   F)rC   r@   )rA   rB   r!   rT   rC   )rD   rE   r   rF   r=   rH   rI   rJ   rM   rN   r>   conv3bn3rK   rL   rO   rB   )rP   rQ   rR   rB   rO   r!   rS   rT   rU   r   rV   s             r*   rE   BottleneckBlock.__init__   s     	JF4/01F:YYxUC
e$YY	

 e$YYDNN*A

 f~~56GGI	$r)   c                   UnU R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  b  U R                  U5      nX2-  nU R                  U5      nU$ rY   )rI   rJ   rL   rM   rN   rn   ro   rO   rZ   s       r*   r^   BottleneckBlock.forward   s    jjmhhsmiinjjohhsmiinjjohhsm??&q)Hiin
r)   )	rJ   rN   ro   rI   rM   rn   rO   rL   rB   r`   rb   re   rf   rh   s   @r*   rj   rj      s    Is &*59%% % 	%
 $% % % % 3% 
% %N r)   rj   c                     ^  \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'        S             SU 4S jjjr  S           SS jjrSS jrSr	U =r
$ )ResNet   a  ResNet model from
`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.pdf>`_.

Args:
    Block (BasicBlock|BottleneckBlock): Block module of model.
    depth (int, optional): Layers of ResNet, Default: 50.
    width (int, optional): Base width per convolution group for each convolution block, Default: 64.
    num_classes (int, optional): Output dim of last fc layer. If num_classes <= 0, last fc layer
                        will not be defined. Default: 1000.
    with_pool (bool, optional): Use pool before the last fc layer or not. Default: True.
    groups (int, optional): Number of groups for each convolution block, Default: 1.

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

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import ResNet
        >>> from paddle.vision.models.resnet import (
        ...     BottleneckBlock,
        ...     BasicBlock,
        ... )

        >>> # build ResNet with 18 layers
        >>> resnet18 = ResNet(BasicBlock, 18)

        >>> # build ResNet with 50 layers
        >>> resnet50 = ResNet(BottleneckBlock, 50)

        >>> # build Wide ResNet model
        >>> wide_resnet50_2 = ResNet(BottleneckBlock, 50, width=64 * 2)

        >>> # build ResNeXt model
        >>> resnext50_32x4d = ResNet(BottleneckBlock, 50, width=4, groups=32)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r=   r!   rS   r   boolr    rQ   rT   c           	     4  > [         T	U ]  5         / SQ/ SQ/ SQ/ SQ/ SQS.nXr   nX`l        X0l        X@l        XPl        [        R                  U l        SU l	        SU l
        [        R                  " SU R                  S	S
SSS9U l        U R                  U R                  5      U l        [        R                  " 5       U l        [        R                   " SS
SS9U l        U R%                  USUS   5      U l        U R%                  USUS   S
S9U l        U R%                  USUS
   S
S9U l        U R%                  USUS   S
S9U l        U(       a  [        R.                  " S5      U l        US:  a*  [        R2                  " SUR4                  -  U5      U l        g g )N)   rx   rx   rx   )r@   rl      r@   )r@   rl      r@   )r@      $   r@   )   "   2   e      ra   r<   r@      rx   F)kernel_sizerB   rA   rC   )r   rB   rA   r      )rB      i   )r<   r<   )rD   rE   r!   rS   r   r    r   rF   _norm_layerrQ   rT   rH   rI   rJ   rK   rL   	MaxPool2Dmaxpool_make_layerlayer1layer2layer3layer4AdaptiveAvgPool2DavgpoolLinearr>   fc)
rP   blockdepthr   r   r    r!   	layer_cfglayersrV   s
            r*   rE   ResNet.__init__  sq    	
	 !&">>YYMM

 ##DMM2GGI	||!QG&&ub&)<&&uc6!9Q&G&&uc6!9Q&G&&uc6!9Q&G//7DL?iieoo 5{CDG r)   c                   U R                   nS nU R                  nU(       a  U =R                  U-  sl        SnUS:w  d  U R                  X!R                  -  :w  aU  [        R
                  " [        R                  " U R                  X!R                  -  SUSS9U" X!R                  -  5      5      n/ n	U	R                  U" U R                  UUUU R                  U R                  UU5      5        X!R                  -  U l        [        SU5       H:  n
U	R                  U" U R                  UU R                  U R                  US95        M<     [        R
                  " U	6 $ )Nr<   F)rB   rC   )r!   rS   rU   )r   rT   rQ   r>   r   
SequentialrH   appendr!   rS   range)rP   r   rR   blocksrB   dilaterU   rO   previous_dilationr   _s              r*   r   ResNet._make_layerH  s2    %%

 MMMMV#MFQ;$--6OO+CC		MM__,!# 6OO34	J !		
 0q&!AMMMM;;#) " }}f%%r)   c                   U R                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R	                  U5      nU R                  U5      nU R                  U5      nU R                  U5      nU R                  (       a  U R                  U5      nU R                  S:  a(  [        R                  " US5      nU R                  U5      nU$ )Nr   r<   )rI   rJ   rL   r   r   r   r   r   r    r   r   paddleflattenr   )rP   r[   s     r*   r^   ResNet.forward}  s    JJqMHHQKIIaLLLOKKNKKNKKNKKN>>QAaq!$A
Ar)   )r   r   rS   rJ   rI   rT   r   r!   rQ   r   r   r   r   r   r   rL   r    )r   ra   i  Tr<   )r   "type[BasicBlock | BottleneckBlock]r   r=   r   r=   r   r=   r    rv   r!   r=   rc   rd   )r<   F)r   r   rR   r=   r   r=   rB   r=   r   rv   rc   znn.Sequentialre   )r#   r$   r%   r&   __doc__r'   rE   r   r^   r(   rg   rh   s   @r*   rt   rt      s    *X KOOMM
 .D1.D .D 	.D
 .D .D .D 
.D .Dj 3&13& 3& 	3&
 3& 3& 
3&j r)   rt   c                    [        X4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   r<   )rt   r8   r   r   loadset_dict)archBlockr   
pretrainedkwargsmodelweight_pathparams           r*   _resnetr     s|     5*6*Ez! 	
f^_	
! 0tQD!1!!4
 K(uLr)   c                (    [        S[        SU 40 UD6$ )a  ResNet 18-layer model from
`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNet 18-layer model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnet18

        >>> # build model
        >>> model = resnet18()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnet18(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r}   r   r:   r   r   s     r*   r   r     s    < :z2zDVDDr)   c                (    [        S[        SU 40 UD6$ )a  ResNet 34-layer model from
`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNet 34-layer model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnet34

        >>> # build model
        >>> model = resnet34()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnet34(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r~   r   r   s     r*   r   r     s    @ :z2zDVDDr)   c                (    [        S[        SU 40 UD6$ )a  ResNet 50-layer model from
`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNet 50-layer model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnet50

        >>> # build model
        >>> model = resnet50()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnet50(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r   r   rj   r   s     r*   r   r     s    @ :JI&IIr)   c                (    [        S[        SU 40 UD6$ )a  ResNet 101-layer model from
`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNet 101-layer.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnet101

        >>> # build model
        >>> model = resnet101()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnet101(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r   r   r   s     r*   r   r         @ ;jKFKKr)   c                (    [        S[        SU 40 UD6$ )a  ResNet 152-layer model from
`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNet 152-layer model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnet152

        >>> # build model
        >>> model = resnet152()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnet152(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r   r   r   s     r*   r   r   1  r   r)   c                <    SUS'   SUS'   [        S[        SU 40 UD6$ )a  ResNeXt-50 32x4d model from
`"Aggregated Residual Transformations for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNeXt-50 32x4d model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnext50_32x4d

        >>> # build model
        >>> model = resnext50_32x4d()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnext50_32x4d(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
    r!   rl   r   r   r   r   r   s     r*   r   r   T  /    @ F8F7O$or:PPPr)   c                <    SUS'   SUS'   [        S[        SU 40 UD6$ )a  ResNeXt-50 64x4d model from
`"Aggregated Residual Transformations for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNeXt-50 64x4d model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnext50_64x4d

        >>> # build model
        >>> model = resnext50_64x4d()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnext50_64x4d(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
ra   r!   rl   r   r   r   r   r   s     r*   r   r   y  r   r)   c                <    SUS'   SUS'   [        S[        SU 40 UD6$ )a  ResNeXt-101 32x4d model from
`"Aggregated Residual Transformations for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNeXt-101 32x4d model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnext101_32x4d

        >>> # build model
        >>> model = resnext101_32x4d()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnext101_32x4d(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r!   rl   r   r   r   r   r   s     r*   r   r     6    @ F8F7OOS*@F r)   c                <    SUS'   SUS'   [        S[        SU 40 UD6$ )a  ResNeXt-101 64x4d model from
`"Aggregated Residual Transformations for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNeXt-101 64x4d model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnext101_64x4d

        >>> # build model
        >>> model = resnext101_64x4d()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnext101_64x4d(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
ra   r!   rl   r   r   r   r   r   s     r*   r   r     r   r)   c                <    SUS'   SUS'   [        S[        SU 40 UD6$ )a  ResNeXt-152 32x4d model from
`"Aggregated Residual Transformations for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNeXt-152 32x4d model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnext152_32x4d

        >>> # build model
        >>> model = resnext152_32x4d()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnext152_32x4d(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r!   rl   r   r   r   r   r   s     r*   r   r     r   r)   c                <    SUS'   SUS'   [        S[        SU 40 UD6$ )a  ResNeXt-152 64x4d model from
`"Aggregated Residual Transformations for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of ResNeXt-152 64x4d model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import resnext152_64x4d

        >>> # build model
        >>> model = resnext152_64x4d()

        >>> # build model and load imagenet pretrained weight
        >>> # model = resnext152_64x4d(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
ra   r!   rl   r   r   r   r   r   s     r*   r   r     r   r)   c                2    SUS'   [        S[        SU 40 UD6$ )a  Wide ResNet-50-2 model from
`"Wide Residual Networks" <https://arxiv.org/pdf/1605.07146.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of Wide ResNet-50-2 model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import wide_resnet50_2

        >>> # build model
        >>> model = wide_resnet50_2()

        >>> # build model and load imagenet pretrained weight
        >>> # model = wide_resnet50_2(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r   r   r   r   r   s     r*   r   r   :  s%    @ F7O$or:PPPr)   c                2    SUS'   [        S[        SU 40 UD6$ )a  Wide ResNet-101-2 model from
`"Wide Residual Networks" <https://arxiv.org/pdf/1605.07146.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:`ResNet <api_paddle_vision_models_ResNet>`.

Returns:
    :ref:`api_paddle_nn_Layer`. An instance of Wide ResNet-101-2 model.

Examples:
    .. code-block:: pycon

        >>> import paddle
        >>> from paddle.vision.models import wide_resnet101_2

        >>> # build model
        >>> model = wide_resnet101_2()

        >>> # build model and load imagenet pretrained weight
        >>> # model = wide_resnet101_2(pretrained=True)

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

        >>> print(out.shape)
        paddle.Size([1, 1000])
r   r   r   r   r   r   s     r*   r   r   ^  s,    @ F7OOS*@F r)   )r   _ResNetArchr   r   r   r=   r   rv   r   Unpack[_ResNetOptions]rc   rt   )F)r   r   rc   rt   )r   rv   r   r   rc   rt   )(
__future__r   typingr   r   r   r   paddle.utils.downloadr   r   r	   typing_extensionsr
   r   r   paddle._typingr   r   r   __all__r8   r'   Layerr:   rj   rt   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r)   r*   <module>r      s   # *   ;)5$	K ! ! c5*
& 5p1 1h>bhh >BjRXX jZ
-  	
 % ,ED  E E(> E EH  J J(> J JH  L L(> L LH  L L(> L LH "Q"Q(>"Q"QL "Q"Q(>"Q"QL $$(>$$P $$(>$$P $$(>$$P $$(>$$P !Q!Q(>!Q!QJ ##(>##r)   