o
    + iú  ã                   @  sV   d dl mZ d dlmZ d dlZd dlmZ erd dlmZ g ZG dd„ dejƒZ	dS )é    )Úannotations)ÚTYPE_CHECKINGN)Únn)ÚTensorc                      s8   e Zd ZU dZded< dd‡ fdd„Zddd„Z‡  ZS )ÚLeNetaœ  LeNet model from
    `"Gradient-based learning applied to document recognition" <https://ieeexplore.ieee.org/document/726791>`_.

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

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

    Examples:
        .. code-block:: python

            >>> import paddle
            >>> from paddle.vision.models import LeNet

            >>> model = LeNet()

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

            >>> print(out.shape)
            [1, 10]
    ÚintÚnum_classesé
   ÚreturnÚNonec                   s–   t ƒ  ¡  || _t tjddddddt ¡ t dd¡tjddddddt ¡ t dd¡¡| _|dkrIt t 	d	d
¡t 	d
d¡t 	d|¡¡| _
d S d S )Né   é   é   )ZstrideÚpaddingé   é   é   r   i  éx   éT   )ÚsuperÚ__init__r   r   Z
SequentialZConv2DZReLUZ	MaxPool2DÚfeaturesZLinearÚfc)Úselfr   ©Ú	__class__© úf/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddle/vision/models/lenet.pyr   :   s"   


ú	



ýÿzLeNet.__init__Úinputsr   c                 C  s.   |   |¡}| jdkrt |d¡}|  |¡}|S )Nr   r   )r   r   ÚpaddleÚflattenr   )r   r   Úxr   r   r   ÚforwardM   s
   


zLeNet.forward)r	   )r   r   r
   r   )r   r   r
   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r   r"   Ú__classcell__r   r   r   r   r      s
   
 r   )
Ú
__future__r   Útypingr   r   r   r   Ú__all__ZLayerr   r   r   r   r   Ú<module>   s   