
"""simple docstring"""




from __future__ import annotations

import random
import unittest

from transformers import TransfoXLConfig, is_tf_available
from transformers.testing_utils import require_tf, slow

from ...test_configuration_common import ConfigTester
from ...test_modeling_tf_common import TFModelTesterMixin, ids_tensor
from ...test_pipeline_mixin import PipelineTesterMixin


if is_tf_available():
     import tensorflow as tf

     from transformers import (
         TF_TRANSFO_XL_PRETRAINED_MODEL_ARCHIVE_LIST,
         TFTransfoXLForSequenceClassification,
         TFTransfoXLLMHeadModel,
         TFTransfoXLModel,
     )



class 			lowerCAmelCase_		:


    """simple docstring"""



    def __init__(self     , SCREAMING_SNAKE_CASE__     , )      ->	Union[str, Any]:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: Optional[Any]     =     parent
           SCREAMING_SNAKE_CASE__		: str     =     13
           SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     7
           SCREAMING_SNAKE_CASE__		: List[Any]     =     30
           SCREAMING_SNAKE_CASE__		: Any     =     self.seq_length + self.mem_len
           SCREAMING_SNAKE_CASE__		: Optional[int]     =     15
           SCREAMING_SNAKE_CASE__		: Optional[Any]     =     True
           SCREAMING_SNAKE_CASE__		: List[str]     =     True
           SCREAMING_SNAKE_CASE__		: Any     =     99
           SCREAMING_SNAKE_CASE__		: Tuple     =     [10, 50, 80]
           SCREAMING_SNAKE_CASE__		: Tuple     =     32
           SCREAMING_SNAKE_CASE__		: Dict     =     32
           SCREAMING_SNAKE_CASE__		: Dict     =     4
           SCREAMING_SNAKE_CASE__		: List[str]     =     8
           SCREAMING_SNAKE_CASE__		: Any     =     1_28
           SCREAMING_SNAKE_CASE__		: Any     =     2
           SCREAMING_SNAKE_CASE__		: str     =     2
           SCREAMING_SNAKE_CASE__		: str     =     None
           SCREAMING_SNAKE_CASE__		: int     =     1
           SCREAMING_SNAKE_CASE__		: Any     =     0
           SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     3
           SCREAMING_SNAKE_CASE__		: Tuple     =     self.vocab_size - 1
           SCREAMING_SNAKE_CASE__		: Tuple     =     0.01



    def 			__magic_name__					(self					)      ->	List[Any]:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: List[Any]     =     ids_tensor([self.batch_size, self.seq_length]     , self.vocab_size					)
           SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     ids_tensor([self.batch_size, self.seq_length]     , self.vocab_size					)

           SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     None
           if self.use_labels:
                  SCREAMING_SNAKE_CASE__		: Any     =     ids_tensor([self.batch_size, self.seq_length]     , self.vocab_size					)

           SCREAMING_SNAKE_CASE__		: int     =     TransfoXLConfig(
               vocab_size=self.vocab_size     , mem_len=self.mem_len     , clamp_len=self.clamp_len     , cutoffs=self.cutoffs     , d_model=self.hidden_size     , d_embed=self.d_embed     , n_head=self.num_attention_heads     , d_head=self.d_head     , d_inner=self.d_inner     , div_val=self.div_val     , n_layer=self.num_hidden_layers     , eos_token_id=self.eos_token_id     , pad_token_id=self.vocab_size - 1     , init_range=self.init_range     , num_labels=self.num_labels     , )

           return (config, input_ids_a, input_ids_a, lm_labels)



    def 			__magic_name__					(self					)      ->	int:



           """simple docstring"""




           random.seed(self.seed					)
           tf.random.set_seed(self.seed					)



    def 			__magic_name__					(self     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__					)      ->	Optional[int]:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: int     =     TFTransfoXLModel(SCREAMING_SNAKE_CASE__					)

           SCREAMING_SNAKE_CASE__		: List[str]     =     model(SCREAMING_SNAKE_CASE__					).to_tuple()

           SCREAMING_SNAKE_CASE__		: Any     =     {"""input_ids""": input_ids_a, """mems""": mems_a}

           SCREAMING_SNAKE_CASE__		: Tuple     =     model(SCREAMING_SNAKE_CASE__					).to_tuple()

           self.parent.assertEqual(hidden_states_a.shape     , (self.batch_size, self.seq_length, self.hidden_size)					)
           self.parent.assertEqual(hidden_states_a.shape     , (self.batch_size, self.seq_length, self.hidden_size)					)
           self.parent.assertListEqual(
               [mem.shape for mem in mems_a]     , [(self.mem_len, self.batch_size, self.hidden_size)] * self.num_hidden_layers     , )
           self.parent.assertListEqual(
               [mem.shape for mem in mems_a]     , [(self.mem_len, self.batch_size, self.hidden_size)] * self.num_hidden_layers     , )



    def 			__magic_name__					(self     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__					)      ->	Union[str, Any]:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: Any     =     TFTransfoXLLMHeadModel(SCREAMING_SNAKE_CASE__					)

           SCREAMING_SNAKE_CASE__		: Any     =     model(SCREAMING_SNAKE_CASE__					).to_tuple()

           SCREAMING_SNAKE_CASE__		: List[str]     =     {"""input_ids""": input_ids_a, """labels""": lm_labels}
           SCREAMING_SNAKE_CASE__		: Optional[Any]     =     model(SCREAMING_SNAKE_CASE__					).to_tuple()

           SCREAMING_SNAKE_CASE__		: Tuple     =     model([input_ids_a, mems_a]					).to_tuple()

           SCREAMING_SNAKE_CASE__		: List[Any]     =     {"""input_ids""": input_ids_a, """mems""": mems_a, """labels""": lm_labels}

           SCREAMING_SNAKE_CASE__		: List[str]     =     model(SCREAMING_SNAKE_CASE__					).to_tuple()

           self.parent.assertEqual(lm_logits_a.shape     , (self.batch_size, self.seq_length, self.vocab_size)					)
           self.parent.assertListEqual(
               [mem.shape for mem in mems_a]     , [(self.mem_len, self.batch_size, self.hidden_size)] * self.num_hidden_layers     , )

           self.parent.assertEqual(lm_logits_a.shape     , (self.batch_size, self.seq_length, self.vocab_size)					)
           self.parent.assertListEqual(
               [mem.shape for mem in mems_a]     , [(self.mem_len, self.batch_size, self.hidden_size)] * self.num_hidden_layers     , )



    def 			__magic_name__					(self     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__					)      ->	List[Any]:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: str     =     TFTransfoXLForSequenceClassification(SCREAMING_SNAKE_CASE__					)
           SCREAMING_SNAKE_CASE__		: Dict     =     model(SCREAMING_SNAKE_CASE__					)
           self.parent.assertEqual(result.logits.shape     , (self.batch_size, self.num_labels)					)



    def 			__magic_name__					(self					)      ->	str:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     self.prepare_config_and_inputs()
           (SCREAMING_SNAKE_CASE__)		: Union[str, Any]     =     config_and_inputs
           SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     {"""input_ids""": input_ids_a}
           return config, inputs_dict






@require_tf
class 			lowerCAmelCase_		(a__				,      a__				,      unittest.TestCase						):


    """simple docstring"""



    __UpperCamelCase   :		Any       =     (
        (TFTransfoXLModel, TFTransfoXLLMHeadModel, TFTransfoXLForSequenceClassification) if is_tf_available() else ()
    )
    __UpperCamelCase   :		Any       =     () if is_tf_available() else ()
    __UpperCamelCase   :		str       =     (
        {
            '''feature-extraction''': TFTransfoXLModel,
            '''text-classification''': TFTransfoXLForSequenceClassification,
            '''text-generation''': TFTransfoXLLMHeadModel,
            '''zero-shot''': TFTransfoXLForSequenceClassification,
        }
        if is_tf_available()
        else {}
    )
    # TODO: add this test when TFTransfoXLLMHead has a linear output layer implemented
    __UpperCamelCase   :		Optional[int]       =     False
    __UpperCamelCase   :		Any       =     False
    __UpperCamelCase   :		Any       =     False
    __UpperCamelCase   :		Union[str, Any]       =     False



    def 			__magic_name__					(self     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__     , SCREAMING_SNAKE_CASE__					)      ->	Union[str, Any]:



           """simple docstring"""




           if pipeline_test_casse_name == "TextGenerationPipelineTests":
                  # Get `ValueError: AttributeError: 'NoneType' object has no attribute 'new_ones'` or `AssertionError`.
                  # `TransfoXLConfig` was never used in pipeline tests: cannot create a simple
                  # tokenizer.
                  return True

           return False



    def 			__magic_name__					(self					)      ->	List[Any]:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: Dict     =     TFTransfoXLModelTester(self					)
           SCREAMING_SNAKE_CASE__		: List[str]     =     ConfigTester(self     , config_class=SCREAMING_SNAKE_CASE__     , d_embed=37					)



    def 			__magic_name__					(self					)      ->	List[Any]:



           """simple docstring"""




           self.config_tester.run_common_tests()



    def 			__magic_name__					(self					)      ->	List[Any]:



           """simple docstring"""




           self.model_tester.set_seed()
           SCREAMING_SNAKE_CASE__		: Tuple     =     self.model_tester.prepare_config_and_inputs()
           self.model_tester.create_and_check_transfo_xl_model(*SCREAMING_SNAKE_CASE__					)



    def 			__magic_name__					(self					)      ->	Any:



           """simple docstring"""




           self.model_tester.set_seed()
           SCREAMING_SNAKE_CASE__		: Dict     =     self.model_tester.prepare_config_and_inputs()
           self.model_tester.create_and_check_transfo_xl_lm_head(*SCREAMING_SNAKE_CASE__					)



    def 			__magic_name__					(self					)      ->	Union[str, Any]:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: str     =     self.model_tester.prepare_config_and_inputs()
           self.model_tester.create_and_check_transfo_xl_for_sequence_classification(*SCREAMING_SNAKE_CASE__					)



    def 			__magic_name__					(self					)      ->	Tuple:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: int     =     self.model_tester.prepare_config_and_inputs_for_common()
           SCREAMING_SNAKE_CASE__		: Dict     =     [TFTransfoXLForSequenceClassification]

           for model_class in self.all_model_classes:
                  SCREAMING_SNAKE_CASE__		: List[Any]     =     model_class(SCREAMING_SNAKE_CASE__					)
                  assert isinstance(model.get_input_embeddings()     , tf.keras.layers.Layer					)
                  if model_class in list_other_models_with_output_ebd:
                         SCREAMING_SNAKE_CASE__		: int     =     model.get_output_embeddings()
                         assert isinstance(SCREAMING_SNAKE_CASE__     , tf.keras.layers.Layer					)
                         SCREAMING_SNAKE_CASE__		: str     =     model.get_bias()
                         assert name is None
                  else:
                         SCREAMING_SNAKE_CASE__		: int     =     model.get_output_embeddings()
                         assert x is None
                         SCREAMING_SNAKE_CASE__		: List[Any]     =     model.get_bias()
                         assert name is None



    def 			__magic_name__					(self					)      ->	Optional[int]:



           """simple docstring"""




           pass



    @slow
    def 			__magic_name__					(self					)      ->	str:



           """simple docstring"""




           for model_name in TF_TRANSFO_XL_PRETRAINED_MODEL_ARCHIVE_LIST[:1]:
                  SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     TFTransfoXLModel.from_pretrained(SCREAMING_SNAKE_CASE__					)
                  self.assertIsNotNone(SCREAMING_SNAKE_CASE__					)



    @unittest.skip(reason="""This model doesn't play well with fit() due to not returning a single loss."""					)
    def 			__magic_name__					(self					)      ->	str:



           """simple docstring"""




           pass






@require_tf
class 			lowerCAmelCase_		(unittest.TestCase						):


    """simple docstring"""



    @unittest.skip("""Skip test until #12651 is resolved."""					)
    @slow
    def 			__magic_name__					(self					)      ->	Tuple:



           """simple docstring"""




           SCREAMING_SNAKE_CASE__		: Optional[Any]     =     TFTransfoXLLMHeadModel.from_pretrained("""transfo-xl-wt103"""					)
           # fmt: off
           SCREAMING_SNAKE_CASE__		: Dict     =     tf.convert_to_tensor([[33,12_97,2,1,10_09,4,11_09,1_17_39,47_62,3_58,5,25,2_45,22,17_06,17,2_00_98,5,32_15,21,37,11_10,3,13,10_41,4,24,6_03,4_90,2,7_14_77,2_00_98,10_44_47,2,2_09_61,1,26_04,4,1,3_29,3,62_24,8_31,1_60_02,2,8,6_03,7_89_67,2_95_46,23,8_03,20,25,4_16,5,8,2_32,4,2_77,6,18_55,46_01,3,2_95_46,54,8,36_09,5,5_72_11,49,4,1,2_77,18,8,17_55,1_56_91,3,3_41,25,4_16,6_93,4_25_73,71,17,4_01,94,31,1_79_19,2,2_95_46,78_73,18,1,4_35,23,1_10_11,7_55,5,51_67,3,79_83,98,84,2,2_95_46,32_67,8,36_09,4,1,48_65,10_75,2,60_87,71,6,3_46,8,58_54,3,2_95_46,8_24,14_00,18_68,2,19,1_60,2,3_11,8,54_96,2,2_09_20,17,25,1_50_97,3,24,24,0]]     , dtype=tf.intaa					)  # noqa: E231
           # fmt: on
           #  In 1991 , the remains of Russian Tsar Nicholas II and his family
           #  ( except for Alexei and Maria ) are discovered .
           #  The voice of Nicholas's young son , Tsarevich Alexei Nikolaevich , narrates the
           #  remainder of the story . 1883 Western Siberia ,
           #  a young Grigori Rasputin is asked by his father and a group of men to perform magic .
           #  Rasputin has a vision and denounces one of the men as a horse thief . Although his
           #  father initially slaps him for making such an accusation , Rasputin watches as the
           #  man is chased outside and beaten . Twenty years later , Rasputin sees a vision of
           #  the Virgin Mary , prompting him to become a priest . Rasputin quickly becomes famous ,
           #  with people , even a bishop , begging for his blessing . <eod> </s> <eos>

           # fmt: off
           SCREAMING_SNAKE_CASE__		: Any     =     [33,12_97,2,1,10_09,4,11_09,1_17_39,47_62,3_58,5,25,2_45,22,17_06,17,2_00_98,5,32_15,21,37,11_10,3,13,10_41,4,24,6_03,4_90,2,7_14_77,2_00_98,10_44_47,2,2_09_61,1,26_04,4,1,3_29,3,62_24,8_31,1_60_02,2,8,6_03,7_89_67,2_95_46,23,8_03,20,25,4_16,5,8,2_32,4,2_77,6,18_55,46_01,3,2_95_46,54,8,36_09,5,5_72_11,49,4,1,2_77,18,8,17_55,1_56_91,3,3_41,25,4_16,6_93,4_25_73,71,17,4_01,94,31,1_79_19,2,2_95_46,78_73,18,1,4_35,23,1_10_11,7_55,5,51_67,3,79_83,98,84,2,2_95_46,32_67,8,36_09,4,1,48_65,10_75,2,60_87,71,6,3_46,8,58_54,3,2_95_46,8_24,14_00,18_68,2,19,1_60,2,3_11,8,54_96,2,2_09_20,17,25,1_50_97,3,24,24,0,33,1,18_57,2,1,10_09,4,11_09,1_17_39,47_62,3_58,5,25,2_45,28,11_10,3,13,10_41,4,24,6_03,4_90,2,7_14_77,2_00_98,10_44_47,2,2_09_61,1,26_04,4,1,3_29,3,0]  # noqa: E231
           # fmt: on
           #  In 1991, the remains of Russian Tsar Nicholas II and his family (
           #  except for Alexei and Maria ) are discovered. The voice of young son,
           #  Tsarevich Alexei Nikolaevich, narrates the remainder of the story.
           #  1883 Western Siberia, a young Grigori Rasputin is asked by his father
           #  and a group of men to perform magic. Rasputin has a vision and
           #  denounces one of the men as a horse thief. Although his father initially
           #  slaps him for making such an accusation, Rasputin watches as the man
           #  is chased outside and beaten. Twenty years later, Rasputin sees a vision
           #  of the Virgin Mary, prompting him to become a priest.
           #  Rasputin quickly becomes famous, with people, even a bishop, begging for
           #  his blessing. <unk> <unk> <eos> In the 1990s, the remains of Russian Tsar
           # Nicholas II and his family were discovered. The voice of <unk> young son,
           # Tsarevich Alexei Nikolaevich, narrates the remainder of the story.<eos>

           SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     model.generate(SCREAMING_SNAKE_CASE__     , max_length=2_00     , do_sample=SCREAMING_SNAKE_CASE__					)
           self.assertListEqual(output_ids[0].numpy().tolist()     , SCREAMING_SNAKE_CASE__					)






"""simple docstring"""




import functools
import operator

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


UpperCAmelCase__   :					str												=				logging.get_logger(__name__)

UpperCAmelCase__   :					Dict												=				{
    'microsoft/unispeech-large-1500h-cv': (
        'https://huggingface.co/microsoft/unispeech-large-1500h-cv/resolve/main/config.json'
    ),
    # See all UniSpeech models at https://huggingface.co/models?filter=unispeech
}



class 			lowerCAmelCase_		(a__						):


				"""simple docstring"""



				__UpperCamelCase   :		List[str]       =     '''unispeech'''



				def __init__(self     , SCREAMING_SNAKE_CASE__=32     , SCREAMING_SNAKE_CASE__=7_68     , SCREAMING_SNAKE_CASE__=12     , SCREAMING_SNAKE_CASE__=12     , SCREAMING_SNAKE_CASE__=30_72     , SCREAMING_SNAKE_CASE__="gelu"     , SCREAMING_SNAKE_CASE__=0.1     , SCREAMING_SNAKE_CASE__=0.1     , SCREAMING_SNAKE_CASE__=0.1     , SCREAMING_SNAKE_CASE__=0.0     , SCREAMING_SNAKE_CASE__=0.0     , SCREAMING_SNAKE_CASE__=0.1     , SCREAMING_SNAKE_CASE__=0.1     , SCREAMING_SNAKE_CASE__=0.02     , SCREAMING_SNAKE_CASE__=1E-5     , SCREAMING_SNAKE_CASE__="group"     , SCREAMING_SNAKE_CASE__="gelu"     , SCREAMING_SNAKE_CASE__=(5_12, 5_12, 5_12, 5_12, 5_12, 5_12, 5_12)     , SCREAMING_SNAKE_CASE__=(5, 2, 2, 2, 2, 2, 2)     , SCREAMING_SNAKE_CASE__=(10, 3, 3, 3, 3, 2, 2)     , SCREAMING_SNAKE_CASE__=False     , SCREAMING_SNAKE_CASE__=1_28     , SCREAMING_SNAKE_CASE__=16     , SCREAMING_SNAKE_CASE__=False     , SCREAMING_SNAKE_CASE__=True     , SCREAMING_SNAKE_CASE__=0.05     , SCREAMING_SNAKE_CASE__=10     , SCREAMING_SNAKE_CASE__=2     , SCREAMING_SNAKE_CASE__=0.0     , SCREAMING_SNAKE_CASE__=10     , SCREAMING_SNAKE_CASE__=0     , SCREAMING_SNAKE_CASE__=3_20     , SCREAMING_SNAKE_CASE__=2     , SCREAMING_SNAKE_CASE__=0.1     , SCREAMING_SNAKE_CASE__=1_00     , SCREAMING_SNAKE_CASE__=2_56     , SCREAMING_SNAKE_CASE__=2_56     , SCREAMING_SNAKE_CASE__=0.1     , SCREAMING_SNAKE_CASE__="mean"     , SCREAMING_SNAKE_CASE__=False     , SCREAMING_SNAKE_CASE__=False     , SCREAMING_SNAKE_CASE__=2_56     , SCREAMING_SNAKE_CASE__=80     , SCREAMING_SNAKE_CASE__=0     , SCREAMING_SNAKE_CASE__=1     , SCREAMING_SNAKE_CASE__=2     , SCREAMING_SNAKE_CASE__=0.5     , **SCREAMING_SNAKE_CASE__     , )      ->	List[Any]:



											"""simple docstring"""




											super().__init__(**SCREAMING_SNAKE_CASE__     , pad_token_id=SCREAMING_SNAKE_CASE__     , bos_token_id=SCREAMING_SNAKE_CASE__     , eos_token_id=SCREAMING_SNAKE_CASE__					)
											SCREAMING_SNAKE_CASE__		: Optional[Any]     =     hidden_size
											SCREAMING_SNAKE_CASE__		: Optional[Any]     =     feat_extract_norm
											SCREAMING_SNAKE_CASE__		: Any     =     feat_extract_activation
											SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     list(SCREAMING_SNAKE_CASE__					)
											SCREAMING_SNAKE_CASE__		: str     =     list(SCREAMING_SNAKE_CASE__					)
											SCREAMING_SNAKE_CASE__		: Tuple     =     list(SCREAMING_SNAKE_CASE__					)
											SCREAMING_SNAKE_CASE__		: List[str]     =     conv_bias
											SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     num_conv_pos_embeddings
											SCREAMING_SNAKE_CASE__		: Optional[Any]     =     num_conv_pos_embedding_groups
											SCREAMING_SNAKE_CASE__		: Dict     =     len(self.conv_dim					)
											SCREAMING_SNAKE_CASE__		: List[str]     =     num_hidden_layers
											SCREAMING_SNAKE_CASE__		: str     =     intermediate_size
											SCREAMING_SNAKE_CASE__		: Optional[int]     =     hidden_act
											SCREAMING_SNAKE_CASE__		: Any     =     num_attention_heads
											SCREAMING_SNAKE_CASE__		: Dict     =     hidden_dropout
											SCREAMING_SNAKE_CASE__		: List[str]     =     attention_dropout
											SCREAMING_SNAKE_CASE__		: Any     =     activation_dropout
											SCREAMING_SNAKE_CASE__		: int     =     feat_proj_dropout
											SCREAMING_SNAKE_CASE__		: List[Any]     =     final_dropout
											SCREAMING_SNAKE_CASE__		: str     =     layerdrop
											SCREAMING_SNAKE_CASE__		: Optional[int]     =     layer_norm_eps
											SCREAMING_SNAKE_CASE__		: Dict     =     initializer_range
											SCREAMING_SNAKE_CASE__		: Dict     =     num_ctc_classes
											SCREAMING_SNAKE_CASE__		: List[Any]     =     vocab_size
											SCREAMING_SNAKE_CASE__		: str     =     do_stable_layer_norm
											SCREAMING_SNAKE_CASE__		: Dict     =     use_weighted_layer_sum
											SCREAMING_SNAKE_CASE__		: Union[str, Any]     =     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
											SCREAMING_SNAKE_CASE__		: Tuple     =     apply_spec_augment
											SCREAMING_SNAKE_CASE__		: Optional[int]     =     mask_time_prob
											SCREAMING_SNAKE_CASE__		: Optional[Any]     =     mask_time_length
											SCREAMING_SNAKE_CASE__		: List[str]     =     mask_time_min_masks
											SCREAMING_SNAKE_CASE__		: Tuple     =     mask_feature_prob
											SCREAMING_SNAKE_CASE__		: Any     =     mask_feature_length
											SCREAMING_SNAKE_CASE__		: int     =     mask_feature_min_masks

											# parameters for pretraining with codevector quantized representations
											SCREAMING_SNAKE_CASE__		: Dict     =     num_codevectors_per_group
											SCREAMING_SNAKE_CASE__		: Any     =     num_codevector_groups
											SCREAMING_SNAKE_CASE__		: str     =     contrastive_logits_temperature
											SCREAMING_SNAKE_CASE__		: str     =     feat_quantizer_dropout
											SCREAMING_SNAKE_CASE__		: Optional[Any]     =     num_negatives
											SCREAMING_SNAKE_CASE__		: Tuple     =     codevector_dim
											SCREAMING_SNAKE_CASE__		: List[Any]     =     proj_codevector_dim
											SCREAMING_SNAKE_CASE__		: Tuple     =     diversity_loss_weight

											# ctc loss
											SCREAMING_SNAKE_CASE__		: int     =     ctc_loss_reduction
											SCREAMING_SNAKE_CASE__		: str     =     ctc_zero_infinity

											# pretraining loss
											SCREAMING_SNAKE_CASE__		: List[str]     =     replace_prob



				@property
				def 			__magic_name__					(self					)      ->	Tuple:



											"""simple docstring"""




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




