o
    + in  ã                   @  s¶  U 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 erId dlm	Z	m
Z
 d dlmZmZ d dlmZ d d	lmZ e	d
 ZG dd„ de
ƒZg Zdddddddddddddd
œZded< G dd„ dejƒZG dd„ dejƒZG d d!„ d!ejƒZdJd-d.„ZdKdLd0d1„Z	/dKdMd2d3„Z	/dKdMd4d5„Z	/dKdMd6d7„Z	/dKdMd8d9„Z	/dKdMd:d;„Z 	/dKdMd<d=„Z!	/dKdMd>d?„Z"	/dKdMd@dA„Z#	/dKdMdBdC„Z$	/dKdMdDdE„Z%	/dKdMdFdG„Z&	/dKdMdHdI„Z'dS )Né    )Ú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                   @  s.   e Zd ZU ded< ded< ded< ded< dS )Ú_ResNetOptionszNotRequired[int]ÚwidthÚnum_classeszNotRequired[bool]Ú	with_poolÚgroupsN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r#   r#   úg/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddle/vision/models/resnet.pyr   .   s
   
 r   )z:https://paddle-hapi.bj.bcebos.com/models/resnet18.pdparamsZ cf548f46534aa3560945be4b95cd11c4)z:https://paddle-hapi.bj.bcebos.com/models/resnet34.pdparamsZ 8d2275cf8706028345f78ac0e1d31969)z:https://paddle-hapi.bj.bcebos.com/models/resnet50.pdparamsZ ca6f485ee1ab0492d38f323885b0ad80)z;https://paddle-hapi.bj.bcebos.com/models/resnet101.pdparamsZ 02f35f034ca3858e1e54d4036443c92d)z;https://paddle-hapi.bj.bcebos.com/models/resnet152.pdparamsZ 7ad16a2f1e7333859ff986138630fd7a)zAhttps://paddle-hapi.bj.bcebos.com/models/resnext50_32x4d.pdparamsZ dc47483169be7d6f018fcbb7baf8775d)zAhttps://paddle-hapi.bj.bcebos.com/models/resnext50_64x4d.pdparamsZ 063d4b483e12b06388529450ad7576db)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext101_32x4d.pdparamsZ 967b090039f9de2c8d06fe994fb9095f)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext101_64x4d.pdparamsZ 98e04e7ca616a066699230d769d03008)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext152_32x4d.pdparamsZ 18ff0beee21f2efc99c4b31786107121)zBhttps://paddle-hapi.bj.bcebos.com/models/resnext152_64x4d.pdparamsZ 77c4af00ca42c405fa7f841841959379)zAhttps://paddle-hapi.bj.bcebos.com/models/wide_resnet50_2.pdparamsZ 0282f804d73debdab289bd9fea3fa6dc)zBhttps://paddle-hapi.bj.bcebos.com/models/wide_resnet101_2.pdparamsZ d4360a2d23657f059216f5d5a1a9ac93zdict[str, tuple[str, str]]Ú
model_urlsc                      sD   e Zd ZU dZded< 						dd‡ fdd„Zddd„Z‡  ZS )Ú
BasicBlocké   ÚintÚ	expansionNé@   ÚinplanesÚplanesÚstrider   Ú
downsampleúnn.Layer | Noner   Ú
base_widthÚdilationÚ
norm_layerúCallable[..., nn.Layer] | NoneÚreturnÚNonec	           	        s„   t ƒ  ¡  |d u rtj}|dkrtdƒ‚tj||dd|dd| _||ƒ| _t ¡ | _	tj||dddd| _
||ƒ| _|| _|| _d S )Nr'   z(Dilation > 1 not supported in BasicBlocké   F)Úpaddingr-   Ú	bias_attr)r7   r8   )ÚsuperÚ__init__r   ÚBatchNorm2DÚNotImplementedErrorÚConv2DÚconv1Úbn1ÚReLUÚreluÚconv2Úbn2r.   r-   )	Úselfr+   r,   r-   r.   r   r0   r1   r2   ©Ú	__class__r#   r$   r:   r   s    
ÿÿ



zBasicBlock.__init__Úxr   c                 C  s`   |}|   |¡}|  |¡}|  |¡}|  |¡}|  |¡}| jd ur%|  |¡}||7 }|  |¡}|S ©N)r>   r?   rA   rB   rC   r.   ©rD   rG   ÚidentityÚoutr#   r#   r$   Úforward   s   







zBasicBlock.forward©r'   Nr'   r*   r'   N©r+   r(   r,   r(   r-   r   r.   r/   r   r(   r0   r(   r1   r(   r2   r3   r4   r5   ©rG   r   r4   r   ©r   r    r!   r)   r"   r:   rL   Ú__classcell__r#   r#   rE   r$   r&   o   s   
 ÷r&   c                      sD   e Zd ZU dZded< 						dd‡ fdd„Zddd„Z‡  ZS )ÚBottleneckBlocké   r(   r)   r'   Nr*   r+   r,   r-   r   r.   r/   r   r0   r1   r2   r3   r4   r5   c	           
   
     s´   t ƒ  ¡  |d u rtj}t||d  ƒ| }	tj||	ddd| _||	ƒ| _tj|	|	d||||dd| _||	ƒ| _	tj|	|| j
 ddd| _||| j
 ƒ| _t ¡ | _|| _|| _d S )Ng      P@r'   F)r8   r6   )r7   r-   r   r1   r8   )r9   r:   r   r;   r(   r=   r>   r?   rB   rC   r)   Úconv3Úbn3r@   rA   r.   r-   )
rD   r+   r,   r-   r.   r   r0   r1   r2   r   rE   r#   r$   r:   ¦   s0   

ø

ÿ

zBottleneckBlock.__init__rG   r   c                 C  s~   |}|   |¡}|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}| jd ur4|  |¡}||7 }|  |¡}|S rH   )r>   r?   rA   rB   rC   rT   rU   r.   rI   r#   r#   r$   rL   Í   s   










zBottleneckBlock.forwardrM   rN   rO   rP   r#   r#   rE   r$   rR   £   s   
 ÷'rR   c                      sz   e Zd ZU dZded< ded< ded< ded< ded< ded	< 	
				d#d$‡ fdd„Z		d%d&dd„Zd'd!d"„Z‡  ZS )(ÚResNeta.  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:: python

            >>> 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)
            [1, 1000]
    r(   r   r0   r   Úboolr   r+   r1   é2   r*   éè  Tr'   Úblockú"type[BasicBlock | BottleneckBlock]Údepthr   r4   r5   c           	        s6  t ƒ  ¡  g d¢g d¢g d¢g d¢g d¢dœ}|| }|| _|| _|| _|| _tj| _d| _	d| _
tjd| j	d	d
ddd| _|  | j	¡| _t ¡ | _tjdd
dd| _|  |d|d ¡| _| j|d|d d
d| _| j|d|d
 d
d| _| j|d|d d
d| _|r‰t d¡| _|dkr™t d|j |¡| _d S d S )N)é   r]   r]   r]   )r6   rS   é   r6   )r6   rS   é   r6   )r6   é   é$   r6   )é   é"   rX   ée   é˜   r*   r'   r6   é   r]   F)Úkernel_sizer-   r7   r8   )rg   r-   r7   r   é€   )r-   é   i   )r'   r'   )r9   r:   r   r0   r   r   r   r;   Ú_norm_layerr+   r1   r=   r>   r?   r@   rA   Z	MaxPool2DÚmaxpoolÚ_make_layerÚlayer1Úlayer2Úlayer3Úlayer4ZAdaptiveAvgPool2DÚavgpoolZLinearr)   Úfc)	rD   rZ   r\   r   r   r   r   Z	layer_cfgÚlayersrE   r#   r$   r:     sF   
	ûú
ÿzResNet.__init__Fr,   Úblocksr-   Údilateúnn.Sequentialc                 C  sÖ   | j }d }| j}|r|  j|9  _d}|dks| j||j kr6t tj| j||j d|dd|||j ƒ¡}g }	|	 || j|||| j| j	||ƒ¡ ||j | _t
d|ƒD ]}
|	 || j|| j| j	|d¡ qTtj|	Ž S )Nr'   F)r-   r8   )r   r0   r2   )rj   r1   r+   r)   r   Z
Sequentialr=   Úappendr   r0   Úrange)rD   rZ   r,   rt   r-   ru   r2   r.   Zprevious_dilationrs   Ú_r#   r#   r$   rl   E  sT   ûøøÿûÿ

zResNet._make_layerrG   r   c                 C  s„   |   |¡}|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}|  |¡}| jr0|  	|¡}| j
dkr@t |d¡}|  |¡}|S )Nr   r'   )r>   r?   rA   rk   rm   rn   ro   rp   r   rq   r   ÚpaddleÚflattenrr   )rD   rG   r#   r#   r$   rL   z  s   










zResNet.forward)rX   r*   rY   Tr'   )rZ   r[   r\   r(   r   r(   r   r(   r   rW   r   r(   r4   r5   )r'   F)rZ   r[   r,   r(   rt   r(   r-   r(   ru   rW   r4   rv   rO   )	r   r    r!   Ú__doc__r"   r:   rl   rL   rQ   r#   r#   rE   r$   rV   ä   s$   
 )ù5ú5rV   ÚarchÚ_ResNetArchÚBlockr[   r\   r(   Ú
pretrainedrW   ÚkwargsúUnpack[_ResNetOptions]r4   c                 K  s^   t ||fi |¤Ž}|r-| tv sJ | › dƒ‚tt|  d t|  d ƒ}t |¡}| |¡ |S )NzJ model do not have a pretrained model now, you should set pretrained=Falser   r'   )rV   r%   r   rz   ÚloadZset_dict)r}   r   r\   r€   r   ÚmodelZweight_pathÚparamr#   r#   r$   Ú_resnetŽ  s   
ÿÿ

r†   Fc                 K  ó   t dtd| fi |¤ŽS )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:: python

            >>> 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)
            [1, 1000]
    r   rb   ©r†   r&   ©r€   r   r#   r#   r$   r   ¤  s   r   c                 K  r‡   )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:: python

            >>> 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)
            [1, 1000]
    r   rc   rˆ   r‰   r#   r#   r$   r   Å  ó    r   c                 K  r‡   )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:: python

            >>> 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)
            [1, 1000]
    r   rX   ©r†   rR   r‰   r#   r#   r$   r   è  rŠ   r   c                 K  r‡   )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:: python

            >>> 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)
            [1, 1000]
    r   rd   r‹   r‰   r#   r#   r$   r     rŠ   r   c                 K  r‡   )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:: python

            >>> 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)
            [1, 1000]
    r   re   r‹   r‰   r#   r#   r$   r   .  rŠ   r   c                 K  ó&   d|d< d|d< t dtd| fi |¤ŽS )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:: python

            >>> 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)
            [1, 1000]
    é    r   rS   r   r   rX   r‹   r‰   r#   r#   r$   r   Q  ó    r   c                 K  rŒ   )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:: python

            >>> 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)
            [1, 1000]
    r*   r   rS   r   r   rX   r‹   r‰   r#   r#   r$   r   v  rŽ   r   c                 K  rŒ   )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:: python

            >>> 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)
            [1, 1000]
    r   r   rS   r   r   rd   r‹   r‰   r#   r#   r$   r   ›  ó    ÿÿr   c                 K  rŒ   )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:: python

            >>> 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)
            [1, 1000]
    r*   r   rS   r   r   rd   r‹   r‰   r#   r#   r$   r   Â  r   r   c                 K  rŒ   )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:: python

            >>> 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)
            [1, 1000]
    r   r   rS   r   r   re   r‹   r‰   r#   r#   r$   r   é  r   r   c                 K  rŒ   )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:: python

            >>> 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)
            [1, 1000]
    r*   r   rS   r   r   re   r‹   r‰   r#   r#   r$   r     r   r   c                 K  ó   d|d< t dtd| fi |¤ŽS )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:: python

            >>> 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)
            [1, 1000]
    rh   r   r   rX   r‹   r‰   r#   r#   r$   r   7  s    r   c                 K  r   )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:: python

            >>> 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)
            [1, 1000]
    rh   r   r   rd   r‹   r‰   r#   r#   r$   r   [  s    ÿÿr   )r}   r~   r   r[   r\   r(   r€   rW   r   r‚   r4   rV   )F)r   r‚   r4   rV   )r€   rW   r   r‚   r4   rV   )(Ú
__future__r   Útypingr   r   rz   r   Zpaddle.utils.downloadr   r   r   Ztyping_extensionsr	   r
   r   Zpaddle._typingr   r~   r   Ú__all__r%   r"   ZLayerr&   rR   rV   r†   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   Ú<module>   sv   ÿÏ84A 
+"ÿ$ÿ$ÿ$ÿ$ÿ&ÿ&ÿ(ÿ(ÿ(ÿ(ÿ%ÿ