






'''simple docstring'''


import tempfile
import unittest

import numpy as np

from diffusers import (
    DDIMScheduler,
    DPMSolverMultistepScheduler,
    EulerAncestralDiscreteScheduler,
    EulerDiscreteScheduler,
    LMSDiscreteScheduler,
    OnnxStableDiffusionPipeline,
    PNDMScheduler,
)
from diffusers.utils.testing_utils import is_onnx_available, nightly, require_onnxruntime, require_torch_gpu

from ..test_pipelines_onnx_common import OnnxPipelineTesterMixin


if is_onnx_available():
					import onnxruntime as ort
class    _SCREAMING_SNAKE_CASE							(		SCREAMING_SNAKE_CASE       ,unittest.TestCase	):
			__a							:							int					     =					"hf-internal-testing/tiny-random-OnnxStableDiffusionPipeline"






			def 				A      (   self							:						Union[str, Any] ,      lowercase							:						Union[str, Any]=0			)							->    str:

									'''simple docstring'''







									UpperCamelCase__         = np.random.RandomState(lowercase			)
									UpperCamelCase__         = {
									    """prompt""": """A painting of a squirrel eating a burger""",
									    """generator""": generator,
									    """num_inference_steps""": 2,
									    """guidance_scale""": 7.5,
									    """output_type""": """numpy""",
									}
									return inputs






			def 				A      (   self							:						Union[str, Any]			)							->    Dict:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = pipe(**lowercase			).images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 1_2_8, 1_2_8, 3)
									UpperCamelCase__         = np.array([0.6_5_0_7_2, 0.5_8_4_9_2, 0.4_8_2_1_9, 0.5_5_5_2_1, 0.5_3_1_8_0, 0.5_5_9_3_9, 0.5_0_6_9_7, 0.3_9_8_0_0, 0.4_6_4_5_5]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2






			def 				A      (   self							:						Union[str, Any]			)							->    Optional[int]:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									UpperCamelCase__         = PNDMScheduler.from_config(pipe.scheduler.config ,      skip_prk_steps=lowercase			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = pipe(**lowercase			).images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 1_2_8, 1_2_8, 3)
									UpperCamelCase__         = np.array([0.6_5_8_6_3, 0.5_9_4_2_5, 0.4_9_3_2_6, 0.5_6_3_1_3, 0.5_3_8_7_5, 0.5_6_6_2_7, 0.5_1_0_6_5, 0.3_9_7_7_7, 0.4_6_3_3_0]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2






			def 				A      (   self							:						Optional[Any]			)							->    Dict:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									UpperCamelCase__         = LMSDiscreteScheduler.from_config(pipe.scheduler.config			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = pipe(**lowercase			).images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 1_2_8, 1_2_8, 3)
									UpperCamelCase__         = np.array([0.5_3_7_5_5, 0.6_0_7_8_6, 0.4_7_4_0_2, 0.4_9_4_8_8, 0.5_1_8_6_9, 0.4_9_8_1_9, 0.4_7_9_8_5, 0.3_8_9_5_7, 0.4_4_2_7_9]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2






			def 				A      (   self							:						List[Any]			)							->    int:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									UpperCamelCase__         = EulerDiscreteScheduler.from_config(pipe.scheduler.config			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = pipe(**lowercase			).images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 1_2_8, 1_2_8, 3)
									UpperCamelCase__         = np.array([0.5_3_7_5_5, 0.6_0_7_8_6, 0.4_7_4_0_2, 0.4_9_4_8_8, 0.5_1_8_6_9, 0.4_9_8_1_9, 0.4_7_9_8_5, 0.3_8_9_5_7, 0.4_4_2_7_9]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2






			def 				A      (   self							:						int			)							->    List[str]:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									UpperCamelCase__         = EulerAncestralDiscreteScheduler.from_config(pipe.scheduler.config			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = pipe(**lowercase			).images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 1_2_8, 1_2_8, 3)
									UpperCamelCase__         = np.array([0.5_3_8_1_7, 0.6_0_8_1_2, 0.4_7_3_8_4, 0.4_9_5_3_0, 0.5_1_8_9_4, 0.4_9_8_1_4, 0.4_7_9_8_4, 0.3_8_9_5_8, 0.4_4_2_7_1]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2






			def 				A      (   self							:						str			)							->    Optional[Any]:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									UpperCamelCase__         = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = pipe(**lowercase			).images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 1_2_8, 1_2_8, 3)
									UpperCamelCase__         = np.array([0.5_3_8_9_5, 0.6_0_8_0_8, 0.4_7_9_3_3, 0.4_9_6_0_8, 0.5_1_8_8_6, 0.4_9_9_5_0, 0.4_8_0_5_3, 0.3_8_9_5_7, 0.4_4_2_0_0]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-2






			def 				A      (   self							:						str			)							->    Optional[Any]:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = 3 * [inputs["""prompt"""]]

									# forward
									UpperCamelCase__         = pipe(**lowercase			)
									UpperCamelCase__         = output.images[0, -3:, -3:, -1]

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = 3 * [inputs.pop("""prompt"""			)]

									UpperCamelCase__         = pipe.tokenizer(
									    lowercase ,      padding="""max_length""" ,      max_length=pipe.tokenizer.model_max_length ,      truncation=lowercase ,      return_tensors="""np""" ,      )
									UpperCamelCase__         = text_inputs["""input_ids"""]

									UpperCamelCase__         = pipe.text_encoder(input_ids=text_inputs.astype(np.intaa			)			)[0]

									UpperCamelCase__         = prompt_embeds

									# forward
									UpperCamelCase__         = pipe(**lowercase			)
									UpperCamelCase__         = output.images[0, -3:, -3:, -1]

									assert np.abs(image_slice_a.flatten() - image_slice_a.flatten()			).max() < 1e-4







			def 				A      (   self							:						List[str]			)							->    int:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(self.hub_checkpoint ,      provider="""CPUExecutionProvider"""			)
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = 3 * ["""this is a negative prompt"""]
									UpperCamelCase__         = negative_prompt
									UpperCamelCase__         = 3 * [inputs["""prompt"""]]

									# forward
									UpperCamelCase__         = pipe(**lowercase			)
									UpperCamelCase__         = output.images[0, -3:, -3:, -1]

									UpperCamelCase__         = self.get_dummy_inputs()
									UpperCamelCase__         = 3 * [inputs.pop("""prompt"""			)]

									UpperCamelCase__         = []
									for p in [prompt, negative_prompt]:
															UpperCamelCase__         = pipe.tokenizer(
															    lowercase ,      padding="""max_length""" ,      max_length=pipe.tokenizer.model_max_length ,      truncation=lowercase ,      return_tensors="""np""" ,      )
															UpperCamelCase__         = text_inputs["""input_ids"""]

															embeds.append(pipe.text_encoder(input_ids=text_inputs.astype(np.intaa			)			)[0]			)

									UpperCamelCase__    ,   UpperCamelCase__         = embeds

									# forward
									UpperCamelCase__         = pipe(**lowercase			)
									UpperCamelCase__         = output.images[0, -3:, -3:, -1]

									assert np.abs(image_slice_a.flatten() - image_slice_a.flatten()			).max() < 1e-4
@nightly
@require_onnxruntime
@require_torch_gpu
class    _SCREAMING_SNAKE_CASE							(		unittest.TestCase	):






			@property
			def 				A      (   self							:						Union[str, Any]			)							->    List[str]:

									'''simple docstring'''







									return (
									    "CUDAExecutionProvider",
									    {
									        "gpu_mem_limit": "15000000000",  # 15GB
									        "arena_extend_strategy": "kSameAsRequested",
									    },
									)






			@property
			def 				A      (   self							:						Optional[int]			)							->    List[Any]:

									'''simple docstring'''







									UpperCamelCase__         = ort.SessionOptions()
									UpperCamelCase__         = False
									return options






			def 				A      (   self							:						Dict			)							->    int:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(
									    """CompVis/stable-diffusion-v1-4""" ,      revision="""onnx""" ,      safety_checker=lowercase ,      feature_extractor=lowercase ,      provider=self.gpu_provider ,      sess_options=self.gpu_options ,      )
									sd_pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = """A painting of a squirrel eating a burger"""
									np.random.seed(0			)
									UpperCamelCase__         = sd_pipe([prompt] ,      guidance_scale=6.0 ,      num_inference_steps=1_0 ,      output_type="""np"""			)
									UpperCamelCase__         = output.images

									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 5_1_2, 5_1_2, 3)
									UpperCamelCase__         = np.array([0.0_4_5_2, 0.0_3_9_0, 0.0_0_8_7, 0.0_3_5_0, 0.0_6_1_7, 0.0_3_6_4, 0.0_5_4_4, 0.0_5_2_3, 0.0_7_2_0]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-3






			def 				A      (   self							:						Dict			)							->    Tuple:

									'''simple docstring'''







									UpperCamelCase__         = DDIMScheduler.from_pretrained(
									    """runwayml/stable-diffusion-v1-5""" ,      subfolder="""scheduler""" ,      revision="""onnx"""			)
									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(
									    """runwayml/stable-diffusion-v1-5""" ,      revision="""onnx""" ,      scheduler=lowercase ,      safety_checker=lowercase ,      feature_extractor=lowercase ,      provider=self.gpu_provider ,      sess_options=self.gpu_options ,      )
									sd_pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = """open neural network exchange"""
									UpperCamelCase__         = np.random.RandomState(0			)
									UpperCamelCase__         = sd_pipe([prompt] ,      guidance_scale=7.5 ,      num_inference_steps=1_0 ,      generator=lowercase ,      output_type="""np"""			)
									UpperCamelCase__         = output.images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 5_1_2, 5_1_2, 3)
									UpperCamelCase__         = np.array([0.2_8_6_7, 0.1_9_7_4, 0.1_4_8_1, 0.7_2_9_4, 0.7_2_5_1, 0.6_6_6_7, 0.4_1_9_4, 0.5_6_4_2, 0.6_4_8_6]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-3






			def 				A      (   self							:						Optional[Any]			)							->    Dict:

									'''simple docstring'''







									UpperCamelCase__         = LMSDiscreteScheduler.from_pretrained(
									    """runwayml/stable-diffusion-v1-5""" ,      subfolder="""scheduler""" ,      revision="""onnx"""			)
									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(
									    """runwayml/stable-diffusion-v1-5""" ,      revision="""onnx""" ,      scheduler=lowercase ,      safety_checker=lowercase ,      feature_extractor=lowercase ,      provider=self.gpu_provider ,      sess_options=self.gpu_options ,      )
									sd_pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = """open neural network exchange"""
									UpperCamelCase__         = np.random.RandomState(0			)
									UpperCamelCase__         = sd_pipe([prompt] ,      guidance_scale=7.5 ,      num_inference_steps=1_0 ,      generator=lowercase ,      output_type="""np"""			)
									UpperCamelCase__         = output.images
									UpperCamelCase__         = image[0, -3:, -3:, -1]

									assert image.shape == (1, 5_1_2, 5_1_2, 3)
									UpperCamelCase__         = np.array([0.2_3_0_6, 0.1_9_5_9, 0.1_5_9_3, 0.6_5_4_9, 0.6_3_9_4, 0.5_4_0_8, 0.5_0_6_5, 0.6_0_1_0, 0.6_1_6_1]			)

									assert np.abs(image_slice.flatten() - expected_slice			).max() < 1e-3






			def 				A      (   self							:						int			)							->    str:

									'''simple docstring'''







									UpperCamelCase__         = 0

									def test_callback_fn(lowercase							:						int ,      lowercase							:						int ,      lowercase							:						np.ndarray			) -> None:
															UpperCamelCase__         = True
															nonlocal number_of_steps
															number_of_steps += 1
															if step == 0:
																					assert latents.shape == (1, 4, 6_4, 6_4)
																					UpperCamelCase__         = latents[0, -3:, -3:, -1]
																					UpperCamelCase__         = np.array(
																					    [-0.6_7_7_2, -0.3_8_3_5, -1.2_4_5_6, 0.1_9_0_5, -1.0_9_7_4, 0.6_9_6_7, -1.9_3_5_3, 0.0_1_7_8, 1.0_1_6_7]			)

																					assert np.abs(latents_slice.flatten() - expected_slice			).max() < 1e-3
															elif step == 5:
																					assert latents.shape == (1, 4, 6_4, 6_4)
																					UpperCamelCase__         = latents[0, -3:, -3:, -1]
																					UpperCamelCase__         = np.array(
																					    [-0.3_3_5_1, 0.2_2_4_1, -0.1_8_3_7, -0.2_3_2_5, -0.6_5_7_7, 0.3_3_9_3, -0.0_2_4_1, 0.5_8_9_9, 1.3_8_7_5]			)

																					assert np.abs(latents_slice.flatten() - expected_slice			).max() < 1e-3

									UpperCamelCase__         = False

									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(
									    """runwayml/stable-diffusion-v1-5""" ,      revision="""onnx""" ,      safety_checker=lowercase ,      feature_extractor=lowercase ,      provider=self.gpu_provider ,      sess_options=self.gpu_options ,      )
									pipe.set_progress_bar_config(disable=lowercase			)

									UpperCamelCase__         = """Andromeda galaxy in a bottle"""

									UpperCamelCase__         = np.random.RandomState(0			)
									pipe(
									    prompt=lowercase ,      num_inference_steps=5 ,      guidance_scale=7.5 ,      generator=lowercase ,      callback=lowercase ,      callback_steps=1 ,      )
									assert test_callback_fn.has_been_called
									assert number_of_steps == 6







			def 				A      (   self							:						Dict			)							->    int:

									'''simple docstring'''







									UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(
									    """runwayml/stable-diffusion-v1-5""" ,      revision="""onnx""" ,      safety_checker=lowercase ,      feature_extractor=lowercase ,      provider=self.gpu_provider ,      sess_options=self.gpu_options ,      )
									assert isinstance(lowercase ,      lowercase			)
									assert pipe.safety_checker is None

									UpperCamelCase__         = pipe("""example prompt""" ,      num_inference_steps=2			).images[0]
									assert image is not None

									# check that there's no error when saving a pipeline with one of the models being None
									with tempfile.TemporaryDirectory() as tmpdirname:
															pipe.save_pretrained(lowercase			)
															UpperCamelCase__         = OnnxStableDiffusionPipeline.from_pretrained(lowercase			)

									# sanity check that the pipeline still works
									assert pipe.safety_checker is None
									UpperCamelCase__         = pipe("""example prompt""" ,      num_inference_steps=2			).images[0]
									assert image is not None








'''simple docstring'''


import copy

from ...configuration_utils import PretrainedConfig
from ...utils import logging
from ..auto import CONFIG_MAPPING


lowerCamelCase_				: str    	=							logging.get_logger(__name__)

lowerCamelCase_				: Optional[int]    	=							{
    '''SenseTime/deformable-detr''': '''https://huggingface.co/sensetime/deformable-detr/resolve/main/config.json''',
    # See all Deformable DETR models at https://huggingface.co/models?filter=deformable-detr
}
class    _SCREAMING_SNAKE_CASE							(		SCREAMING_SNAKE_CASE	):


			'''simple docstring'''





			__a							:							Tuple					     =					"deformable_detr"
			__a							:							str					     =					{
			    "hidden_size": "d_model",
			    "num_attention_heads": "encoder_attention_heads",
			}






			def __init__(   self							:						List[Any] ,      lowercase							:						List[Any]=True ,      lowercase							:						Tuple=None ,      lowercase							:						Tuple=3 ,      lowercase							:						List[str]=3_0_0 ,      lowercase							:						List[Any]=1_0_2_4 ,      lowercase							:						List[Any]=6 ,      lowercase							:						Tuple=1_0_2_4 ,      lowercase							:						Union[str, Any]=8 ,      lowercase							:						Optional[Any]=6 ,      lowercase							:						Tuple=1_0_2_4 ,      lowercase							:						Any=8 ,      lowercase							:						List[str]=0.0 ,      lowercase							:						Any=True ,      lowercase							:						Union[str, Any]="relu" ,      lowercase							:						Dict=2_5_6 ,      lowercase							:						Optional[int]=0.1 ,      lowercase							:						Optional[int]=0.0 ,      lowercase							:						List[str]=0.0 ,      lowercase							:						Any=0.0_2 ,      lowercase							:						Optional[int]=1.0 ,      lowercase							:						Tuple=True ,      lowercase							:						Optional[int]=False ,      lowercase							:						Any="sine" ,      lowercase							:						List[str]="resnet50" ,      lowercase							:						List[str]=True ,      lowercase							:						Optional[int]=False ,      lowercase							:						int=4 ,      lowercase							:						str=4 ,      lowercase							:						Dict=4 ,      lowercase							:						int=False ,      lowercase							:						List[Any]=3_0_0 ,      lowercase							:						List[Any]=False ,      lowercase							:						Dict=1 ,      lowercase							:						int=5 ,      lowercase							:						List[Any]=2 ,      lowercase							:						List[str]=1 ,      lowercase							:						Tuple=1 ,      lowercase							:						Dict=5 ,      lowercase							:						Dict=2 ,      lowercase							:						Dict=0.1 ,      lowercase							:						List[str]=0.2_5 ,      lowercase							:						Tuple=False ,      **lowercase							:						str ,      )							->    str:

									'''simple docstring'''







									if backbone_config is not None and use_timm_backbone:
															raise ValueError("""You can't specify both `backbone_config` and `use_timm_backbone`."""			)

									if not use_timm_backbone:
															if backbone_config is None:
																					logger.info("""`backbone_config` is `None`. Initializing the config with the default `ResNet` backbone."""			)
																					UpperCamelCase__         = CONFIG_MAPPING["""resnet"""](out_features=["""stage4"""]			)
															elif isinstance(lowercase ,      lowercase			):
																					UpperCamelCase__         = backbone_config.get("""model_type"""			)
																					UpperCamelCase__         = CONFIG_MAPPING[backbone_model_type]
																					UpperCamelCase__         = config_class.from_dict(lowercase			)
									UpperCamelCase__         = use_timm_backbone
									UpperCamelCase__         = backbone_config
									UpperCamelCase__         = num_channels
									UpperCamelCase__         = num_queries
									UpperCamelCase__         = max_position_embeddings
									UpperCamelCase__         = d_model
									UpperCamelCase__         = encoder_ffn_dim
									UpperCamelCase__         = encoder_layers
									UpperCamelCase__         = encoder_attention_heads
									UpperCamelCase__         = decoder_ffn_dim
									UpperCamelCase__         = decoder_layers
									UpperCamelCase__         = decoder_attention_heads
									UpperCamelCase__         = dropout
									UpperCamelCase__         = attention_dropout
									UpperCamelCase__         = activation_dropout
									UpperCamelCase__         = activation_function
									UpperCamelCase__         = init_std
									UpperCamelCase__         = init_xavier_std
									UpperCamelCase__         = encoder_layerdrop
									UpperCamelCase__         = auxiliary_loss
									UpperCamelCase__         = position_embedding_type
									UpperCamelCase__         = backbone
									UpperCamelCase__         = use_pretrained_backbone
									UpperCamelCase__         = dilation
									# deformable attributes
									UpperCamelCase__         = num_feature_levels
									UpperCamelCase__         = encoder_n_points
									UpperCamelCase__         = decoder_n_points
									UpperCamelCase__         = two_stage
									UpperCamelCase__         = two_stage_num_proposals
									UpperCamelCase__         = with_box_refine
									if two_stage is True and with_box_refine is False:
															raise ValueError("""If two_stage is True, with_box_refine must be True."""			)
									# Hungarian matcher
									UpperCamelCase__         = class_cost
									UpperCamelCase__         = bbox_cost
									UpperCamelCase__         = giou_cost
									# Loss coefficients
									UpperCamelCase__         = mask_loss_coefficient
									UpperCamelCase__         = dice_loss_coefficient
									UpperCamelCase__         = bbox_loss_coefficient
									UpperCamelCase__         = giou_loss_coefficient
									UpperCamelCase__         = eos_coefficient
									UpperCamelCase__         = focal_alpha
									UpperCamelCase__         = disable_custom_kernels
									super().__init__(is_encoder_decoder=lowercase ,      **lowercase			)






			@property
			def 				A      (   self							:						str			)							->    int:

									'''simple docstring'''







									return self.encoder_attention_heads






			@property
			def 				A      (   self							:						Tuple			)							->    int:

									'''simple docstring'''







									return self.d_model







			def 				A      (   self							:						Dict			)							->    Optional[Any]:

									'''simple docstring'''







									UpperCamelCase__         = copy.deepcopy(self.__dict__			)
									if self.backbone_config is not None:
															UpperCamelCase__         = self.backbone_config.to_dict()
									UpperCamelCase__         = self.__class__.model_type
									return output
