


'''simple docstring'''

import functools
import operator

from ...configuration_utils import PretrainedConfig
from ...utils import logging


a_  :				Union[str, Any]						= logging.get_logger(__name__)

a_  :				Optional[Any]						= {
    """microsoft/unispeech-sat-base-100h-libri-ft""": (
        """https://huggingface.co/microsoft/unispeech-sat-base-100h-libri-ft/resolve/main/config.json"""
    ),
    # See all UniSpeechSat models at https://huggingface.co/models?filter=unispeech_sat
}





class      snake_case    (    lowercase			):





  """simple docstring"""




  _lowerCamelCase		    =  "unispeech-sat"






  def __init__(    self			,  UpperCamelCase=32			,  UpperCamelCase=768			,  UpperCamelCase=12			,  UpperCamelCase=12			,  UpperCamelCase=3072			,  UpperCamelCase="gelu"			,  UpperCamelCase=0.1			,  UpperCamelCase=0.1			,  UpperCamelCase=0.1			,  UpperCamelCase=0.0			,  UpperCamelCase=0.0			,  UpperCamelCase=0.1			,  UpperCamelCase=0.1			,  UpperCamelCase=0.02			,  UpperCamelCase=1e-5			,  UpperCamelCase="group"			,  UpperCamelCase="gelu"			,  UpperCamelCase=(512, 512, 512, 512, 512, 512, 512)			,  UpperCamelCase=(5, 2, 2, 2, 2, 2, 2)			,  UpperCamelCase=(10, 3, 3, 3, 3, 2, 2)			,  UpperCamelCase=False			,  UpperCamelCase=128			,  UpperCamelCase=16			,  UpperCamelCase=False			,  UpperCamelCase=True			,  UpperCamelCase=0.05			,  UpperCamelCase=10			,  UpperCamelCase=2			,  UpperCamelCase=0.0			,  UpperCamelCase=10			,  UpperCamelCase=0			,  UpperCamelCase=320			,  UpperCamelCase=2			,  UpperCamelCase=0.1			,  UpperCamelCase=100			,  UpperCamelCase=256			,  UpperCamelCase=256			,  UpperCamelCase=0.1			,  UpperCamelCase="mean"			,  UpperCamelCase=False			,  UpperCamelCase=False			,  UpperCamelCase=256			,  UpperCamelCase=(512, 512, 512, 512, 1500)			,  UpperCamelCase=(5, 3, 3, 1, 1)			,  UpperCamelCase=(1, 2, 3, 1, 1)			,  UpperCamelCase=512			,  UpperCamelCase=0			,  UpperCamelCase=1			,  UpperCamelCase=2			,  UpperCamelCase=504			,  **UpperCamelCase			,  ):







   """simple docstring"""
   super().__init__(**UpperCamelCase			,  pad_token_id=UpperCamelCase			,  bos_token_id=UpperCamelCase			,  eos_token_id=UpperCamelCase     )
   lowerCamelCase_      =  hidden_size
   lowerCamelCase_      =  feat_extract_norm
   lowerCamelCase_      =  feat_extract_activation
   lowerCamelCase_      =  list(UpperCamelCase     )
   lowerCamelCase_      =  list(UpperCamelCase     )
   lowerCamelCase_      =  list(UpperCamelCase     )
   lowerCamelCase_      =  conv_bias
   lowerCamelCase_      =  num_conv_pos_embeddings
   lowerCamelCase_      =  num_conv_pos_embedding_groups
   lowerCamelCase_      =  len(self.conv_dim     )
   lowerCamelCase_      =  num_hidden_layers
   lowerCamelCase_      =  intermediate_size
   lowerCamelCase_      =  hidden_act
   lowerCamelCase_      =  num_attention_heads
   lowerCamelCase_      =  hidden_dropout
   lowerCamelCase_      =  attention_dropout
   lowerCamelCase_      =  activation_dropout
   lowerCamelCase_      =  feat_proj_dropout
   lowerCamelCase_      =  final_dropout
   lowerCamelCase_      =  layerdrop
   lowerCamelCase_      =  layer_norm_eps
   lowerCamelCase_      =  initializer_range
   lowerCamelCase_      =  vocab_size
   lowerCamelCase_      =  num_clusters
   lowerCamelCase_      =  do_stable_layer_norm
   lowerCamelCase_      =  use_weighted_layer_sum

   if (
       (len(self.conv_stride     ) != self.num_feat_extract_layers)
       or (len(self.conv_kernel     ) != self.num_feat_extract_layers)
       or (len(self.conv_dim     ) != self.num_feat_extract_layers)
   ):
    raise ValueError(
        "Configuration for convolutional layers is incorrect. It is required that `len(config.conv_dim)` =="
        " `len(config.conv_stride)` == `len(config.conv_kernel)`, but is `len(config.conv_dim) ="
        f''' {len(self.conv_dim     )}`, `len(config.conv_stride) = {len(self.conv_stride     )}`,'''
        f''' `len(config.conv_kernel) = {len(self.conv_kernel     )}`.'''     )

   # fine-tuning config parameters for SpecAugment: https://arxiv.org/abs/1904.08779
   lowerCamelCase_      =  apply_spec_augment
   lowerCamelCase_      =  mask_time_prob
   lowerCamelCase_      =  mask_time_length
   lowerCamelCase_      =  mask_time_min_masks
   lowerCamelCase_      =  mask_feature_prob
   lowerCamelCase_      =  mask_feature_length
   lowerCamelCase_      =  mask_feature_min_masks

   # parameters for pretraining with codevector quantized representations
   lowerCamelCase_      =  num_codevectors_per_group
   lowerCamelCase_      =  num_codevector_groups
   lowerCamelCase_      =  contrastive_logits_temperature
   lowerCamelCase_      =  feat_quantizer_dropout
   lowerCamelCase_      =  num_negatives
   lowerCamelCase_      =  codevector_dim
   lowerCamelCase_      =  proj_codevector_dim
   lowerCamelCase_      =  diversity_loss_weight

   # ctc loss
   lowerCamelCase_      =  ctc_loss_reduction
   lowerCamelCase_      =  ctc_zero_infinity

   # SequenceClassification-specific parameter. Feel free to ignore for other classes.
   lowerCamelCase_      =  classifier_proj_size

   # XVector-specific parameters. Feel free to ignore for other classes.
   lowerCamelCase_      =  list(UpperCamelCase     )
   lowerCamelCase_      =  list(UpperCamelCase     )
   lowerCamelCase_      =  list(UpperCamelCase     )
   lowerCamelCase_      =  xvector_output_dim







  @property
  def   snake_case		(    self     ):







   """simple docstring"""
   return functools.reduce(operator.mul			,  self.conv_stride			,  1     )










"""simple docstring"""



def 		__lowercase     (   snake_case_  :  int						)   ->int:



    '''simple docstring'''







    assert (
        isinstance(snake_case_				,snake_case_						) and number_of_steps > 0
    ), F"""number_of_steps needs to be positive integer, your input {number_of_steps}"""
    if number_of_steps == 1:
        return 1
    __A ,       __A    :						List[Any]						 =     1, 1
    for _ in range(number_of_steps - 1						):
        __A ,       __A    :						List[str]						 =     current + previous, current
    return current


if __name__ == "__main__":
       import doctest

       doctest.testmod()




