import functools
import operator

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


lowerCAmelCase__      		=					logging.get_logger(__name__)

lowerCAmelCase__      		=					{
    'facebook/hubert-base-ls960': 'https://huggingface.co/facebook/hubert-base-ls960/resolve/main/config.json',
    # See all Hubert models at https://huggingface.co/models?filter=hubert
}
class 							a_					(		UpperCAmelCase__		):






 '''simple docstring'''






 UpperCAmelCase_      					=   "hubert"




 def __init__(     self   :    Any     ,       lowercase__   :    Optional[Any]=32     ,       lowercase__   :    Union[str, Any]=768     ,       lowercase__   :    Dict=12     ,       lowercase__   :    int=12     ,       lowercase__   :    Dict=3_072     ,       lowercase__   :    Optional[Any]="gelu"     ,       lowercase__   :    Optional[int]=0.1     ,       lowercase__   :    Union[str, Any]=0.1     ,       lowercase__   :    Union[str, Any]=0.1     ,       lowercase__   :    Tuple=True     ,       lowercase__   :    List[str]=0.0     ,       lowercase__   :    Tuple=0.1     ,       lowercase__   :    Optional[int]=0.1     ,       lowercase__   :    Union[str, Any]=0.02     ,       lowercase__   :    List[str]=1e-5     ,       lowercase__   :    Dict="group"     ,       lowercase__   :    List[Any]="gelu"     ,       lowercase__   :    Optional[int]=(512, 512, 512, 512, 512, 512, 512)     ,       lowercase__   :    str=(5, 2, 2, 2, 2, 2, 2)     ,       lowercase__   :    int=(10, 3, 3, 3, 3, 2, 2)     ,       lowercase__   :    List[str]=False     ,       lowercase__   :    Optional[int]=128     ,       lowercase__   :    Any=16     ,       lowercase__   :    Dict=False     ,       lowercase__   :    Any=True     ,       lowercase__   :    Union[str, Any]=0.05     ,       lowercase__   :    Any=10     ,       lowercase__   :    Any=2     ,       lowercase__   :    Tuple=0.0     ,       lowercase__   :    Any=10     ,       lowercase__   :    Dict=0     ,       lowercase__   :    str="sum"     ,       lowercase__   :    Any=False     ,       lowercase__   :    str=False     ,       lowercase__   :    Optional[int]=256     ,       lowercase__   :    str=0     ,       lowercase__   :    Optional[int]=1     ,       lowercase__   :    List[str]=2     ,       **lowercase__   :    Optional[int]     ,       ):







        '''simple docstring'''



        super().__init__(**_lowerCAmelCase     ,       pad_token_id=_lowerCAmelCase     ,       bos_token_id=_lowerCAmelCase     ,       eos_token_id=_lowerCAmelCase)
        lowerCAmelCase__	      =   hidden_size
        lowerCAmelCase__	      =   feat_extract_norm
        lowerCAmelCase__	      =   feat_extract_activation
        lowerCAmelCase__	      =   list(_lowerCAmelCase)
        lowerCAmelCase__	      =   list(_lowerCAmelCase)
        lowerCAmelCase__	      =   list(_lowerCAmelCase)
        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_layer_norm
        lowerCAmelCase__	      =   feat_proj_dropout
        lowerCAmelCase__	      =   final_dropout
        lowerCAmelCase__	      =   layerdrop
        lowerCAmelCase__	      =   layer_norm_eps
        lowerCAmelCase__	      =   initializer_range
        lowerCAmelCase__	      =   vocab_size
        lowerCAmelCase__	      =   do_stable_layer_norm
        lowerCAmelCase__	      =   use_weighted_layer_sum
        lowerCAmelCase__	      =   classifier_proj_size

        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

        # ctc loss
        lowerCAmelCase__	      =   ctc_loss_reduction
        lowerCAmelCase__	      =   ctc_zero_infinity




 @property
 def 						__snake_case		(     self   :    int):







        '''simple docstring'''



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






import functools
import operator

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


_lowerCamelCase							=      logging.get_logger(__name__)

_lowerCamelCase							=      {
    '''facebook/hubert-base-ls960''': '''https://huggingface.co/facebook/hubert-base-ls960/resolve/main/config.json''',
    # See all Hubert models at https://huggingface.co/models?filter=hubert
}


class        UpperCAmelCase__				(							UpperCAmelCase__				):



     '''simple docstring'''
     _SCREAMING_SNAKE_CASE      :					Dict     					=    "hubert"
     def __init__(				self ,    _lowerCAmelCase=32 ,    _lowerCAmelCase=768 ,    _lowerCAmelCase=12 ,    _lowerCAmelCase=12 ,    _lowerCAmelCase=3_072 ,    _lowerCAmelCase="gelu" ,    _lowerCAmelCase=0.1 ,    _lowerCAmelCase=0.1 ,    _lowerCAmelCase=0.1 ,    _lowerCAmelCase=True ,    _lowerCAmelCase=0.0 ,    _lowerCAmelCase=0.1 ,    _lowerCAmelCase=0.1 ,    _lowerCAmelCase=0.02 ,    _lowerCAmelCase=1E-5 ,    _lowerCAmelCase="group" ,    _lowerCAmelCase="gelu" ,    _lowerCAmelCase=(512, 512, 512, 512, 512, 512, 512) ,    _lowerCAmelCase=(5, 2, 2, 2, 2, 2, 2) ,    _lowerCAmelCase=(10, 3, 3, 3, 3, 2, 2) ,    _lowerCAmelCase=False ,    _lowerCAmelCase=128 ,    _lowerCAmelCase=16 ,    _lowerCAmelCase=False ,    _lowerCAmelCase=True ,    _lowerCAmelCase=0.05 ,    _lowerCAmelCase=10 ,    _lowerCAmelCase=2 ,    _lowerCAmelCase=0.0 ,    _lowerCAmelCase=10 ,    _lowerCAmelCase=0 ,    _lowerCAmelCase="sum" ,    _lowerCAmelCase=False ,    _lowerCAmelCase=False ,    _lowerCAmelCase=256 ,    _lowerCAmelCase=0 ,    _lowerCAmelCase=1 ,    _lowerCAmelCase=2 ,    **_lowerCAmelCase ,    ):
            super().__init__(**_lowerCAmelCase ,    pad_token_id=_lowerCAmelCase ,    bos_token_id=_lowerCAmelCase ,    eos_token_id=_lowerCAmelCase	)
            a			   =hidden_size
            a			   =feat_extract_norm
            a			   =feat_extract_activation
            a			   =list(_lowerCAmelCase	)
            a			   =list(_lowerCAmelCase	)
            a			   =list(_lowerCAmelCase	)
            a			   =conv_bias
            a			   =num_conv_pos_embeddings
            a			   =num_conv_pos_embedding_groups
            a			   =len(self.conv_dim	)
            a			   =num_hidden_layers
            a			   =intermediate_size
            a			   =hidden_act
            a			   =num_attention_heads
            a			   =hidden_dropout
            a			   =attention_dropout
            a			   =activation_dropout
            a			   =feat_proj_layer_norm
            a			   =feat_proj_dropout
            a			   =final_dropout
            a			   =layerdrop
            a			   =layer_norm_eps
            a			   =initializer_range
            a			   =vocab_size
            a			   =do_stable_layer_norm
            a			   =use_weighted_layer_sum
            a			   =classifier_proj_size

            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
            a			   =apply_spec_augment
            a			   =mask_time_prob
            a			   =mask_time_length
            a			   =mask_time_min_masks
            a			   =mask_feature_prob
            a			   =mask_feature_length
            a			   =mask_feature_min_masks

            # ctc loss
            a			   =ctc_loss_reduction
            a			   =ctc_zero_infinity






     @property
     def        lowerCAmelCase__  (				self	):
            return functools.reduce(operator.mul ,    self.conv_stride ,    1	)
