


from typing import TYPE_CHECKING

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


lowerCAmelCase__						:Dict         =							{
    '''auto_factory''': ['''get_values'''],
    '''configuration_auto''': ['''ALL_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''CONFIG_MAPPING''', '''MODEL_NAMES_MAPPING''', '''AutoConfig'''],
    '''feature_extraction_auto''': ['''FEATURE_EXTRACTOR_MAPPING''', '''AutoFeatureExtractor'''],
    '''image_processing_auto''': ['''IMAGE_PROCESSOR_MAPPING''', '''AutoImageProcessor'''],
    '''processing_auto''': ['''PROCESSOR_MAPPING''', '''AutoProcessor'''],
    '''tokenization_auto''': ['''TOKENIZER_MAPPING''', '''AutoTokenizer'''],
}

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__						:Any         =							[
		    '''MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
		    '''MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING''',
		    '''MODEL_FOR_AUDIO_XVECTOR_MAPPING''',
		    '''MODEL_FOR_BACKBONE_MAPPING''',
		    '''MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING''',
		    '''MODEL_FOR_CAUSAL_LM_MAPPING''',
		    '''MODEL_FOR_CTC_MAPPING''',
		    '''MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING''',
		    '''MODEL_FOR_DEPTH_ESTIMATION_MAPPING''',
		    '''MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
		    '''MODEL_FOR_IMAGE_SEGMENTATION_MAPPING''',
		    '''MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING''',
		    '''MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING''',
		    '''MODEL_FOR_MASKED_LM_MAPPING''',
		    '''MODEL_FOR_MASK_GENERATION_MAPPING''',
		    '''MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
		    '''MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
		    '''MODEL_FOR_OBJECT_DETECTION_MAPPING''',
		    '''MODEL_FOR_PRETRAINING_MAPPING''',
		    '''MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
		    '''MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING''',
		    '''MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
		    '''MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
		    '''MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
		    '''MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING''',
		    '''MODEL_FOR_TEXT_ENCODING_MAPPING''',
		    '''MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
		    '''MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING''',
		    '''MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING''',
		    '''MODEL_FOR_VISION_2_SEQ_MAPPING''',
		    '''MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING''',
		    '''MODEL_MAPPING''',
		    '''MODEL_WITH_LM_HEAD_MAPPING''',
		    '''MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING''',
		    '''MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING''',
		    '''AutoModel''',
		    '''AutoBackbone''',
		    '''AutoModelForAudioClassification''',
		    '''AutoModelForAudioFrameClassification''',
		    '''AutoModelForAudioXVector''',
		    '''AutoModelForCausalLM''',
		    '''AutoModelForCTC''',
		    '''AutoModelForDepthEstimation''',
		    '''AutoModelForImageClassification''',
		    '''AutoModelForImageSegmentation''',
		    '''AutoModelForInstanceSegmentation''',
		    '''AutoModelForMaskGeneration''',
		    '''AutoModelForTextEncoding''',
		    '''AutoModelForMaskedImageModeling''',
		    '''AutoModelForMaskedLM''',
		    '''AutoModelForMultipleChoice''',
		    '''AutoModelForNextSentencePrediction''',
		    '''AutoModelForObjectDetection''',
		    '''AutoModelForPreTraining''',
		    '''AutoModelForQuestionAnswering''',
		    '''AutoModelForSemanticSegmentation''',
		    '''AutoModelForSeq2SeqLM''',
		    '''AutoModelForSequenceClassification''',
		    '''AutoModelForSpeechSeq2Seq''',
		    '''AutoModelForTableQuestionAnswering''',
		    '''AutoModelForTokenClassification''',
		    '''AutoModelForUniversalSegmentation''',
		    '''AutoModelForVideoClassification''',
		    '''AutoModelForVision2Seq''',
		    '''AutoModelForVisualQuestionAnswering''',
		    '''AutoModelForDocumentQuestionAnswering''',
		    '''AutoModelWithLMHead''',
		    '''AutoModelForZeroShotImageClassification''',
		    '''AutoModelForZeroShotObjectDetection''',
		]

try:
		if not is_tf_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__						:Dict         =							[
		    '''TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
		    '''TF_MODEL_FOR_CAUSAL_LM_MAPPING''',
		    '''TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
		    '''TF_MODEL_FOR_MASK_GENERATION_MAPPING''',
		    '''TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING''',
		    '''TF_MODEL_FOR_MASKED_LM_MAPPING''',
		    '''TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
		    '''TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
		    '''TF_MODEL_FOR_PRETRAINING_MAPPING''',
		    '''TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
		    '''TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING''',
		    '''TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING''',
		    '''TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
		    '''TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
		    '''TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
		    '''TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING''',
		    '''TF_MODEL_FOR_TEXT_ENCODING_MAPPING''',
		    '''TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
		    '''TF_MODEL_FOR_VISION_2_SEQ_MAPPING''',
		    '''TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING''',
		    '''TF_MODEL_MAPPING''',
		    '''TF_MODEL_WITH_LM_HEAD_MAPPING''',
		    '''TFAutoModel''',
		    '''TFAutoModelForAudioClassification''',
		    '''TFAutoModelForCausalLM''',
		    '''TFAutoModelForImageClassification''',
		    '''TFAutoModelForMaskedImageModeling''',
		    '''TFAutoModelForMaskedLM''',
		    '''TFAutoModelForMaskGeneration''',
		    '''TFAutoModelForMultipleChoice''',
		    '''TFAutoModelForNextSentencePrediction''',
		    '''TFAutoModelForPreTraining''',
		    '''TFAutoModelForDocumentQuestionAnswering''',
		    '''TFAutoModelForQuestionAnswering''',
		    '''TFAutoModelForSemanticSegmentation''',
		    '''TFAutoModelForSeq2SeqLM''',
		    '''TFAutoModelForSequenceClassification''',
		    '''TFAutoModelForSpeechSeq2Seq''',
		    '''TFAutoModelForTableQuestionAnswering''',
		    '''TFAutoModelForTextEncoding''',
		    '''TFAutoModelForTokenClassification''',
		    '''TFAutoModelForVision2Seq''',
		    '''TFAutoModelForZeroShotImageClassification''',
		    '''TFAutoModelWithLMHead''',
		]

try:
		if not is_flax_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCAmelCase__						:List[Any]         =							[
		    '''FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING''',
		    '''FLAX_MODEL_FOR_CAUSAL_LM_MAPPING''',
		    '''FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING''',
		    '''FLAX_MODEL_FOR_MASKED_LM_MAPPING''',
		    '''FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING''',
		    '''FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING''',
		    '''FLAX_MODEL_FOR_PRETRAINING_MAPPING''',
		    '''FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING''',
		    '''FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING''',
		    '''FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING''',
		    '''FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING''',
		    '''FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING''',
		    '''FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING''',
		    '''FLAX_MODEL_MAPPING''',
		    '''FlaxAutoModel''',
		    '''FlaxAutoModelForCausalLM''',
		    '''FlaxAutoModelForImageClassification''',
		    '''FlaxAutoModelForMaskedLM''',
		    '''FlaxAutoModelForMultipleChoice''',
		    '''FlaxAutoModelForNextSentencePrediction''',
		    '''FlaxAutoModelForPreTraining''',
		    '''FlaxAutoModelForQuestionAnswering''',
		    '''FlaxAutoModelForSeq2SeqLM''',
		    '''FlaxAutoModelForSequenceClassification''',
		    '''FlaxAutoModelForSpeechSeq2Seq''',
		    '''FlaxAutoModelForTokenClassification''',
		    '''FlaxAutoModelForVision2Seq''',
		]


if TYPE_CHECKING:
		from .auto_factory import get_values
		from .configuration_auto import ALL_PRETRAINED_CONFIG_ARCHIVE_MAP, CONFIG_MAPPING, MODEL_NAMES_MAPPING, AutoConfig
		from .feature_extraction_auto import FEATURE_EXTRACTOR_MAPPING, AutoFeatureExtractor
		from .image_processing_auto import IMAGE_PROCESSOR_MAPPING, AutoImageProcessor
		from .processing_auto import PROCESSOR_MAPPING, AutoProcessor
		from .tokenization_auto import TOKENIZER_MAPPING, AutoTokenizer

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_auto import (
				    MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
				    MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING,
				    MODEL_FOR_AUDIO_XVECTOR_MAPPING,
				    MODEL_FOR_BACKBONE_MAPPING,
				    MODEL_FOR_CAUSAL_IMAGE_MODELING_MAPPING,
				    MODEL_FOR_CAUSAL_LM_MAPPING,
				    MODEL_FOR_CTC_MAPPING,
				    MODEL_FOR_DEPTH_ESTIMATION_MAPPING,
				    MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
				    MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
				    MODEL_FOR_IMAGE_SEGMENTATION_MAPPING,
				    MODEL_FOR_INSTANCE_SEGMENTATION_MAPPING,
				    MODEL_FOR_MASK_GENERATION_MAPPING,
				    MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
				    MODEL_FOR_MASKED_LM_MAPPING,
				    MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
				    MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
				    MODEL_FOR_OBJECT_DETECTION_MAPPING,
				    MODEL_FOR_PRETRAINING_MAPPING,
				    MODEL_FOR_QUESTION_ANSWERING_MAPPING,
				    MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
				    MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
				    MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
				    MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
				    MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
				    MODEL_FOR_TEXT_ENCODING_MAPPING,
				    MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
				    MODEL_FOR_UNIVERSAL_SEGMENTATION_MAPPING,
				    MODEL_FOR_VIDEO_CLASSIFICATION_MAPPING,
				    MODEL_FOR_VISION_2_SEQ_MAPPING,
				    MODEL_FOR_VISUAL_QUESTION_ANSWERING_MAPPING,
				    MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
				    MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING,
				    MODEL_MAPPING,
				    MODEL_WITH_LM_HEAD_MAPPING,
				    AutoBackbone,
				    AutoModel,
				    AutoModelForAudioClassification,
				    AutoModelForAudioFrameClassification,
				    AutoModelForAudioXVector,
				    AutoModelForCausalLM,
				    AutoModelForCTC,
				    AutoModelForDepthEstimation,
				    AutoModelForDocumentQuestionAnswering,
				    AutoModelForImageClassification,
				    AutoModelForImageSegmentation,
				    AutoModelForInstanceSegmentation,
				    AutoModelForMaskedImageModeling,
				    AutoModelForMaskedLM,
				    AutoModelForMaskGeneration,
				    AutoModelForMultipleChoice,
				    AutoModelForNextSentencePrediction,
				    AutoModelForObjectDetection,
				    AutoModelForPreTraining,
				    AutoModelForQuestionAnswering,
				    AutoModelForSemanticSegmentation,
				    AutoModelForSeqaSeqLM,
				    AutoModelForSequenceClassification,
				    AutoModelForSpeechSeqaSeq,
				    AutoModelForTableQuestionAnswering,
				    AutoModelForTextEncoding,
				    AutoModelForTokenClassification,
				    AutoModelForUniversalSegmentation,
				    AutoModelForVideoClassification,
				    AutoModelForVisionaSeq,
				    AutoModelForVisualQuestionAnswering,
				    AutoModelForZeroShotImageClassification,
				    AutoModelForZeroShotObjectDetection,
				    AutoModelWithLMHead,
				)

		try:
				if not is_tf_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_tf_auto import (
				    TF_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
				    TF_MODEL_FOR_CAUSAL_LM_MAPPING,
				    TF_MODEL_FOR_DOCUMENT_QUESTION_ANSWERING_MAPPING,
				    TF_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
				    TF_MODEL_FOR_MASK_GENERATION_MAPPING,
				    TF_MODEL_FOR_MASKED_IMAGE_MODELING_MAPPING,
				    TF_MODEL_FOR_MASKED_LM_MAPPING,
				    TF_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
				    TF_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
				    TF_MODEL_FOR_PRETRAINING_MAPPING,
				    TF_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
				    TF_MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING,
				    TF_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
				    TF_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
				    TF_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
				    TF_MODEL_FOR_TABLE_QUESTION_ANSWERING_MAPPING,
				    TF_MODEL_FOR_TEXT_ENCODING_MAPPING,
				    TF_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
				    TF_MODEL_FOR_VISION_2_SEQ_MAPPING,
				    TF_MODEL_FOR_ZERO_SHOT_IMAGE_CLASSIFICATION_MAPPING,
				    TF_MODEL_MAPPING,
				    TF_MODEL_WITH_LM_HEAD_MAPPING,
				    TFAutoModel,
				    TFAutoModelForAudioClassification,
				    TFAutoModelForCausalLM,
				    TFAutoModelForDocumentQuestionAnswering,
				    TFAutoModelForImageClassification,
				    TFAutoModelForMaskedImageModeling,
				    TFAutoModelForMaskedLM,
				    TFAutoModelForMaskGeneration,
				    TFAutoModelForMultipleChoice,
				    TFAutoModelForNextSentencePrediction,
				    TFAutoModelForPreTraining,
				    TFAutoModelForQuestionAnswering,
				    TFAutoModelForSemanticSegmentation,
				    TFAutoModelForSeqaSeqLM,
				    TFAutoModelForSequenceClassification,
				    TFAutoModelForSpeechSeqaSeq,
				    TFAutoModelForTableQuestionAnswering,
				    TFAutoModelForTextEncoding,
				    TFAutoModelForTokenClassification,
				    TFAutoModelForVisionaSeq,
				    TFAutoModelForZeroShotImageClassification,
				    TFAutoModelWithLMHead,
				)

		try:
				if not is_flax_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_flax_auto import (
				    FLAX_MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING,
				    FLAX_MODEL_FOR_CAUSAL_LM_MAPPING,
				    FLAX_MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING,
				    FLAX_MODEL_FOR_MASKED_LM_MAPPING,
				    FLAX_MODEL_FOR_MULTIPLE_CHOICE_MAPPING,
				    FLAX_MODEL_FOR_NEXT_SENTENCE_PREDICTION_MAPPING,
				    FLAX_MODEL_FOR_PRETRAINING_MAPPING,
				    FLAX_MODEL_FOR_QUESTION_ANSWERING_MAPPING,
				    FLAX_MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING,
				    FLAX_MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING,
				    FLAX_MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING,
				    FLAX_MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING,
				    FLAX_MODEL_FOR_VISION_2_SEQ_MAPPING,
				    FLAX_MODEL_MAPPING,
				    FlaxAutoModel,
				    FlaxAutoModelForCausalLM,
				    FlaxAutoModelForImageClassification,
				    FlaxAutoModelForMaskedLM,
				    FlaxAutoModelForMultipleChoice,
				    FlaxAutoModelForNextSentencePrediction,
				    FlaxAutoModelForPreTraining,
				    FlaxAutoModelForQuestionAnswering,
				    FlaxAutoModelForSeqaSeqLM,
				    FlaxAutoModelForSequenceClassification,
				    FlaxAutoModelForSpeechSeqaSeq,
				    FlaxAutoModelForTokenClassification,
				    FlaxAutoModelForVisionaSeq,
				)

else:
		import sys

		lowerCAmelCase__						:Dict         =							_LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)




import copy

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


lowerCAmelCase__						:int         =							logging.get_logger(__name__)

lowerCAmelCase__						:Optional[int]         =							{
    '''facebook/sam-vit-huge''': '''https://huggingface.co/facebook/sam-vit-huge/resolve/main/config.json''',
    '''facebook/sam-vit-large''': '''https://huggingface.co/facebook/sam-vit-large/resolve/main/config.json''',
    '''facebook/sam-vit-base''': '''https://huggingface.co/facebook/sam-vit-base/resolve/main/config.json''',
}

class 	__a   (       UpperCAmelCase    ):
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE=1024    ,					_SCREAMING_SNAKE_CASE=16    ,					_SCREAMING_SNAKE_CASE=16    ,					_SCREAMING_SNAKE_CASE=4    ,					_SCREAMING_SNAKE_CASE="gelu"    ,					_SCREAMING_SNAKE_CASE=1e-6    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> Tuple:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    hidden_size
									_UpperCAmelCase					=    image_size
									_UpperCAmelCase					=    patch_size
									_UpperCAmelCase					=    image_size // patch_size
									_UpperCAmelCase					=    mask_input_channels
									_UpperCAmelCase					=    num_point_embeddings
									_UpperCAmelCase					=    hidden_act
									_UpperCAmelCase					=    layer_norm_eps



class 	__a   (       UpperCAmelCase    ):
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE="relu"    ,					_SCREAMING_SNAKE_CASE=2048    ,					_SCREAMING_SNAKE_CASE=2    ,					_SCREAMING_SNAKE_CASE=8    ,					_SCREAMING_SNAKE_CASE=2    ,					_SCREAMING_SNAKE_CASE=3    ,					_SCREAMING_SNAKE_CASE=3    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE=1e-6    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> List[Any]:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    hidden_size
									_UpperCAmelCase					=    hidden_act
									_UpperCAmelCase					=    mlp_dim
									_UpperCAmelCase					=    num_hidden_layers
									_UpperCAmelCase					=    num_attention_heads
									_UpperCAmelCase					=    attention_downsample_rate
									_UpperCAmelCase					=    num_multimask_outputs
									_UpperCAmelCase					=    iou_head_depth
									_UpperCAmelCase					=    iou_head_hidden_dim
									_UpperCAmelCase					=    layer_norm_eps



class 	__a   (       UpperCAmelCase    ):
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=768    ,					_SCREAMING_SNAKE_CASE=256    ,					_SCREAMING_SNAKE_CASE=12    ,					_SCREAMING_SNAKE_CASE=12    ,					_SCREAMING_SNAKE_CASE=3    ,					_SCREAMING_SNAKE_CASE=1024    ,					_SCREAMING_SNAKE_CASE=16    ,					_SCREAMING_SNAKE_CASE="gelu"    ,					_SCREAMING_SNAKE_CASE=1e-0_6    ,					_SCREAMING_SNAKE_CASE=0.0    ,					_SCREAMING_SNAKE_CASE=1e-1_0    ,					_SCREAMING_SNAKE_CASE=True    ,					_SCREAMING_SNAKE_CASE=4.0    ,					_SCREAMING_SNAKE_CASE=True    ,					_SCREAMING_SNAKE_CASE=True    ,					_SCREAMING_SNAKE_CASE=14    ,					_SCREAMING_SNAKE_CASE=[2, 5, 8, 11]    ,					_SCREAMING_SNAKE_CASE=128    ,					_SCREAMING_SNAKE_CASE=None    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> List[str]:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)

									_UpperCAmelCase					=    hidden_size
									_UpperCAmelCase					=    output_channels
									_UpperCAmelCase					=    num_hidden_layers
									_UpperCAmelCase					=    num_attention_heads
									_UpperCAmelCase					=    num_channels
									_UpperCAmelCase					=    image_size
									_UpperCAmelCase					=    patch_size
									_UpperCAmelCase					=    hidden_act
									_UpperCAmelCase					=    layer_norm_eps
									_UpperCAmelCase					=    attention_dropout
									_UpperCAmelCase					=    initializer_range
									_UpperCAmelCase					=    qkv_bias
									_UpperCAmelCase					=    mlp_ratio
									_UpperCAmelCase					=    use_abs_pos
									_UpperCAmelCase					=    use_rel_pos
									_UpperCAmelCase					=    window_size
									_UpperCAmelCase					=    global_attn_indexes
									_UpperCAmelCase					=    num_pos_feats
									_UpperCAmelCase					=    int(hidden_size * mlp_ratio		) if mlp_dim is None else mlp_dim



class 	__a   (       UpperCAmelCase    ):
		_a			:						Any    			=			'sam'
		_a			:						Any    			=			True
		def __init__(    self    ,					_SCREAMING_SNAKE_CASE=None    ,					_SCREAMING_SNAKE_CASE=None    ,					_SCREAMING_SNAKE_CASE=None    ,					_SCREAMING_SNAKE_CASE=0.02    ,					**_SCREAMING_SNAKE_CASE    ,					)				-> Tuple:




									"""simple docstring"""





									super().__init__(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    vision_config if vision_config is not None else {}
									_UpperCAmelCase					=    prompt_encoder_config if prompt_encoder_config is not None else {}
									_UpperCAmelCase					=    mask_decoder_config if mask_decoder_config is not None else {}

									if isinstance(_SCREAMING_SNAKE_CASE    ,					_SCREAMING_SNAKE_CASE		):
																_UpperCAmelCase					=    vision_config.to_dict()
									if isinstance(_SCREAMING_SNAKE_CASE    ,					_SCREAMING_SNAKE_CASE		):
																_UpperCAmelCase					=    prompt_encoder_config.to_dict()
									if isinstance(_SCREAMING_SNAKE_CASE    ,					_SCREAMING_SNAKE_CASE		):
																_UpperCAmelCase					=    mask_decoder_config.to_dict()

									_UpperCAmelCase					=    SamVisionConfig(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    SamPromptEncoderConfig(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    SamMaskDecoderConfig(**_SCREAMING_SNAKE_CASE		)
									_UpperCAmelCase					=    initializer_range






		def 			UpperCAmelCase__       (    self		)				-> str:




									"""simple docstring"""





									_UpperCAmelCase					=    copy.deepcopy(self.__dict__		)
									_UpperCAmelCase					=    self.vision_config.to_dict()
									_UpperCAmelCase					=    self.prompt_encoder_config.to_dict()
									_UpperCAmelCase					=    self.mask_decoder_config.to_dict()
									_UpperCAmelCase					=    self.__class__.model_type
									return output
