
    |jn                       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r2d 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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ej                  Z G d dej                  Z G d  d!ej                  Zd<d-Zd=d>d/Z	 d=d?d0Z	 d=d?d1Z	 d=d?d2Z	 d=d?d3Z	 d=d?d4Z 	 d=d?d5Z!	 d=d?d6Z"	 d=d?d7Z#	 d=d?d8Z$	 d=d?d9Z%	 d=d?d:Z&	 d=d?d;Z'dS )@    )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                  8    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__     k/lsinfo/ai/hellotax_ai/data_center/backend/venv/lib/python3.11/site-packages/paddle/vision/models/resnet.pyr   r   .   sB         %%%%$$$$      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                  F     e Zd ZU dZded<   	 	 	 	 	 	 dd fdZddZ xZS )
BasicBlock   int	expansionN@   inplanesplanesstrider   
downsamplenn.Layer | Noner    
base_widthdilation
norm_layerCallable[..., nn.Layer] | NonereturnNonec	                   t                                                       |t          j        }|dk    rt	          d          t          j        ||dd|d          | _         ||          | _        t          j                    | _	        t          j        ||ddd          | _
         ||          | _        || _        || _        d S )Nr8   z(Dilation > 1 not supported in BasicBlock   F)paddingr>   	bias_attr)rI   rJ   )super__init__r   BatchNorm2DNotImplementedErrorConv2Dconv1bn1ReLUreluconv2bn2r?   r>   )
selfr<   r=   r>   r?   r    rA   rB   rC   	__class__s
            r'   rL   zBasicBlock.__init__r   s     	/1~Ja<<%:   Yfa6U
 
 

 :f%%GII	Yvvq!uMMM
:f%%$r&   xr   c                H   |}|                      |          }|                     |          }|                     |          }|                     |          }|                     |          }| j        |                     |          }||z  }|                     |          }|S N)rP   rQ   rS   rT   rU   r?   rV   rX   identityouts       r'   forwardzBasicBlock.forward   s    jjmmhhsmmiinnjjoohhsmm?&q))Hxiinn
r&   r8   Nr8   r;   r8   Nr<   r9   r=   r9   r>   r   r?   r@   r    r9   rA   r9   rB   r9   rC   rD   rE   rF   rX   r   rE   r   r!   r"   r#   r:   r$   rL   r^   __classcell__rW   s   @r'   r7   r7   o   s}         I &*59      <       r&   r7   c                  F     e Zd ZU dZded<   	 	 	 	 	 	 dd fdZddZ xZS )BottleneckBlock   r9   r:   r8   Nr;   r<   r=   r>   r   r?   r@   r    rA   rB   rC   rD   rE   rF   c	           
        t                                                       |t          j        }t	          ||dz  z            |z  }	t          j        ||	dd          | _         ||	          | _        t          j        |	|	d||||d          | _         ||	          | _	        t          j        |	|| j
        z  dd          | _         ||| j
        z            | _        t          j                    | _        || _        || _        d S )Ng      P@r8   F)rJ   rH   )rI   r>   r    rB   rJ   )rK   rL   r   rM   r9   rO   rP   rQ   rT   rU   r:   conv3bn3rR   rS   r?   r>   )rV   r<   r=   r>   r?   r    rA   rB   rC   r   rW   s             r'   rL   zBottleneckBlock.__init__   s    	JFj4/011F:YxUCCC
:e$$Y	
 	
 	

 :e$$Y6DN*A
 
 

 :ft~566GII	$r&   rX   r   c                   |}|                      |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }| j        |                     |          }||z  }|                     |          }|S rZ   )rP   rQ   rS   rT   rU   ri   rj   r?   r[   s       r'   r^   zBottleneckBlock.forward   s    jjmmhhsmmiinnjjoohhsmmiinnjjoohhsmm?&q))Hxiinn
r&   r_   r`   ra   rb   rd   s   @r'   rf   rf      s~         I &*59% % % % % % %N       r&   rf   c                       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Z	 	 d"d#dZd$dZ xZS )%ResNetay  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])
    r9   r    rA   r   boolr   r<   rB   2   r;     Tr8   block"type[BasicBlock | BottleneckBlock]depthr   rE   rF   c                   t                                                       g dg dg dg dg dd}||         }|| _        || _        || _        || _        t          j        | _        d| _	        d| _
        t          j        d| j	        d	d
dd          | _        |                     | j	                  | _        t          j                    | _        t          j        dd
d          | _        |                     |d|d                   | _        |                     |d|d         d
          | _        |                     |d|d
         d
          | _        |                     |d|d         d
          | _        |rt          j        d          | _        |dk    r$t          j        d|j        z  |          | _        d S d S )N)   ru   ru   ru   )rH   rg      rH   )rH   rg      rH   )rH      $   rH   )   "   ro   e      r;   r8   rH      ru   F)kernel_sizer>   rI   rJ   )r   r>   rI   r      )r>      i   )r8   r8   )rK   rL   r    rA   r   r   r   rM   _norm_layerr<   rB   rO   rP   rQ   rR   rS   	MaxPool2Dmaxpool_make_layerlayer1layer2layer3layer4AdaptiveAvgPool2DavgpoolLinearr:   fc)
rV   rq   rs   r   r   r   r    	layer_cfglayersrW   s
            r'   rL   zResNet.__init__  s    	
 
	 5!&">YM
 
 

 ##DM22GII	|!QGGG&&ub&)<<&&uc6!9Q&GG&&uc6!9Q&GG&&uc6!9Q&GG 	8/77DL??ieo 5{CCDGGG ?r&   Fr=   blocksr>   dilatenn.Sequentialc                @   | j         }d }| j        }|r| xj        |z  c_        d}|dk    s| j        ||j        z  k    rJt	          j        t	          j        | j        ||j        z  d|d           |||j        z                      }g }	|	                     || j        |||| j        | j	        ||                     ||j        z  | _        t          d|          D ]4}
|	                     || j        || j        | j	        |                     5t	          j        |	 S )Nr8   F)r>   rJ   )r    rA   rC   )r   rB   r<   r:   r   
SequentialrO   appendr    rA   range)rV   rq   r=   r   r>   r   rC   r?   previous_dilationr   _s              r'   r   zResNet._make_layerH  sk    %

 M 	MMV#MMFQ;;$-6EO+CCC	MU_,!#   
6EO344	 	J E!	 		
 	
 	
 0q&!! 		 		AMMM;#)      }f%%r&   rX   r   c                   |                      |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }|                     |          }| j        r| 	                    |          }| j
        dk    r*t          j        |d          }|                     |          }|S )Nr   r8   )rP   rQ   rS   r   r   r   r   r   r   r   r   paddleflattenr   )rV   rX   s     r'   r^   zResNet.forward}  s    JJqMMHHQKKIIaLLLLOOKKNNKKNNKKNNKKNN> 	 QAaq!$$A

Ar&   )ro   r;   rp   Tr8   )rq   rr   rs   r9   r   r9   r   r9   r   rn   r    r9   rE   rF   )r8   F)rq   rr   r=   r9   r   r9   r>   r9   r   rn   rE   r   ra   )	r!   r"   r#   __doc__r$   rL   r   r^   rc   rd   s   @r'   rm   rm      s         * *X KKKOOOOOOMMMMMM
 .D .D .D .D .D .D .Dj 3& 3& 3& 3& 3&j       r&   rm   arch_ResNetArchBlockrr   rs   r9   
pretrainedrn   kwargsUnpack[_ResNetOptions]rE   c                   t          ||fi |}|rq| t          v sJ |  d            t          t          |          d         t          |          d                   }t          j        |          }|                    |           |S )NzJ model do not have a pretrained model now, you should set pretrained=Falser   r8   )rm   r5   r   r   loadset_dict)r   r   rs   r   r   modelweight_pathparams           r'   _resnetr     s     5%**6**E 	z!!!___ "!! 0tQD!1!!4
 
 K((uLr&   Fc                ,    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:: 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   rz   r   r7   r   r   s     r'   r   r     s     < :z2zDDVDDDr&   c                ,    t          dt          d| fi |S )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DDVDDDr&   c                ,    t          dt          d| fi |S )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   ro   r   rf   r   s     r'   r   r     s!    @ :JII&IIIr&   c                ,    t          dt          d| fi |S )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KKFKKKr&   c                ,    t          dt          d| fi |S )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                @    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:: 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    rg   r   r   ro   r   r   s     r'   r   r   T  5    @ F8F7O$or:PPPPPr&   c                @    d|d<   d|d<   t          dt          d| fi |S )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])
    r;   r    rg   r   r   ro   r   r   s     r'   r   r   y  r   r&   c                @    d|d<   d|d<   t          dt          d| fi |S )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    rg   r   r   r|   r   r   s     r'   r   r     @    @ F8F7OOS* @F  r&   c                @    d|d<   d|d<   t          dt          d| fi |S )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])
    r;   r    rg   r   r   r|   r   r   s     r'   r   r     r   r&   c                @    d|d<   d|d<   t          dt          d| fi |S )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    rg   r   r   r}   r   r   s     r'   r   r     r   r&   c                @    d|d<   d|d<   t          dt          d| fi |S )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])
    r;   r    rg   r   r   r}   r   r   s     r'   r   r     r   r&   c                6    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:: 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   ro   r   r   s     r'   r   r   :  s+    @ F7O$or:PPPPPr&   c                6    d|d<   t          dt          d| fi |S )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   ^  s6    @ F7OOS* @F  r&   )r   r   r   rr   rs   r9   r   rn   r   r   rE   rm   )F)r   r   rE   rm   )r   rn   r   r   rE   rm   )(
__future__r   typingr   r   r   r   paddle.utils.downloadr   r   r	   typing_extensionsr
   r   r   paddle._typingr   r   r   __all__r5   r$   Layerr7   rf   rm   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r&   r'   <module>r      s   # " " " " " " * * * * * * * *        ; ; ; ; ; ; !))))))))55555555$$$$$$	K ! ! ! ! ! ! ! ! c5* 5*
 5 5 5 5p1 1 1 1 1 1 1 1h> > > > >bh > > >Bj j j j jRX j j jZ   ,E E E E ED  E  E  E  E  EH  J  J  J  J  JH  L  L  L  L  LH  L  L  L  L  LH "Q "Q "Q "Q "QL "Q "Q "Q "Q "QL $ $ $ $ $P $ $ $ $ $P $ $ $ $ $P $ $ $ $ $P !Q !Q !Q !Q !QJ # # # # # # #r&   