



'''simple docstring'''

import unittest

import numpy as np
import torch
from transformers import CLIPTextConfig, CLIPTextModel

from diffusers import DDIMScheduler, LDMPipeline, UNetaDModel, VQModel
from diffusers.utils.testing_utils import enable_full_determinism, require_torch, slow, torch_device


enable_full_determinism()


class 						a__  (					unittest.TestCase						):


	@property
	def 					lowercase__	(self			:			int   )  ->      List[str]:

					"""simple docstring"""

					torch.manual_seed(0   )
					SCREAMING_SNAKE_CASE	:    List[str]          =			UNetaDModel(
					    block_out_channels=(32, 64),       layers_per_block=2,       sample_size=32,       in_channels=3,       out_channels=3,       down_block_types=('''DownBlock2D''', '''AttnDownBlock2D'''),       up_block_types=('''AttnUpBlock2D''', '''UpBlock2D'''),       )
					return model


	@property
	def 					lowercase__	(self			:			List[Any]   )  ->      Tuple:

					"""simple docstring"""

					torch.manual_seed(0   )
					SCREAMING_SNAKE_CASE	:    List[Any]          =			VQModel(
					    block_out_channels=[32, 64],       in_channels=3,       out_channels=3,       down_block_types=['''DownEncoderBlock2D''', '''DownEncoderBlock2D'''],       up_block_types=['''UpDecoderBlock2D''', '''UpDecoderBlock2D'''],       latent_channels=3,       )
					return model


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

					"""simple docstring"""

					torch.manual_seed(0   )
					SCREAMING_SNAKE_CASE	:    str          =			CLIPTextConfig(
					    bos_token_id=0,       eos_token_id=2,       hidden_size=32,       intermediate_size=37,       layer_norm_eps=1e-05,       num_attention_heads=4,       num_hidden_layers=5,       pad_token_id=1,       vocab_size=1000,       )
					return CLIPTextModel(lowerCamelCase__   )






	def 					lowercase__	(self			:			Optional[int]   )  ->      int:

					"""simple docstring"""

					SCREAMING_SNAKE_CASE	:    int          =			self.dummy_uncond_unet
					SCREAMING_SNAKE_CASE	:    Any          =			DDIMScheduler()
					SCREAMING_SNAKE_CASE	:    Optional[Any]          =			self.dummy_vq_model

					SCREAMING_SNAKE_CASE	:    Union[str, Any]          =			LDMPipeline(unet=lowerCamelCase__,       vqvae=lowerCamelCase__,       scheduler=lowerCamelCase__   )
					ldm.to(lowerCamelCase__   )
					ldm.set_progress_bar_config(disable=lowerCamelCase__   )

					SCREAMING_SNAKE_CASE	:    Union[str, Any]          =			torch.manual_seed(0   )
					SCREAMING_SNAKE_CASE	:    List[Any]          =			ldm(generator=lowerCamelCase__,       num_inference_steps=2,       output_type='''numpy'''   ).images

					SCREAMING_SNAKE_CASE	:    List[Any]          =			torch.manual_seed(0   )
					SCREAMING_SNAKE_CASE	:    Any          =			ldm(generator=lowerCamelCase__,       num_inference_steps=2,       output_type='''numpy''',       return_dict=lowerCamelCase__   )[0]

					SCREAMING_SNAKE_CASE	:    Dict          =			image[0, -3:, -3:, -1]
					SCREAMING_SNAKE_CASE	:    int          =			image_from_tuple[0, -3:, -3:, -1]

					assert image.shape == (1, 64, 64, 3)
					SCREAMING_SNAKE_CASE	:    Dict          =			np.array([0.8512, 0.818, 0.6411, 0.6808, 0.4465, 0.5618, 0.46, 0.6231, 0.5172]   )
					SCREAMING_SNAKE_CASE	:    Optional[int]          =			1e-2 if torch_device != '''mps''' else 3e-2

					assert np.abs(image_slice.flatten() - expected_slice   ).max() < tolerance
					assert np.abs(image_from_tuple_slice.flatten() - expected_slice   ).max() < tolerance



@slow
@require_torch
class 						a__  (					unittest.TestCase						):


	def 					lowercase__	(self			:			Dict   )  ->      Tuple:

					"""simple docstring"""

					SCREAMING_SNAKE_CASE	:    List[str]          =			LDMPipeline.from_pretrained('''CompVis/ldm-celebahq-256'''   )
					ldm.to(lowerCamelCase__   )
					ldm.set_progress_bar_config(disable=lowerCamelCase__   )

					SCREAMING_SNAKE_CASE	:    List[Any]          =			torch.manual_seed(0   )
					SCREAMING_SNAKE_CASE	:    Tuple          =			ldm(generator=lowerCamelCase__,       num_inference_steps=5,       output_type='''numpy'''   ).images

					SCREAMING_SNAKE_CASE	:    Any          =			image[0, -3:, -3:, -1]

					assert image.shape == (1, 256, 256, 3)
					SCREAMING_SNAKE_CASE	:    Dict          =			np.array([0.4399, 0.4_4975, 0.4_6825, 0.474, 0.4359, 0.4581, 0.4_5095, 0.4341, 0.4447]   )
					SCREAMING_SNAKE_CASE	:    List[Any]          =			1e-2 if torch_device != '''mps''' else 3e-2

					assert np.abs(image_slice.flatten() - expected_slice   ).max() < tolerance










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


__A								=       logging.get_logger(__name__)

__A								=       {
    "unc-nlp/lxmert-base-uncased": "https://huggingface.co/unc-nlp/lxmert-base-uncased/resolve/main/config.json",
}







class        __lowerCAmelCase					(			__magic_name__					):

			"""simple docstring"""







			snake_case_  						=			'''lxmert'''
			snake_case_  						=			{}


			def __init__( self     ,		lowerCamelCase__=30_522     ,		lowerCamelCase__=768     ,		lowerCamelCase__=12     ,		lowerCamelCase__=9_500     ,		lowerCamelCase__=1_600     ,		lowerCamelCase__=400     ,		lowerCamelCase__=3_072     ,		lowerCamelCase__="gelu"     ,		lowerCamelCase__=0.1     ,		lowerCamelCase__=0.1     ,		lowerCamelCase__=512     ,		lowerCamelCase__=2     ,		lowerCamelCase__=0.02     ,		lowerCamelCase__=1e-12     ,		lowerCamelCase__=9     ,		lowerCamelCase__=5     ,		lowerCamelCase__=5     ,		lowerCamelCase__=2_048     ,		lowerCamelCase__=4     ,		lowerCamelCase__=6.67     ,		lowerCamelCase__=True     ,		lowerCamelCase__=True     ,		lowerCamelCase__=True     ,		lowerCamelCase__=True     ,		lowerCamelCase__=True     ,		lowerCamelCase__=True     ,		lowerCamelCase__=True     ,		**lowerCamelCase__     ,		)       -> Optional[int]:



							'''simple docstring'''
							__lowerCamelCase									=       vocab_size
							__lowerCamelCase									=       hidden_size
							__lowerCamelCase									=       num_attention_heads
							__lowerCamelCase									=       hidden_act
							__lowerCamelCase									=       intermediate_size
							__lowerCamelCase									=       hidden_dropout_prob
							__lowerCamelCase									=       attention_probs_dropout_prob
							__lowerCamelCase									=       max_position_embeddings
							__lowerCamelCase									=       type_vocab_size
							__lowerCamelCase									=       initializer_range
							__lowerCamelCase									=       layer_norm_eps
							__lowerCamelCase									=       num_qa_labels
							__lowerCamelCase									=       num_object_labels
							__lowerCamelCase									=       num_attr_labels
							__lowerCamelCase									=       l_layers
							__lowerCamelCase									=       x_layers
							__lowerCamelCase									=       r_layers
							__lowerCamelCase									=       visual_feat_dim
							__lowerCamelCase									=       visual_pos_dim
							__lowerCamelCase									=       visual_loss_normalizer
							__lowerCamelCase									=       task_matched
							__lowerCamelCase									=       task_mask_lm
							__lowerCamelCase									=       task_obj_predict
							__lowerCamelCase									=       task_qa
							__lowerCamelCase									=       visual_obj_loss
							__lowerCamelCase									=       visual_attr_loss
							__lowerCamelCase									=       visual_feat_loss
							__lowerCamelCase									=       {'vision': r_layers, 'cross_encoder': x_layers, 'language': l_layers}
							super().__init__(**lowerCamelCase__				)


