§
    @Äj  ã                   ót   — d dl Z dgZ G d„ de j        j        ¦  «        Z G d„ de j        j        ¦  «        ZdS )é    NÚ
DeepSpeechc                   ó^   ‡ — e Zd ZdZddededededdf
ˆ fd	„Zd
ej        dej        fd„Z	ˆ xZ
S )ÚFullyConnectedzh
    Args:
        n_feature: Number of input features
        n_hidden: Internal hidden unit size.
    é   Ú	n_featureÚn_hiddenÚdropoutÚrelu_max_clipÚreturnNc                 óÀ   •— t          t          | ¦  «                             ¦   «          t          j                             ||d¬¦  «        | _        || _        || _        d S )NT)Úbias)	Úsuperr   Ú__init__ÚtorchÚnnÚLinearÚfcr
   r	   )Úselfr   r   r	   r
   Ú	__class__s        €úMC:\Projects\Historical\venv\Lib\site-packages\torchaudio/models/deepspeech.pyr   zFullyConnected.__init__   sM   ø€ Ý�n˜dÑ#Ô#×,Ò,Ñ.Ô.Ð.Ý”(—/’/ )¨X¸D�/ÑAÔAˆŒØ*ˆÔØˆŒˆˆó    Úxc                 ó<  — |                       |¦  «        }t          j        j                             |¦  «        }t          j        j                             |d| j        ¦  «        }| j        r0t          j        j                             || j        | j        ¦  «        }|S )Nr   )	r   r   r   Ú
functionalÚreluÚhardtanhr
   r	   Útraining)r   r   s     r   ÚforwardzFullyConnected.forward   sx   € Ø�GŠG�A‰JŒJˆÝŒHÔ×$Ò$ QÑ'Ô'ˆÝŒHÔ×(Ò(¨¨A¨tÔ/AÑBÔBˆØŒ<ð 	LÝ”Ô#×+Ò+¨A¨t¬|¸T¼]ÑKÔKˆAØˆr   )r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚintÚfloatr   r   ÚTensorr   Ú__classcell__©r   s   @r   r   r      s—   ø€ € € € € ðð ðð  #ð °ð ¸uð ÐUXð Ðbfð ð ð ð ð ð ð˜œð ¨%¬,ð ð ð ð ð ð ð ð r   r   c                   ód   ‡ — e Zd ZdZ	 	 	 ddedededed	d
f
ˆ fd„Zdej        d	ej        fd„Z	ˆ xZ
S )r   a  DeepSpeech architecture introduced in
    *Deep Speech: Scaling up end-to-end speech recognition* :cite:`hannun2014deep`.

    Args:
        n_feature: Number of input features
        n_hidden: Internal hidden unit size.
        n_class: Number of output classes
    é   é(   ç        r   r   Ún_classr	   r   Nc                 ó°  •— t          t          | ¦  «                             ¦   «          || _        t	          |||¦  «        | _        t	          |||¦  «        | _        t	          |||¦  «        | _        t          j	         
                    ||ddd¬¦  «        | _        t	          |||¦  «        | _        t          j	                             ||¦  «        | _        d S )Né   r   T)Ú
num_layersÚnonlinearityÚbidirectional)r   r   r   r   r   Úfc1Úfc2Úfc3r   r   ÚRNNÚbi_rnnÚfc4r   Úout)r   r   r   r-   r	   r   s        €r   r   zDeepSpeech.__init__&   s°   ø€ õ 	�j˜$ÑÔ×(Ò(Ñ*Ô*Ð*Ø ˆŒÝ! )¨X°wÑ?Ô?ˆŒÝ! (¨H°gÑ>Ô>ˆŒÝ! (¨H°gÑ>Ô>ˆŒÝ”h—l’l 8¨XÀ!ÐRXÐhl�lÑmÔmˆŒÝ! (¨H°gÑ>Ô>ˆŒÝ”8—?’? 8¨WÑ5Ô5ˆŒˆˆr   r   c                 ó2  — |                       |¦  «        }|                      |¦  «        }|                      |¦  «        }|                     d¦  «        }|                     dd¦  «        }|                      |¦  «        \  }}|dd…dd…d| j        …f         |dd…dd…| j        d…f         z   }|                      |¦  «        }|                      |¦  «        }| 	                    ddd¦  «        }t          j        j                             |d¬¦  «        }|S )zÃ
        Args:
            x (torch.Tensor): Tensor of dimension (batch, channel, time, feature).
        Returns:
            Tensor: Predictor tensor of dimension (batch, time, class).
        r/   r   Né   )Údim)r3   r4   r5   ÚsqueezeÚ	transposer7   r   r8   r9   Úpermuter   r   r   Úlog_softmax)r   r   Ú_s      r   r   zDeepSpeech.forward6   sù   € ð �HŠH�Q‰KŒKˆà�HŠH�Q‰KŒKˆà�HŠH�Q‰KŒKˆà�IŠI�a‰LŒLˆà�KŠK˜˜1ÑÔˆà�{Š{˜1‰~Œ~‰ˆˆ1àˆaˆaˆa����O�d”m�OÐ#Ô$ q¨¨¨¨A¨A¨A¨t¬}¨¨Ð)>Ô'?Ñ?ˆà�HŠH�Q‰KŒKˆà�HŠH�Q‰KŒKˆà�IŠI�a˜˜AÑÔˆåŒHÔ×+Ò+¨A°1Ð+Ñ5Ô5ˆàˆr   )r*   r+   r,   r   r(   s   @r   r   r      s­   ø€ € € € € ðð ð ØØð6ð 6àð6ð ð6ð ð	6ð
 ð6ð 
ð6ð 6ð 6ð 6ð 6ð 6ð ˜œð ¨%¬,ð ð ð ð ð ð ð ð r   )r   Ú__all__r   ÚModuler   r   © r   r   ú<module>rE      s{   ðØ €€€àˆ.€ðð ð ð ð �U”X”_ñ ô ð ð,8ð 8ð 8ð 8ð 8�””ñ 8ô 8ð 8ð 8ð 8r   