
import functools
import operator

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


A		: Tuple								=     logging.get_logger(__name__)

A		: Union[str, Any]								=     {
    '''facebook/wav2vec2-base-960h''': '''https://huggingface.co/facebook/wav2vec2-base-960h/resolve/main/config.json''',
    # See all Wav2Vec2 models at https://huggingface.co/models?filter=wav2vec2
}



class    a_ (			_a    ):
			a	:			Tuple					   =							'''wav2vec2'''






			def __init__(      self				,			__UpperCamelCase=32				,			__UpperCamelCase=768				,			__UpperCamelCase=12				,			__UpperCamelCase=12				,			__UpperCamelCase=3_072				,			__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="sum"				,			__UpperCamelCase=False				,			__UpperCamelCase=False				,			__UpperCamelCase=256				,			__UpperCamelCase=(512, 512, 512, 512, 1_500)				,			__UpperCamelCase=(5, 3, 3, 1, 1)				,			__UpperCamelCase=(1, 2, 3, 1, 1)				,			__UpperCamelCase=512				,			__UpperCamelCase=0				,			__UpperCamelCase=1				,			__UpperCamelCase=2				,			__UpperCamelCase=False				,			__UpperCamelCase=3				,			__UpperCamelCase=2				,			__UpperCamelCase=3				,			__UpperCamelCase=None				,			__UpperCamelCase=None				,			**__UpperCamelCase				,			):
									super().__init__(**__UpperCamelCase				,			pad_token_id=__UpperCamelCase				,			bos_token_id=__UpperCamelCase				,			eos_token_id=__UpperCamelCase  )
									_lowercase					       =					hidden_size
									_lowercase					       =					feat_extract_norm
									_lowercase					       =					feat_extract_activation
									_lowercase					       =					list(__UpperCamelCase  )
									_lowercase					       =					list(__UpperCamelCase  )
									_lowercase					       =					list(__UpperCamelCase  )
									_lowercase					       =					conv_bias
									_lowercase					       =					num_conv_pos_embeddings
									_lowercase					       =					num_conv_pos_embedding_groups
									_lowercase					       =					len(self.conv_dim  )
									_lowercase					       =					num_hidden_layers
									_lowercase					       =					intermediate_size
									_lowercase					       =					hidden_act
									_lowercase					       =					num_attention_heads
									_lowercase					       =					hidden_dropout
									_lowercase					       =					attention_dropout
									_lowercase					       =					activation_dropout
									_lowercase					       =					feat_proj_dropout
									_lowercase					       =					final_dropout
									_lowercase					       =					layerdrop
									_lowercase					       =					layer_norm_eps
									_lowercase					       =					initializer_range
									_lowercase					       =					vocab_size
									_lowercase					       =					do_stable_layer_norm
									_lowercase					       =					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
									_lowercase					       =					apply_spec_augment
									_lowercase					       =					mask_time_prob
									_lowercase					       =					mask_time_length
									_lowercase					       =					mask_time_min_masks
									_lowercase					       =					mask_feature_prob
									_lowercase					       =					mask_feature_length
									_lowercase					       =					mask_feature_min_masks

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

									# ctc loss
									_lowercase					       =					ctc_loss_reduction
									_lowercase					       =					ctc_zero_infinity

									# adapter
									_lowercase					       =					add_adapter
									_lowercase					       =					adapter_kernel_size
									_lowercase					       =					adapter_stride
									_lowercase					       =					num_adapter_layers
									_lowercase					       =					output_hidden_size or hidden_size
									_lowercase					       =					adapter_attn_dim

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

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






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

from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_torch_available


A		: Dict								=     {
    '''configuration_x_clip''': [
        '''XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP''',
        '''XCLIPConfig''',
        '''XCLIPTextConfig''',
        '''XCLIPVisionConfig''',
    ],
    '''processing_x_clip''': ['''XCLIPProcessor'''],
}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		A		: Optional[Any]								=     [
		    '''XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''XCLIPModel''',
		    '''XCLIPPreTrainedModel''',
		    '''XCLIPTextModel''',
		    '''XCLIPVisionModel''',
		]

if TYPE_CHECKING:
		from .configuration_x_clip import (
		    XCLIP_PRETRAINED_CONFIG_ARCHIVE_MAP,
		    XCLIPConfig,
		    XCLIPTextConfig,
		    XCLIPVisionConfig,
		)
		from .processing_x_clip import XCLIPProcessor

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_x_clip import (
				    XCLIP_PRETRAINED_MODEL_ARCHIVE_LIST,
				    XCLIPModel,
				    XCLIPPreTrainedModel,
				    XCLIPTextModel,
				    XCLIPVisionModel,
				)

else:
		import sys

		A		: List[str]								=     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)