U
    ‰dƒ  ã                   @   s4   G d d„ de ƒZG dd„ deƒZG dd„ deƒZdS )c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
Normalizerc                 C   s   d S ©N© )Úselfr   r   ú</tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/normalizer.pyÚ__init__   s    zNormalizer.__init__c                 C   s   |   ||¡S r   )Ú_run©r   ÚnetÚparamr   r   r   Ú__call__   s    zNormalizer.__call__c                 C   s   t dƒ‚d S )NzNot Impelemented)Ú	Exceptionr   r   r   r   r      s    zNormalizer._runN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r      s   r   c                       s&   e Zd Zd‡ fdd„	Zdd„ Z‡  ZS )ÚBatchNormalizerç      ð?c                    s&   t t| ƒ ¡  t|ƒ| _t|ƒ| _d S r   )Úsuperr   r   ÚfloatÚ	_momentumÚ_scale_init_value)r   ÚmomentumÚscale_init_value©Ú	__class__r   r   r      s    
zBatchNormalizer.__init__c                 C   s   |j || j| jdS )N)r   r   )ZBatchNormalizationr   r   ©r   Zlayer_modelr
   r   r   r   r      s
      ÿzBatchNormalizer._run)r   ©r   r   r   r   r   Ú__classcell__r   r   r   r   r      s   r   c                       s&   e Zd Zd‡ fdd„	Zdd„ Z‡  ZS )ÚLayerNormalizerTr   c                    s,   t t| ƒ ¡  t|ƒ| _|| _t|ƒ| _d S r   )r   r   r   r   Ú_epsilonÚ_use_layer_norm_opr   )r   ÚepsilonÚuse_layer_norm_opr   r   r   r   r   #   s    
zLayerNormalizer.__init__c                 C   s   |j || j| j| jdS )N)r    r!   r   )ZLayerNormalizationr   r   r   r   r   r   r   r   )   s       ÿzLayerNormalizer._run)Tr   r   r   r   r   r   r   "   s   r   N)Úobjectr   r   r   r   r   r   r   Ú<module>   s   