
from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tf_available, is_torch_available


SCREAMING_SNAKE_CASE							:List[str]							 =				{'configuration_swin': ['SWIN_PRETRAINED_CONFIG_ARCHIVE_MAP', 'SwinConfig', 'SwinOnnxConfig']}


try:
					if not is_torch_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					SCREAMING_SNAKE_CASE							:Any							 =				[
					    'SWIN_PRETRAINED_MODEL_ARCHIVE_LIST',
					    'SwinForImageClassification',
					    'SwinForMaskedImageModeling',
					    'SwinModel',
					    'SwinPreTrainedModel',
					    'SwinBackbone',
					]

try:
					if not is_tf_available():
										raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
					pass
else:
					SCREAMING_SNAKE_CASE							:Tuple							 =				[
					    'TF_SWIN_PRETRAINED_MODEL_ARCHIVE_LIST',
					    'TFSwinForImageClassification',
					    'TFSwinForMaskedImageModeling',
					    'TFSwinModel',
					    'TFSwinPreTrainedModel',
					]

if TYPE_CHECKING:
					from .configuration_swin import SWIN_PRETRAINED_CONFIG_ARCHIVE_MAP, SwinConfig, SwinOnnxConfig

					try:
										if not is_torch_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_swin import (
										    SWIN_PRETRAINED_MODEL_ARCHIVE_LIST,
										    SwinBackbone,
										    SwinForImageClassification,
										    SwinForMaskedImageModeling,
										    SwinModel,
										    SwinPreTrainedModel,
										)

					try:
										if not is_tf_available():
															raise OptionalDependencyNotAvailable()
					except OptionalDependencyNotAvailable:
										pass
					else:
										from .modeling_tf_swin import (
										    TF_SWIN_PRETRAINED_MODEL_ARCHIVE_LIST,
										    TFSwinForImageClassification,
										    TFSwinForMaskedImageModeling,
										    TFSwinModel,
										    TFSwinPreTrainedModel,
										)

else:
					import sys

					SCREAMING_SNAKE_CASE							:int							 =				_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)


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
