



from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


lowerCamelCase__	=       {
    """configuration_electra""": ["""ELECTRA_PRETRAINED_CONFIG_ARCHIVE_MAP""", """ElectraConfig""", """ElectraOnnxConfig"""],
    """tokenization_electra""": ["""ElectraTokenizer"""],
}

try:
						if not is_tokenizers_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase__	=       ["""ElectraTokenizerFast"""]

try:
						if not is_torch_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase__	=       [
						    """ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST""",
						    """ElectraForCausalLM""",
						    """ElectraForMaskedLM""",
						    """ElectraForMultipleChoice""",
						    """ElectraForPreTraining""",
						    """ElectraForQuestionAnswering""",
						    """ElectraForSequenceClassification""",
						    """ElectraForTokenClassification""",
						    """ElectraModel""",
						    """ElectraPreTrainedModel""",
						    """load_tf_weights_in_electra""",
						]

try:
						if not is_tf_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase__	=       [
						    """TF_ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST""",
						    """TFElectraForMaskedLM""",
						    """TFElectraForMultipleChoice""",
						    """TFElectraForPreTraining""",
						    """TFElectraForQuestionAnswering""",
						    """TFElectraForSequenceClassification""",
						    """TFElectraForTokenClassification""",
						    """TFElectraModel""",
						    """TFElectraPreTrainedModel""",
						]

try:
						if not is_flax_available():
												raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
						pass
else:
						lowerCamelCase__	=       [
						    """FlaxElectraForCausalLM""",
						    """FlaxElectraForMaskedLM""",
						    """FlaxElectraForMultipleChoice""",
						    """FlaxElectraForPreTraining""",
						    """FlaxElectraForQuestionAnswering""",
						    """FlaxElectraForSequenceClassification""",
						    """FlaxElectraForTokenClassification""",
						    """FlaxElectraModel""",
						    """FlaxElectraPreTrainedModel""",
						]


if TYPE_CHECKING:
						from .configuration_electra import ELECTRA_PRETRAINED_CONFIG_ARCHIVE_MAP, ElectraConfig, ElectraOnnxConfig
						from .tokenization_electra import ElectraTokenizer

						try:
												if not is_tokenizers_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .tokenization_electra_fast import ElectraTokenizerFast

						try:
												if not is_torch_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_electra import (
												    ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST,
												    ElectraForCausalLM,
												    ElectraForMaskedLM,
												    ElectraForMultipleChoice,
												    ElectraForPreTraining,
												    ElectraForQuestionAnswering,
												    ElectraForSequenceClassification,
												    ElectraForTokenClassification,
												    ElectraModel,
												    ElectraPreTrainedModel,
												    load_tf_weights_in_electra,
												)

						try:
												if not is_tf_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_tf_electra import (
												    TF_ELECTRA_PRETRAINED_MODEL_ARCHIVE_LIST,
												    TFElectraForMaskedLM,
												    TFElectraForMultipleChoice,
												    TFElectraForPreTraining,
												    TFElectraForQuestionAnswering,
												    TFElectraForSequenceClassification,
												    TFElectraForTokenClassification,
												    TFElectraModel,
												    TFElectraPreTrainedModel,
												)

						try:
												if not is_flax_available():
																		raise OptionalDependencyNotAvailable()
						except OptionalDependencyNotAvailable:
												pass
						else:
												from .modeling_flax_electra import (
												    FlaxElectraForCausalLM,
												    FlaxElectraForMaskedLM,
												    FlaxElectraForMultipleChoice,
												    FlaxElectraForPreTraining,
												    FlaxElectraForQuestionAnswering,
												    FlaxElectraForSequenceClassification,
												    FlaxElectraForTokenClassification,
												    FlaxElectraModel,
												    FlaxElectraPreTrainedModel,
												)

else:
						import sys

						lowerCamelCase__	=       _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)




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


lowerCAmelCase__      		= logging.get_logger(__name__)

lowerCAmelCase__      		= {
    'facebook/vit-mae-base': 'https://huggingface.co/facebook/vit-mae-base/resolve/main/config.json',
    # See all ViT MAE models at https://huggingface.co/models?filter=vit-mae
}







class      lowerCAmelCase__       (				a):




     '''simple docstring'''
     __SCREAMING_SNAKE_CASE  			= "vit_mae"


     def __init__(						self ,						__lowerCamelCase=7_6_8 ,						__lowerCamelCase=1_2 ,						__lowerCamelCase=1_2 ,						__lowerCamelCase=3_0_7_2 ,						__lowerCamelCase="gelu" ,						__lowerCamelCase=0.0 ,						__lowerCamelCase=0.0 ,						__lowerCamelCase=0.0_2 ,						__lowerCamelCase=1e-12 ,						__lowerCamelCase=2_2_4 ,						__lowerCamelCase=1_6 ,						__lowerCamelCase=3 ,						__lowerCamelCase=True ,						__lowerCamelCase=1_6 ,						__lowerCamelCase=5_1_2 ,						__lowerCamelCase=8 ,						__lowerCamelCase=2_0_4_8 ,						__lowerCamelCase=0.7_5 ,						__lowerCamelCase=False ,						**__lowerCamelCase ,						)			->				int:
            super().__init__(**__lowerCamelCase)

            _A      :       int				    = hidden_size
            _A      :       List[str]				    = num_hidden_layers
            _A      :       List[Any]				    = num_attention_heads
            _A      :       Optional[Any]				    = intermediate_size
            _A      :       Optional[int]				    = hidden_act
            _A      :       List[Any]				    = hidden_dropout_prob
            _A      :       List[Any]				    = attention_probs_dropout_prob
            _A      :       Union[str, Any]				    = initializer_range
            _A      :       str				    = layer_norm_eps
            _A      :       Any				    = image_size
            _A      :       int				    = patch_size
            _A      :       int				    = num_channels
            _A      :       Dict				    = qkv_bias
            _A      :       Tuple				    = decoder_num_attention_heads
            _A      :       Tuple				    = decoder_hidden_size
            _A      :       List[str]				    = decoder_num_hidden_layers
            _A      :       Optional[Any]				    = decoder_intermediate_size
            _A      :       List[str]				    = mask_ratio
            _A      :       Union[str, Any]				    = norm_pix_loss
