






"""simple docstring"""





import torch
from transformers import PreTrainedModel, XLMRobertaConfig, XLMRobertaModel






class      a						(					__SCREAMING_SNAKE_CASE		):
    SCREAMING_SNAKE_CASE						:     List[Any]						= """M-CLIP"""






    def __init__(       self     :							Any       ,						__SCREAMING_SNAKE_CASE     :							int=1024       ,						__SCREAMING_SNAKE_CASE     :							Dict=768       ,						**__SCREAMING_SNAKE_CASE     :							Dict					)     ->		List[str]:
      lowerCamelCase_         =						transformerDimSize
      lowerCamelCase_         =						imageDimSize
      super().__init__(**__SCREAMING_SNAKE_CASE					)






class      a						(					__SCREAMING_SNAKE_CASE		):
    SCREAMING_SNAKE_CASE						:     List[Any]						= MCLIPConfig






    def __init__(       self     :							Optional[Any]       ,						__SCREAMING_SNAKE_CASE     :							Dict       ,						*__SCREAMING_SNAKE_CASE     :							Optional[int]       ,						**__SCREAMING_SNAKE_CASE     :							Optional[Any]					)     ->		List[str]:
      super().__init__(__SCREAMING_SNAKE_CASE       ,						*__SCREAMING_SNAKE_CASE       ,						**__SCREAMING_SNAKE_CASE					)
      lowerCamelCase_         =						XLMRobertaModel(__SCREAMING_SNAKE_CASE					)
      lowerCamelCase_         =						torch.nn.Linear(
          in_features=config.transformerDimensions       ,						out_features=config.numDims					)






    def    UpperCamelCase       (       self     :							str       ,						__SCREAMING_SNAKE_CASE     :							List[Any]       ,						__SCREAMING_SNAKE_CASE     :							str					)     ->		str:
      lowerCamelCase_         =						self.transformer(input_ids=__SCREAMING_SNAKE_CASE       ,						attention_mask=__SCREAMING_SNAKE_CASE					)[0]
      lowerCamelCase_         =						(embs * attention_mask.unsqueeze(2					)).sum(dim=1					) / attention_mask.sum(dim=1					)[:, None]
      return self.LinearTransformation(__SCREAMING_SNAKE_CASE					), embs






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


SCREAMING_SNAKE_CASE							:Optional[Any]							 =				logging.get_logger(__name__)

SCREAMING_SNAKE_CASE							:List[Any]							 =				{
    'hustvl/yolos-small': 'https://huggingface.co/hustvl/yolos-small/resolve/main/config.json',
    # See all YOLOS models at https://huggingface.co/models?filter=yolos
}





class 							UpperCAmelCase      (  __SCREAMING_SNAKE_CASE  ):




	'''simple docstring'''





	snake_case_					    =     "yolos"






	def __init__(       self					: Any							,A					: Optional[Any]=7_68							,A					: Dict=12							,A					: Any=12							,A					: str=30_72							,A					: Any="gelu"							,A					: str=0.0							,A					: List[str]=0.0							,A					: Dict=0.02							,A					: int=1E-12							,A					: Tuple=[5_12, 8_64]							,A					: List[Any]=16							,A					: str=3							,A					: str=True							,A					: Any=1_00							,A					: Dict=True							,A					: Dict=False							,A					: Tuple=1							,A					: Union[str, Any]=5							,A					: Optional[Any]=2							,A					: Union[str, Any]=5							,A					: int=2							,A					: int=0.1							,**A					: List[str]							,):
					super().__init__(**A )

					__A   			= hidden_size
					__A   			= num_hidden_layers
					__A   			= num_attention_heads
					__A   			= intermediate_size
					__A   			= hidden_act
					__A   			= hidden_dropout_prob
					__A   			= attention_probs_dropout_prob
					__A   			= initializer_range
					__A   			= layer_norm_eps
					__A   			= image_size
					__A   			= patch_size
					__A   			= num_channels
					__A   			= qkv_bias
					__A   			= num_detection_tokens
					__A   			= use_mid_position_embeddings
					__A   			= auxiliary_loss
					# Hungarian matcher
					__A   			= class_cost
					__A   			= bbox_cost
					__A   			= giou_cost
					# Loss coefficients
					__A   			= bbox_loss_coefficient
					__A   			= giou_loss_coefficient
					__A   			= eos_coefficient





class 							UpperCAmelCase      (  __SCREAMING_SNAKE_CASE  ):




	'''simple docstring'''





	snake_case_					    =     version.parse("1.11"  )






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






	@property
	def 				UpperCamelCase_  (       self					: List[Any] ):
					return 1E-4







	@property
	def 				UpperCamelCase_  (       self					: Optional[Any] ):
					return 12
