





"""simple docstring"""






from collections import OrderedDict
from typing import Mapping

from packaging import version

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


lowerCAmelCase_      =				logging.get_logger(__name__)

lowerCAmelCase_      =				{
    '''apple/mobilevit-small''': '''https://huggingface.co/apple/mobilevit-small/resolve/main/config.json''',
    '''apple/mobilevit-x-small''': '''https://huggingface.co/apple/mobilevit-x-small/resolve/main/config.json''',
    '''apple/mobilevit-xx-small''': '''https://huggingface.co/apple/mobilevit-xx-small/resolve/main/config.json''',
    '''apple/deeplabv3-mobilevit-small''': (
        '''https://huggingface.co/apple/deeplabv3-mobilevit-small/resolve/main/config.json'''
    ),
    '''apple/deeplabv3-mobilevit-x-small''': (
        '''https://huggingface.co/apple/deeplabv3-mobilevit-x-small/resolve/main/config.json'''
    ),
    '''apple/deeplabv3-mobilevit-xx-small''': (
        '''https://huggingface.co/apple/deeplabv3-mobilevit-xx-small/resolve/main/config.json'''
    ),
    # See all MobileViT models at https://huggingface.co/models?filter=mobilevit
}



class 						lowerCAmelCase       (   snake_case				):
       lowerCAmelCase__    			=	"""mobilevit"""






       def __init__( self     ,	a__=3     ,	a__=2_56     ,	a__=2     ,	a__=[1_44, 1_92, 2_40]     ,	a__=[16, 32, 64, 96, 1_28, 1_60, 6_40]     ,	a__=4     ,	a__=2.0     ,	a__=4.0     ,	a__="silu"     ,	a__=3     ,	a__=32     ,	a__=0.1     ,	a__=0.0     ,	a__=0.1     ,	a__=0.02     ,	a__=1E-5     ,	a__=True     ,	a__=2_56     ,	a__=[6, 12, 18]     ,	a__=0.1     ,	a__=2_55     ,	**a__     ,	):
              super().__init__(**a__  )

              _UpperCAmelCase			     =  num_channels
              _UpperCAmelCase			     =  image_size
              _UpperCAmelCase			     =  patch_size
              _UpperCAmelCase			     =  hidden_sizes
              _UpperCAmelCase			     =  neck_hidden_sizes
              _UpperCAmelCase			     =  num_attention_heads
              _UpperCAmelCase			     =  mlp_ratio
              _UpperCAmelCase			     =  expand_ratio
              _UpperCAmelCase			     =  hidden_act
              _UpperCAmelCase			     =  conv_kernel_size
              _UpperCAmelCase			     =  output_stride
              _UpperCAmelCase			     =  hidden_dropout_prob
              _UpperCAmelCase			     =  attention_probs_dropout_prob
              _UpperCAmelCase			     =  classifier_dropout_prob
              _UpperCAmelCase			     =  initializer_range
              _UpperCAmelCase			     =  layer_norm_eps
              _UpperCAmelCase			     =  qkv_bias

              # decode head attributes for semantic segmentation
              _UpperCAmelCase			     =  aspp_out_channels
              _UpperCAmelCase			     =  atrous_rates
              _UpperCAmelCase			     =  aspp_dropout_prob
              _UpperCAmelCase			     =  semantic_loss_ignore_index



class 						lowerCAmelCase       (   snake_case				):
       lowerCAmelCase__    			=	version.parse("""1.11"""				)






       @property
       def 				__A			( self  ):
              return OrderedDict([('pixel_values', {0: 'batch', 1: 'num_channels', 2: 'height', 3: 'width'})]  )






       @property
       def 				__A			( self  ):
              if self.task == "image-classification":
                     return OrderedDict([('logits', {0: 'batch'})]  )
              else:
                     return OrderedDict([('last_hidden_state', {0: 'batch'}), ('pooler_output', {0: 'batch'})]  )






       @property
       def 				__A			( self  ):
              return 1E-4













"""simple docstring"""






from typing import Callable, Optional, Union

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


lowerCAmelCase_      =				logging.get_logger(__name__)

lowerCAmelCase_      =				{
    '''microsoft/prophetnet-large-uncased''': (
        '''https://huggingface.co/microsoft/prophetnet-large-uncased/resolve/main/config.json'''
    ),
}



class 						lowerCAmelCase       (   snake_case				):
       lowerCAmelCase__    			=	"""prophetnet"""
       lowerCAmelCase__    			=	["""past_key_values"""]
       lowerCAmelCase__    			=	{
           """num_attention_heads""": """num_encoder_attention_heads""",
       }






       def __init__( self     ,	a__ = 0.1     ,	a__ = "gelu"     ,	a__ = 3_05_22     ,	a__ = 10_24     ,	a__ = 40_96     ,	a__ = 12     ,	a__ = 16     ,	a__ = 40_96     ,	a__ = 12     ,	a__ = 16     ,	a__ = 0.1     ,	a__ = 0.1     ,	a__ = 5_12     ,	a__ = 0.02     ,	a__ = True     ,	a__ = True     ,	a__ = 0     ,	a__ = 2     ,	a__ = 32     ,	a__ = 1_28     ,	a__ = False     ,	a__ = 0.0     ,	a__ = True     ,	a__ = 0     ,	a__ = 1     ,	a__ = 2     ,	**a__     ,	):
              _UpperCAmelCase			     =  vocab_size
              _UpperCAmelCase			     =  hidden_size
              _UpperCAmelCase			     =  encoder_ffn_dim
              _UpperCAmelCase			     =  num_encoder_layers
              _UpperCAmelCase			     =  num_encoder_attention_heads
              _UpperCAmelCase			     =  decoder_ffn_dim
              _UpperCAmelCase			     =  num_decoder_layers
              _UpperCAmelCase			     =  num_decoder_attention_heads
              _UpperCAmelCase			     =  max_position_embeddings
              _UpperCAmelCase			     =  init_std  # Normal(0, this parameter)
              _UpperCAmelCase			     =  activation_function

              # parameters for prophetnet
              _UpperCAmelCase			     =  ngram
              _UpperCAmelCase			     =  num_buckets
              _UpperCAmelCase			     =  relative_max_distance
              _UpperCAmelCase			     =  disable_ngram_loss
              _UpperCAmelCase			     =  eps

              # 3 Types of Dropout
              _UpperCAmelCase			     =  attention_dropout
              _UpperCAmelCase			     =  activation_dropout
              _UpperCAmelCase			     =  dropout

              _UpperCAmelCase			     =  use_cache

              super().__init__(
                  pad_token_id=a__     ,	bos_token_id=a__     ,	eos_token_id=a__     ,	is_encoder_decoder=a__     ,	add_cross_attention=a__     ,	decoder_start_token_id=a__     ,	**a__     ,	)






       @property
       def 				__A			( self  ):
              return self.num_encoder_layers + self.num_decoder_layers






       @num_hidden_layers.setter
       def 				__A			( self     ,	a__  ):
              raise NotImplementedError(
                  'This model does not support the setting of `num_hidden_layers`. Please set `num_encoder_layers` and'
                  ' `num_decoder_layers`.'  )






