o
    Qe©	  ã                   @   s´   d dl mZmZ ddlmZ g ZG dd„ deƒZG dd„ deƒZG dd	„ d	eƒZG d
d„ deƒZ	G dd„ deƒZ
G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é   )ÚmathÚmanipulationé   )ÚLayerc                       s   e Zd Z‡ fdd„Z‡  ZS )ÚFloatFunctionalLayerc                    ó   t t| ƒ ¡  d S ©N)Úsuperr   Ú__init__©Úself©Ú	__class__© úQD:\Projects\ConvertPro\env\Lib\site-packages\paddle/nn/quant/functional_layers.pyr
      ó   zFloatFunctionalLayer.__init__)Ú__name__Ú
__module__Ú__qualname__r
   Ú__classcell__r   r   r   r   r      s    r   c                       ó&   e Zd Z‡ fdd„Zddd„Z‡  ZS )Úaddc                    r   r   )r	   r   r
   r   r   r   r   r
      r   zadd.__init__Nc                 C   ó   t  |||¡S r   )r   r   ©r   ÚxÚyÚnamer   r   r   Úforward    ó   zadd.forwardr   ©r   r   r   r
   r   r   r   r   r   r   r      ó    r   c                       r   )Úsubtractc                    r   r   )r	   r!   r
   r   r   r   r   r
   &   r   zsubtract.__init__Nc                 C   r   r   )r   r!   r   r   r   r   r   )   r   zsubtract.forwardr   r   r   r   r   r   r!   $   r    r!   c                       r   )Úmultiplyc                    r   r   )r	   r"   r
   r   r   r   r   r
   /   r   zmultiply.__init__Nc                 C   r   r   )r   r"   r   r   r   r   r   2   r   zmultiply.forwardr   r   r   r   r   r   r"   -   r    r"   c                       r   )Údividec                    r   r   )r	   r#   r
   r   r   r   r   r
   8   r   zdivide.__init__Nc                 C   r   r   )r   r#   r   r   r   r   r   ;   r   zdivide.forwardr   r   r   r   r   r   r#   6   r    r#   c                       r   )Úreshapec                    r   r   )r	   r$   r
   r   r   r   r   r
   A   r   zreshape.__init__Nc                 C   r   r   )r   r$   )r   r   Úshaper   r   r   r   r   D   r   zreshape.forwardr   r   r   r   r   r   r$   ?   r    r$   c                       r   )Ú	transposec                    r   r   )r	   r&   r
   r   r   r   r   r
   J   r   ztranspose.__init__Nc                 C   r   r   )r   r&   )r   r   Úpermr   r   r   r   r   M   r   ztranspose.forwardr   r   r   r   r   r   r&   H   r    r&   c                       s&   e Zd Z‡ fdd„Zddd„Z‡  ZS )Úconcatc                    r   r   )r	   r(   r
   r   r   r   r   r
   S   r   zconcat.__init__é    Nc                 C   r   r   )r   r(   )r   r   Zaxisr   r   r   r   r   V   r   zconcat.forward)r)   Nr   r   r   r   r   r(   Q   r    r(   c                       s&   e Zd Z‡ fdd„Zddd„Z‡  ZS )	Úflattenc                    r   r   )r	   r*   r
   r   r   r   r   r
   \   r   zflatten.__init__r)   éÿÿÿÿNc                 C   s   t  ||||¡S r   )r   r*   )r   r   Z
start_axisZ	stop_axisr   r   r   r   r   _   s   zflatten.forward)r)   r+   Nr   r   r   r   r   r*   Z   r    r*   N)Ztensorr   r   Ú r   Ú__all__r   r   r!   r"   r#   r$   r&   r(   r*   r   r   r   r   Ú<module>   s   							