
from ...configuration_utils import PretrainedConfig
from ...utils import logging
from ...utils.backbone_utils import BackboneConfigMixin, get_aligned_output_features_output_indices


__a         =   logging.get_logger(__name__)

__a         =   {
    'shi-labs/nat-mini-in1k-224': 'https://huggingface.co/shi-labs/nat-mini-in1k-224/resolve/main/config.json',
    # See all Nat models at https://huggingface.co/models?filter=nat
}
class 					lowercase__(							UpperCAmelCase					,		UpperCAmelCase				):



	"""simple docstring"""




	a     :List[Any]       	=      'nat'

	a     :List[str]       	=      {
	    'num_attention_heads': 'num_heads',
	    'num_hidden_layers': 'num_layers',
	}
	def __init__(			self    :     List[Any]			,				SCREAMING_SNAKE_CASE_    :     int=4			,				SCREAMING_SNAKE_CASE_    :     Optional[int]=3			,				SCREAMING_SNAKE_CASE_    :     int=6_4			,				SCREAMING_SNAKE_CASE_    :     Dict=[3, 4, 6, 5]			,				SCREAMING_SNAKE_CASE_    :     List[str]=[2, 4, 8, 1_6]			,				SCREAMING_SNAKE_CASE_    :     List[str]=7			,				SCREAMING_SNAKE_CASE_    :     List[Any]=3.0			,				SCREAMING_SNAKE_CASE_    :     Optional[int]=True			,				SCREAMING_SNAKE_CASE_    :     List[Any]=0.0			,				SCREAMING_SNAKE_CASE_    :     Any=0.0			,				SCREAMING_SNAKE_CASE_    :     str=0.1			,				SCREAMING_SNAKE_CASE_    :     Any="gelu"			,				SCREAMING_SNAKE_CASE_    :     Tuple=0.02			,				SCREAMING_SNAKE_CASE_    :     Optional[int]=1e-5			,				SCREAMING_SNAKE_CASE_    :     Tuple=0.0			,				SCREAMING_SNAKE_CASE_    :     str=None			,				SCREAMING_SNAKE_CASE_    :     Optional[int]=None			,				**SCREAMING_SNAKE_CASE_    :     Optional[int]			,				)			->	Optional[Any]:
					super().__init__(**SCREAMING_SNAKE_CASE_			)

					lowercase_	    =   patch_size
					lowercase_	    =   num_channels
					lowercase_	    =   embed_dim
					lowercase_	    =   depths
					lowercase_	    =   len(SCREAMING_SNAKE_CASE_			)
					lowercase_	    =   num_heads
					lowercase_	    =   kernel_size
					lowercase_	    =   mlp_ratio
					lowercase_	    =   qkv_bias
					lowercase_	    =   hidden_dropout_prob
					lowercase_	    =   attention_probs_dropout_prob
					lowercase_	    =   drop_path_rate
					lowercase_	    =   hidden_act
					lowercase_	    =   layer_norm_eps
					lowercase_	    =   initializer_range
					# we set the hidden_size attribute in order to make Nat work with VisionEncoderDecoderModel
					# this indicates the channel dimension after the last stage of the model
					lowercase_	    =   int(embed_dim * 2 ** (len(SCREAMING_SNAKE_CASE_			) - 1)			)
					lowercase_	    =   layer_scale_init_value
					lowercase_	    =   ['''stem'''] + [f'''stage{idx}''' for idx in range(1			,				len(SCREAMING_SNAKE_CASE_			) + 1			)]
					lowercase_    ,      lowercase_	    =   get_aligned_output_features_output_indices(
					    out_features=SCREAMING_SNAKE_CASE_			,				out_indices=SCREAMING_SNAKE_CASE_			,				stage_names=self.stage_names			)






from collections import OrderedDict
from typing import Mapping

from ...configuration_utils import PretrainedConfig
from ...onnx import OnnxConfig
from ...utils import logging


__a         =   logging.get_logger(__name__)

__a         =   {
    'xlm-mlm-en-2048': 'https://huggingface.co/xlm-mlm-en-2048/resolve/main/config.json',
    'xlm-mlm-ende-1024': 'https://huggingface.co/xlm-mlm-ende-1024/resolve/main/config.json',
    'xlm-mlm-enfr-1024': 'https://huggingface.co/xlm-mlm-enfr-1024/resolve/main/config.json',
    'xlm-mlm-enro-1024': 'https://huggingface.co/xlm-mlm-enro-1024/resolve/main/config.json',
    'xlm-mlm-tlm-xnli15-1024': 'https://huggingface.co/xlm-mlm-tlm-xnli15-1024/resolve/main/config.json',
    'xlm-mlm-xnli15-1024': 'https://huggingface.co/xlm-mlm-xnli15-1024/resolve/main/config.json',
    'xlm-clm-enfr-1024': 'https://huggingface.co/xlm-clm-enfr-1024/resolve/main/config.json',
    'xlm-clm-ende-1024': 'https://huggingface.co/xlm-clm-ende-1024/resolve/main/config.json',
    'xlm-mlm-17-1280': 'https://huggingface.co/xlm-mlm-17-1280/resolve/main/config.json',
    'xlm-mlm-100-1280': 'https://huggingface.co/xlm-mlm-100-1280/resolve/main/config.json',
}
class 					lowercase__(							UpperCAmelCase				):



	"""simple docstring"""




	a     :List[Any]       	=      'xlm'
	a     :Dict       	=      {
	    'hidden_size': 'emb_dim',
	    'num_attention_heads': 'n_heads',
	    'num_hidden_layers': 'n_layers',
	    'n_words': 'vocab_size',  # For backward compatibility
	}
	def __init__(			self    :     List[Any]			,				SCREAMING_SNAKE_CASE_    :     Dict=3_0_1_4_5			,				SCREAMING_SNAKE_CASE_    :     Dict=2_0_4_8			,				SCREAMING_SNAKE_CASE_    :     Optional[int]=1_2			,				SCREAMING_SNAKE_CASE_    :     Optional[int]=1_6			,				SCREAMING_SNAKE_CASE_    :     Dict=0.1			,				SCREAMING_SNAKE_CASE_    :     str=0.1			,				SCREAMING_SNAKE_CASE_    :     Any=True			,				SCREAMING_SNAKE_CASE_    :     Any=False			,				SCREAMING_SNAKE_CASE_    :     str=False			,				SCREAMING_SNAKE_CASE_    :     Optional[Any]=False			,				SCREAMING_SNAKE_CASE_    :     Optional[Any]=1			,				SCREAMING_SNAKE_CASE_    :     Dict=True			,				SCREAMING_SNAKE_CASE_    :     Dict=5_1_2			,				SCREAMING_SNAKE_CASE_    :     Optional[int]=2_0_4_8**-0.5			,				SCREAMING_SNAKE_CASE_    :     Dict=1e-12			,				SCREAMING_SNAKE_CASE_    :     Any=0.02			,				SCREAMING_SNAKE_CASE_    :     str=0			,				SCREAMING_SNAKE_CASE_    :     List[Any]=1			,				SCREAMING_SNAKE_CASE_    :     List[Any]=2			,				SCREAMING_SNAKE_CASE_    :     int=3			,				SCREAMING_SNAKE_CASE_    :     Dict=5			,				SCREAMING_SNAKE_CASE_    :     int=True			,				SCREAMING_SNAKE_CASE_    :     List[Any]="first"			,				SCREAMING_SNAKE_CASE_    :     Any=True			,				SCREAMING_SNAKE_CASE_    :     List[Any]=None			,				SCREAMING_SNAKE_CASE_    :     str=True			,				SCREAMING_SNAKE_CASE_    :     Union[str, Any]=0.1			,				SCREAMING_SNAKE_CASE_    :     Optional[Any]=5			,				SCREAMING_SNAKE_CASE_    :     List[str]=5			,				SCREAMING_SNAKE_CASE_    :     Any=0			,				SCREAMING_SNAKE_CASE_    :     str=0			,				SCREAMING_SNAKE_CASE_    :     Optional[Any]=2			,				SCREAMING_SNAKE_CASE_    :     Tuple=0			,				**SCREAMING_SNAKE_CASE_    :     Dict			,				)			->	List[Any]:
					lowercase_	    =   vocab_size
					lowercase_	    =   emb_dim
					lowercase_	    =   n_layers
					lowercase_	    =   n_heads
					lowercase_	    =   dropout
					lowercase_	    =   attention_dropout
					lowercase_	    =   gelu_activation
					lowercase_	    =   sinusoidal_embeddings
					lowercase_	    =   causal
					lowercase_	    =   asm
					lowercase_	    =   n_langs
					lowercase_	    =   use_lang_emb
					lowercase_	    =   layer_norm_eps
					lowercase_	    =   bos_index
					lowercase_	    =   eos_index
					lowercase_	    =   pad_index
					lowercase_	    =   unk_index
					lowercase_	    =   mask_index
					lowercase_	    =   is_encoder
					lowercase_	    =   max_position_embeddings
					lowercase_	    =   embed_init_std
					lowercase_	    =   init_std
					lowercase_	    =   summary_type
					lowercase_	    =   summary_use_proj
					lowercase_	    =   summary_activation
					lowercase_	    =   summary_proj_to_labels
					lowercase_	    =   summary_first_dropout
					lowercase_	    =   start_n_top
					lowercase_	    =   end_n_top
					lowercase_	    =   mask_token_id
					lowercase_	    =   lang_id

					if "n_words" in kwargs:
									lowercase_	    =   kwargs['''n_words''']

					super().__init__(pad_token_id=SCREAMING_SNAKE_CASE_			,				bos_token_id=SCREAMING_SNAKE_CASE_			,				**SCREAMING_SNAKE_CASE_			)

class 					lowercase__(							UpperCAmelCase				):



	"""simple docstring"""




	@property
	def 		_lowercase    (			self    :     int			)			->	Mapping[str, Mapping[int, str]]:
					if self.task == "multiple-choice":
									lowercase_	    =   {0: '''batch''', 1: '''choice''', 2: '''sequence'''}
					else:
									lowercase_	    =   {0: '''batch''', 1: '''sequence'''}
					return OrderedDict(
					    [
					        ('''input_ids''', dynamic_axis),
					        ('''attention_mask''', dynamic_axis),
					        ('''token_type_ids''', dynamic_axis),
					    ]			)




