
    C1ih                        S SK rS SKJrJrJr   " S S\R                  5      r " S S\R                  5      r	 " S S\R                  5      r " S	 S
\R                  5      r " S S\R                  5      r " S S\R                  5      rg)    N)attention_speccommon_spec
model_specc                       \ rS rSrSrS rSrg)Wav2Vec2BertConfig   z)Configuration for the Wav2Vec2Bert model.c                     g N selfs    ]/home/james-whalen/.local/lib/python3.13/site-packages/ctranslate2/specs/wav2vec2bert_spec.py__init__Wav2Vec2BertConfig.__init__	   s        r   N)__name__
__module____qualname____firstlineno____doc__r   __static_attributes__r   r   r   r   r      s
    3r   r   c                   T   ^  \ rS rSrU 4S jr\S 5       r\S 5       rS rS r	Sr
U =r$ )Wav2Vec2BertSpec   c                    > [         TU ]  5         [        R                  " S5      R	                  U5      U l        [        UUU5      U l        g )Nint16)superr   npdtypetype
vocab_sizeWav2Vec2BertEncoderSpecencoder)r   num_hidden_layersnum_adapter_layersr!   return_hidden	__class__s        r   r   Wav2Vec2BertSpec.__init__   s@     	((7+00<.
r   c                     g)Nr   r   r   s    r   nameWav2Vec2BertSpec.name   s    !r   c                     g)N   r   r   s    r   revisionWav2Vec2BertSpec.revision!   s    r   c                     [        5       $ r
   )r   r   s    r   get_default_config#Wav2Vec2BertSpec.get_default_config%   s    !##r   c                 H    [        U R                  R                  5       5      $ r
   )intr!   numpyr   s    r   get_vocabulary_size$Wav2Vec2BertSpec.get_vocabulary_size(   s    4??((*++r   )r#   r!   )r   r   r   r   r   propertyr*   r.   r1   r6   r   __classcell__)r'   s   @r   r   r      s?    
 " "  $, ,r   r   c                       \ rS rSrSS jrSrg)Wav2Vec2BertFeedForwardSpec,   c                     [         R                  " 5       U l        [         R                  " 5       U l        U(       a  [         R                  " 5       U l        g g r
   )r   
LinearSpeclinear_0linear_1linear_0_noact)r   glurms_norms      r   r   $Wav2Vec2BertFeedForwardSpec.__init__-   s;    #..0#..0"-"8"8":D r   )r?   rA   r@   N)FFr   r   r   r   r   r   r   r   r   r;   r;   ,   s    ;r   r;   c                       \ rS rSrS rSrg)EncoderSpec4   c                    [         R                  " 5       U l        [        5       U l        [         R                  " 5       U l        [        R                  " SSS9U l        U R                  ?	[         R                  " 5       U l
        [         R                  " 5       U l        U R                  ?[         R                  " 5       U l        U R                  ?[         R                  " 5       U l        [         R                  " 5       U l        U R                   ?[         R                  " 5       U l        [        5       U l        [         R                  " 5       U l        g )NTself_attentionrelative_asymmetric_position)r   LayerNormSpecenc_ffn1_layer_normr;   enc_ffn1enc_attn_layer_normr   MultiHeadAttentionSpecenc_attn
layer_normenc_conv_layer_norm
Conv1DSpecenc_conv_pointwise_conv1biasenc_conv_depthwise_convenc_conv_depthwise_layer_normenc_conv_pointwise_conv2enc_ffn2_layer_normenc_ffn2enc_final_layer_normr   s    r   r   EncoderSpec.__init__5   s    #.#<#<#> 35#.#<#<#> &==)-
 MM$#.#<#<#> (3(>(>(@%)).'2'='='?$((--8-F-F-H*(3(>(>(@%)).#.#<#<#> 35$/$=$=$?!r   )rR   rP   rX   rY   rT   rV   rZ   rO   rN   r\   r[   r]   NrE   r   r   r   rG   rG   4   s    @r   rG   c                       \ rS rSrS rSrg)AdapterSpecK   c                 r   [         R                  " 5       U l        [         R                  " 5       U l        [         R                  " 5       U l        [         R                  " 5       U l        [        R                  " SSS9U l	        U R                  ?
[         R                  " 5       U l        [        5       U l        g )NTFrJ   )r   rM   adpt_residual_layer_normrU   adpt_residual_convadpt_attn_layer_normadpt_attn_convr   rQ   adpt_attn_layerrS   adpt_ffn_layer_normr;   adpt_ffnr   s    r   r   AdapterSpec.__init__L   s    (3(A(A(C%"-"8"8":$/$=$=$?!)446-DD). 
   +#.#<#<#> 35r   )rf   rg   re   ri   rh   rd   rc   NrE   r   r   r   r`   r`   K   s    6r   r`   c                       \ rS rSrS rSrg)r"   Z   c                 h   [         R                  " 5       U l        [         R                  " 5       U l        [        U5       Vs/ s H  n[        5       PM     snU l        [        U5       Vs/ s H  n[        5       PM     snU l	        U(       d  [         R                  " 5       U l
        g g s  snf s  snf r
   )r   rM   fp_layer_normr>   fp_projectionrangerG   encoder_layersr`   adapter_layerslm_head)r   r$   r%   r&   _s        r   r    Wav2Vec2BertEncoderSpec.__init__[   s    (668(3356;<M6NO6N{}6NO6;<N6OP6O{}6OP&113DL  PPs   B*+B/)rr   rq   rn   ro   rs   NrE   r   r   r   r"   r"   Z   s    4r   r"   )r5   r   ctranslate2.specsr   r   r   ModelConfigr   LanguageModelSpecr   	LayerSpecr;   rG   r`   r"   r   r   r   <module>rz      s|     E E// ,z33 ,>;*"6"6 ;@*&& @.6*&& 64j22 4r   