o
    i5                     @   s0   d Z ddlZddlmZ G dd dejjZdS )z+Positionwise feed forward layer definition.    N)	LayerNormc                       s4   e Zd ZdZdej f fdd	Zdd Z  Z	S )"PositionwiseFeedForwardDecoderSANMzPositionwise feed forward layer.

    Args:
        idim (int): Input dimenstion.
        hidden_units (int): The number of hidden units.
        dropout_rate (float): Dropout rate.

    Nc                    s`   t t|   tj||| _tjj||du r|n|dd| _tj|| _	|| _
t|| _dS )z,Construct an PositionwiseFeedForward object.NF)bias)superr   __init__torchnnLinearw_1w_2Dropoutdropout
activationr   norm)selfidimhidden_unitsdropout_rateadimr   	__class__ `/home/ubuntu/.local/lib/python3.10/site-packages/funasr/models/sanm/positionwise_feed_forward.pyr      s    z+PositionwiseFeedForwardDecoderSANM.__init__c                 C   s"   |  | | | | |S )zForward function.)r   r   r   r   r
   )r   xr   r   r   forward   s   "z*PositionwiseFeedForwardDecoderSANM.forward)
__name__
__module____qualname____doc__r   r   ReLUr   r   __classcell__r   r   r   r   r      s    		r   )r   r   $funasr.models.transformer.layer_normr   r   Moduler   r   r   r   r   <module>   s   