Ë
    –\;j¹h  ã                   ó4  — d dl Z d dl mZ d dlmZ g Zdddddd	d
dddddddœZ G d„ dej                  «      Z G d„ dej                  «      Z G d„ dej                  «      Z	d„ Z
d&d„Zd&d„Zd&d„Zd&d„Zd&d„Zd&d„Zd&d„Zd&d „Zd&d!„Zd&d"„Zd&d#„Zd&d$„Zd&d%„Zy)'é    N)Únn)Úget_weights_path_from_url)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Ú d4360a2d23657f059216f5d5a1a9ac93)Úresnet18Úresnet34Úresnet50Ú	resnet101Ú	resnet152Úresnext50_32x4dÚresnext50_64x4dÚresnext101_32x4dÚresnext101_64x4dÚresnext152_32x4dÚresnext152_64x4dÚwide_resnet50_2Úwide_resnet101_2c                   ó6   ‡ — e Zd ZdZ	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ xZS )Ú
BasicBlocké   c	                 óf  •— t         ‰	| �  «        |€t        j                  }|dkD  rt	        d«      ‚t        j
                  ||dd|d¬«      | _         ||«      | _        t        j                  «       | _	        t        j
                  ||ddd¬«      | _
         ||«      | _        || _        || _        y )Nr!   z(Dilation > 1 not supported in BasicBlocké   F)ÚpaddingÚstrideÚ	bias_attr)r$   r&   )ÚsuperÚ__init__r   ÚBatchNorm2DÚNotImplementedErrorÚConv2DÚconv1Úbn1ÚReLUÚreluÚconv2Úbn2Ú
downsampler%   )
ÚselfÚinplanesÚplanesr%   r2   ÚgroupsÚ
base_widthÚdilationÚ
norm_layerÚ	__class__s
            €údG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/vision/models/resnet.pyr(   zBasicBlock.__init__P   s¢   ø€ ô 	‰ÑÔØÐÜŸ™ˆJà�aŠ<Ü%Ø:óð ô —Y‘YØ�f˜a¨°6ÀUô
ˆŒ
ñ ˜fÓ%ˆŒÜ—G‘G“IˆŒ	Ü—Y‘Y˜v v¨q¸!ÀuÔMˆŒ
Ù˜fÓ%ˆŒØ$ˆŒØˆ�ó    c                 ó  — |}| j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j
                  �| j                  |«      }||z  }| j                  |«      }|S ©N)r,   r-   r/   r0   r1   r2   ©r3   ÚxÚidentityÚouts       r;   ÚforwardzBasicBlock.forwardn   s{   € Øˆà�j‰j˜‹mˆØ�h‰h�s‹mˆØ�i‰i˜‹nˆà�j‰j˜‹oˆØ�h‰h�s‹mˆà�?‰?Ð&Ø—‘ qÓ)ˆHàˆx‰ˆØ�i‰i˜‹nˆàˆ
r<   ©r!   Nr!   é@   r!   N©Ú__name__Ú
__module__Ú__qualname__Ú	expansionr(   rC   Ú__classcell__©r:   s   @r;   r    r    M   s&   ø„ Ø€Ið ØØØØØõö<r<   r    c                   ó6   ‡ — e Zd ZdZ	 	 	 	 	 	 dˆ fd„	Zd„ Zˆ xZS )ÚBottleneckBlocké   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                  «       | _        || _        || _        y )Ng      P@r!   F)r&   r#   )r$   r%   r6   r8   r&   )r'   r(   r   r)   Úintr+   r,   r-   r0   r1   rJ   Úconv3Úbn3r.   r/   r2   r%   )r3   r4   r5   r%   r2   r6   r7   r8   r9   Úwidthr:   s             €r;   r(   zBottleneckBlock.__init__„   sä   ø€ ô 	‰ÑÔØÐÜŸ™ˆJÜ�F˜j¨4Ñ/Ñ0Ó1°FÑ:ˆä—Y‘Y˜x¨°¸UÔCˆŒ
Ù˜eÓ$ˆŒä—Y‘YØØØØØØØØô	
ˆŒ
ñ ˜eÓ$ˆŒä—Y‘YØ�6˜DŸN™NÑ*¨A¸ô
ˆŒ
ñ ˜f t§~¡~Ñ5Ó6ˆŒÜ—G‘G“IˆŒ	Ø$ˆŒØˆ�r<   c                 ó€  — |}| j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j                  �| j                  |«      }||z  }| j                  |«      }|S r>   )r,   r-   r/   r0   r1   rR   rS   r2   r?   s       r;   rC   zBottleneckBlock.forward«   s¢   € Øˆà�j‰j˜‹mˆØ�h‰h�s‹mˆØ�i‰i˜‹nˆà�j‰j˜‹oˆØ�h‰h�s‹mˆØ�i‰i˜‹nˆà�j‰j˜‹oˆØ�h‰h�s‹mˆà�?‰?Ð&Ø—‘ qÓ)ˆHàˆx‰ˆØ�i‰i˜‹nˆàˆ
r<   rD   rF   rL   s   @r;   rN   rN   �   s'   ø„ Ø€Ið ØØØØØõ%öNr<   rN   c                   ó<   ‡ — e Zd ZdZ	 	 	 	 	 dˆ fd„	Zdd„Zd„ Zˆ x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]
    c                 óF  •— 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                  | j                  «      | _        t        j                  «       | _        t        j                   dd
d¬«      | _        | j%                  |d|d   «      | _        | j%                  |d|d   d
¬«      | _        | j%                  |d|d
   d
¬«      | _        | j%                  |d|d   d
¬«      | _        |rt        j.                  d«      | _        |dkD  r)t        j2                  d|j4                  z  |«      | _        y y )N)é   rY   rY   rY   )r#   rO   é   r#   )r#   rO   é   r#   )r#   é   é$   r#   )é   é"   é2   ée   é˜   rE   r!   r#   é   rY   F)Úkernel_sizer%   r$   r&   )rd   r%   r$   r   é€   )r%   é   i   )r!   r!   )r'   r(   r6   r7   Únum_classesÚ	with_poolr   r)   Ú_norm_layerr4   r8   r+   r,   r-   r.   r/   Ú	MaxPool2DÚmaxpoolÚ_make_layerÚlayer1Úlayer2Úlayer3Úlayer4ÚAdaptiveAvgPool2DÚavgpoolÚLinearrJ   Úfc)
r3   ÚblockÚdepthrT   rg   rh   r6   Ú	layer_cfgÚlayersr:   s
            €r;   r(   zResNet.__init__ì   s{  ø€ ô 	‰ÑÔâÚÚÚÚñ
ˆ	ð ˜5Ñ!ˆØˆŒØˆŒØ&ˆÔØ"ˆŒÜŸ>™>ˆÔàˆŒØˆŒä—Y‘YØØ�M‰MØØØØô
ˆŒ
ð ×#Ñ# D§M¡MÓ2ˆŒÜ—G‘G“IˆŒ	Ü—|‘|°¸!ÀQÔGˆŒØ×&Ñ& u¨b°&¸±)Ó<ˆŒØ×&Ñ& u¨c°6¸!±9ÀQÐ&ÓGˆŒØ×&Ñ& u¨c°6¸!±9ÀQÐ&ÓGˆŒØ×&Ñ& u¨c°6¸!±9ÀQÐ&ÓGˆŒÙÜ×/Ñ/°Ó7ˆDŒLà˜Š?Ü—i‘i  e§o¡oÑ 5°{ÓCˆD�Gð r<   c                 ó¸  — | j                   }d }| j                  }|r| xj                  |z  c_        d}|dk7  s| j                  ||j                  z  k7  rXt	        j
                  t	        j                  | j                  ||j                  z  d|d¬«       |||j                  z  «      «      }g }	|	j                   || j                  |||| j                  | j                  ||«      «       ||j                  z  | _        t        d|«      D ]<  }
|	j                   || j                  || j                  | j                  |¬«      «       Œ> t	        j
                  |	Ž S )Nr!   F)r%   r&   )r6   r7   r9   )ri   r8   r4   rJ   r   Ú
Sequentialr+   Úappendr6   r7   Úrange)r3   ru   r5   Úblocksr%   Údilater9   r2   Úprevious_dilationrx   Ú_s              r;   rl   zResNet._make_layer  s8  € Ø×%Ñ%ˆ
Øˆ
Ø ŸM™MÐÙØ�MŠM˜VÑ#�MØˆFØ�QŠ;˜$Ÿ-™-¨6°E·O±OÑ+CÒCÜŸ™Ü—	‘	Ø—M‘MØ˜UŸ_™_Ñ,ØØ!Ø#ôñ ˜6 E§O¡OÑ3Ó4ó	ˆJð ˆØ�‰ÙØ—‘ØØØØ—‘Ø—‘Ø!Øó	ô	
ð  §¡Ñ0ˆŒÜ�q˜&Ö!ˆAØ�M‰MÙØ—M‘MØØŸ;™;Ø#Ÿ™Ø)ôõð "ô �}‰}˜fÐ%Ð%r<   c                 ó¼  — | j                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j	                  |«      }| j                  |«      }| j                  |«      }| j                  |«      }| j                  r| j                  |«      }| j                  dkD  r't        j                  |d«      }| j                  |«      }|S )Nr   r!   )r,   r-   r/   rk   rm   rn   ro   rp   rh   rr   rg   ÚpaddleÚflattenrt   )r3   r@   s     r;   rC   zResNet.forwardJ  s®   € Ø�J‰J�q‹MˆØ�H‰H�Q‹KˆØ�I‰I�a‹LˆØ�L‰L˜‹OˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹NˆØ�K‰K˜‹Nˆà�>Š>Ø—‘˜Q“ˆAà×Ñ˜aÒÜ—‘˜q !Ó$ˆAØ—‘˜“
ˆAàˆr<   )r`   rE   iè  Tr!   )r!   F)rG   rH   rI   Ú__doc__r(   rl   rC   rK   rL   s   @r;   rW   rW   Â   s,   ø„ ñ'ðX ØØØØõ.Dó`,&ö\r<   rW   c                 óÔ   — t        ||fi |¤Ž}|rX| t        v s
J | › d�«       ‚t        t        |    d   t        |    d   «      }t        j                  |«      }|j                  |«       |S )NzJ model do not have a pretrained model now, you should set pretrained=Falser   r!   )rW   Ú
model_urlsr   r‚   ÚloadÚset_dict)ÚarchÚBlockrv   Ú
pretrainedÚkwargsÚmodelÚweight_pathÚparams           r;   Ú_resnetr�   ^  s|   € Ü�5˜%Ñ* 6Ñ*€EÙà”JÑð	_àˆVÐ]Ð^ó	_Øä/Ü�tÑ˜QÑ¤¨DÑ!1°!Ñ!4ó
ˆô —‘˜KÓ(ˆØ�‰�uÔà€Lr<   c                 ó(   — 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   r^   ©r�   r    ©r‹   rŒ   s     r;   r   r   n  ó   € ô< �:œz¨2¨zÑD¸VÑ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:: 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   r_   r’   r“   s     r;   r   r   �  r”   r<   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:: 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   r`   ©r�   rN   r“   s     r;   r   r   °  s   € ô< �:œ°°JÑ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:: 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   ra   r—   r“   s     r;   r   r   Ñ  ó   € ô< �;¤°°jÑKÀFÑ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:: 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   rb   r—   r“   s     r;   r   r   ò  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:: 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]
    é    r6   rO   rT   r   r`   r—   r“   s     r;   r   r     ó.   € ð< €Fˆ8ÑØ€Fˆ7�OÜÐ$¤o°r¸:Ñ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:: 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]
    rE   r6   rO   rT   r   r`   r—   r“   s     r;   r   r   6  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:: 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œ   r6   rO   rT   r   ra   r—   r“   s     r;   r   r   Y  ó5   € ð< €Fˆ8ÑØ€Fˆ7�OÜØœO¨S°*ñØ@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:: 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]
    rE   r6   rO   rT   r   ra   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:: 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œ   r6   rO   rT   r   rb   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:: 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]
    rE   r6   rO   rT   r   rb   r—   r“   s     r;   r   r   È  r    r<   c                 ó2   — 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]
    re   rT   r   r`   r—   r“   s     r;   r   r   í  s$   € ð< €Fˆ7�OÜÐ$¤o°r¸:ÑPÈÑPÐPr<   c                 ó2   — 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:: 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]
    re   rT   r   ra   r—   r“   s     r;   r   r     s+   € ð< €Fˆ7�OÜØœO¨S°*ñØ@Fñð r<   )F)r‚   r   Úpaddle.utils.downloadr   Ú__all__r†   ÚLayerr    rN   rW   r�   r   r   r   r   r   r   r   r   r   r   r   r   r   © r<   r;   Ú<module>rª      sî   ðó Ý Ý ;à
€ðððððððððððððñc5€
ôp1�—‘ô 1ôh>�b—h‘hô >ôBYˆR�X‰Xô Yòxó EóBEóBJóBLóBLóB QóF QóF"óJ"óJ"óJ"óJQôD!r<   