


'''simple docstring'''





from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_sentencepiece_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


A							:					Union[str, Any]     						=     {'configuration_xlnet': ['XLNET_PRETRAINED_CONFIG_ARCHIVE_MAP', 'XLNetConfig']}

try:
	if not is_sentencepiece_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A							:					List[Any]     						=     ['XLNetTokenizer']

try:
	if not is_tokenizers_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A							:					int     						=     ['XLNetTokenizerFast']

try:
	if not is_torch_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A							:					Union[str, Any]     						=     [
	    'XLNET_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'XLNetForMultipleChoice',
	    'XLNetForQuestionAnswering',
	    'XLNetForQuestionAnsweringSimple',
	    'XLNetForSequenceClassification',
	    'XLNetForTokenClassification',
	    'XLNetLMHeadModel',
	    'XLNetModel',
	    'XLNetPreTrainedModel',
	    'load_tf_weights_in_xlnet',
	]

try:
	if not is_tf_available():
		raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
	pass
else:
	A							:					List[Any]     						=     [
	    'TF_XLNET_PRETRAINED_MODEL_ARCHIVE_LIST',
	    'TFXLNetForMultipleChoice',
	    'TFXLNetForQuestionAnsweringSimple',
	    'TFXLNetForSequenceClassification',
	    'TFXLNetForTokenClassification',
	    'TFXLNetLMHeadModel',
	    'TFXLNetMainLayer',
	    'TFXLNetModel',
	    'TFXLNetPreTrainedModel',
	]


if TYPE_CHECKING:
	from .configuration_xlnet import XLNET_PRETRAINED_CONFIG_ARCHIVE_MAP, XLNetConfig

	try:
		if not is_sentencepiece_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_xlnet import XLNetTokenizer

	try:
		if not is_tokenizers_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .tokenization_xlnet_fast import XLNetTokenizerFast

	try:
		if not is_torch_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_xlnet import (
		    XLNET_PRETRAINED_MODEL_ARCHIVE_LIST,
		    XLNetForMultipleChoice,
		    XLNetForQuestionAnswering,
		    XLNetForQuestionAnsweringSimple,
		    XLNetForSequenceClassification,
		    XLNetForTokenClassification,
		    XLNetLMHeadModel,
		    XLNetModel,
		    XLNetPreTrainedModel,
		    load_tf_weights_in_xlnet,
		)

	try:
		if not is_tf_available():
			raise OptionalDependencyNotAvailable()
	except OptionalDependencyNotAvailable:
		pass
	else:
		from .modeling_tf_xlnet import (
		    TF_XLNET_PRETRAINED_MODEL_ARCHIVE_LIST,
		    TFXLNetForMultipleChoice,
		    TFXLNetForQuestionAnsweringSimple,
		    TFXLNetForSequenceClassification,
		    TFXLNetForTokenClassification,
		    TFXLNetLMHeadModel,
		    TFXLNetMainLayer,
		    TFXLNetModel,
		    TFXLNetPreTrainedModel,
		)

else:
	import sys

	A							:					List[Any]     						=     _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)









import torch
from torch import nn
from transformers import CLIPPreTrainedModel, CLIPVisionModel

from ...models.attention import BasicTransformerBlock
from ...utils import logging


A							:					int     						=     logging.get_logger(__name__)  # pylint: disable=invalid-name






class     UpperCamelCase(  _a   ):


					def __init__(						self	:		Optional[int]     ,    SCREAMING_SNAKE_CASE	:		Optional[int]     ,    SCREAMING_SNAKE_CASE	:		Dict=7_6_8						)			->	int:




											'''simple docstring'''

											super().__init__(SCREAMING_SNAKE_CASE						)
											__snake_case				=		proj_size

											__snake_case				=		CLIPVisionModel(SCREAMING_SNAKE_CASE						)
											__snake_case				=		PaintByExampleMapper(SCREAMING_SNAKE_CASE						)
											__snake_case				=		nn.LayerNorm(config.hidden_size						)
											__snake_case				=		nn.Linear(config.hidden_size     ,    self.proj_size						)

											# uncondition for scaling
											__snake_case				=		nn.Parameter(torch.randn((1, 1, self.proj_size)						)						)






					def 							SCREAMING_SNAKE_CASE_  (						self	:		Union[str, Any]     ,    SCREAMING_SNAKE_CASE	:		int     ,    SCREAMING_SNAKE_CASE	:		Optional[int]=False						)			->	Dict:




											'''simple docstring'''

											__snake_case				=		self.model(pixel_values=SCREAMING_SNAKE_CASE						)
											__snake_case				=		clip_output.pooler_output
											__snake_case				=		self.mapper(latent_states[:, None]						)
											__snake_case				=		self.final_layer_norm(SCREAMING_SNAKE_CASE						)
											__snake_case				=		self.proj_out(SCREAMING_SNAKE_CASE						)
											if return_uncond_vector:
																	return latent_states, self.uncond_vector

											return latent_states






class     UpperCamelCase(  nn.Module   ):


					def __init__(						self	:		List[Any]     ,    SCREAMING_SNAKE_CASE	:		List[str]						)			->	List[Any]:




											'''simple docstring'''

											super().__init__()
											__snake_case				=		(config.num_hidden_layers + 1) // 5
											__snake_case				=		config.hidden_size
											__snake_case				=		1
											__snake_case				=		nn.ModuleList(
											    [
											        BasicTransformerBlock(SCREAMING_SNAKE_CASE     ,    SCREAMING_SNAKE_CASE     ,    SCREAMING_SNAKE_CASE     ,    activation_fn="gelu"     ,    attention_bias=SCREAMING_SNAKE_CASE						)
											        for _ in range(SCREAMING_SNAKE_CASE						)
											    ]						)






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




											'''simple docstring'''

											for block in self.blocks:
																	__snake_case				=		block(SCREAMING_SNAKE_CASE						)

											return hidden_states





