code: 
  
  
  import csv
  import dataclasses
  import json
  from dataclasses import dataclass
  from typing import List, Optional, Union
  
  from ...utils import is_tf_available, is_torch_available, logging
  
  
  SCREAMING_SNAKE_CASE : List[Any]          =    logging.get_logger(__name__)
  
  
  
  
  
  @dataclass
  class 					snake_case__  :
  	UpperCAmelCase   :							str
  	UpperCAmelCase   :							str
  	UpperCAmelCase   :							Optional[str]         = None
  	UpperCAmelCase   :							Optional[str]         = None
  
  
  
  
  
  	def     A				(  self							)		->			Dict:
  								"""simple docstring"""
  
  
  
  
  
  
  								return json.dumps(dataclasses.asdict(self							)				,    indent=2							) + "\n"
  
  
  
  
  
  @dataclass(frozen=__A       )
  class 					snake_case__  :
  	UpperCAmelCase   :							List[int]
  	UpperCAmelCase   :							Optional[List[int]]         = None
  	UpperCAmelCase   :							Optional[List[int]]         = None
  	UpperCAmelCase   :							Optional[Union[int, float]]         = None
  
  
  
  
  
  	def     A				(  self							)		->			Optional[Any]:
  								"""simple docstring"""
  
  
  
  
  
  
  								return json.dumps(dataclasses.asdict(self							)							) + "\n"
  
  
  
  
  
  class 					snake_case__  :
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_							)		->			Optional[Any]:
  								"""simple docstring"""
  
  
  
  
  
  
  								raise NotImplementedError()
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_							)		->			Any:
  								"""simple docstring"""
  
  
  
  
  
  
  								raise NotImplementedError()
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_							)		->			Dict:
  								"""simple docstring"""
  
  
  
  
  
  
  								raise NotImplementedError()
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_							)		->			List[str]:
  								"""simple docstring"""
  
  
  
  
  
  
  								raise NotImplementedError()
  
  
  
  
  
  	def     A				(  self							)		->			Optional[int]:
  								"""simple docstring"""
  
  
  
  
  
  
  								raise NotImplementedError()
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_							)		->			str:
  								"""simple docstring"""
  
  
  
  
  
  
  								if len(self.get_labels()							) > 1:
  															a_       :   Any			=	self.get_labels()[int(example.label							)]
  								return example
  
  
  
  
  
  	@classmethod
  	def     A				(  cls				,    UpperCamelCase_				,    UpperCamelCase_=None							)		->			str:
  								"""simple docstring"""
  
  
  
  
  
  
  								with open(UpperCamelCase_				,    """r"""				,    encoding="""utf-8-sig"""							) as f:
  															return list(csv.reader(UpperCamelCase_				,    delimiter="""\t"""				,    quotechar=UpperCamelCase_							)							)
  
  
  
  
  
  class 					snake_case__  ( __A       ):
  
  
  
  
  
  	def __init__(  self				,    UpperCamelCase_=None				,    UpperCamelCase_=None				,    UpperCamelCase_="classification"				,    UpperCamelCase_=False							)		->			Dict:
  								"""simple docstring"""
  
  
  
  
  
  
  								a_       :   Any			=	[] if labels is None else labels
  								a_       :   List[Any]			=	[] if examples is None else examples
  								a_       :   Any			=	mode
  								a_       :   Dict			=	verbose
  
  
  
  
  
  	def __len__(  self							)		->			int:
  								"""simple docstring"""
  
  
  
  
  
  
  								return len(self.examples							)
  
  
  
  
  
  	def __getitem__(  self				,    UpperCamelCase_							)		->			List[Any]:
  								"""simple docstring"""
  
  
  
  
  
  
  								if isinstance(UpperCamelCase_				,    UpperCamelCase_							):
  															return SingleSentenceClassificationProcessor(labels=self.labels				,    examples=self.examples[idx]							)
  								return self.examples[idx]
  
  
  
  
  
  	@classmethod
  	def     A				(  cls				,    UpperCamelCase_				,    UpperCamelCase_=""				,    UpperCamelCase_=0				,    UpperCamelCase_=1				,    UpperCamelCase_=None				,    UpperCamelCase_=False				,    **UpperCamelCase_							)		->			Dict:
  								"""simple docstring"""
  
  
  
  
  
  
  								a_       :   int			=	cls(**UpperCamelCase_							)
  								processor.add_examples_from_csv(
  								    UpperCamelCase_				,    split_name=UpperCamelCase_				,    column_label=UpperCamelCase_				,    column_text=UpperCamelCase_				,    column_id=UpperCamelCase_				,    skip_first_row=UpperCamelCase_				,    overwrite_labels=UpperCamelCase_				,    overwrite_examples=UpperCamelCase_				,    )
  								return processor
  
  
  
  
  
  	@classmethod
  	def     A				(  cls				,    UpperCamelCase_				,    UpperCamelCase_=None				,    **UpperCamelCase_							)		->			Optional[int]:
  								"""simple docstring"""
  
  
  
  
  
  
  								a_       :   Optional[int]			=	cls(**UpperCamelCase_							)
  								processor.add_examples(UpperCamelCase_				,    labels=UpperCamelCase_							)
  								return processor
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_				,    UpperCamelCase_=""				,    UpperCamelCase_=0				,    UpperCamelCase_=1				,    UpperCamelCase_=None				,    UpperCamelCase_=False				,    UpperCamelCase_=False				,    UpperCamelCase_=False				,    )		->			List[Any]:
  								"""simple docstring"""
  
  
  
  
  
  
  								a_       :   Any			=	self._read_tsv(UpperCamelCase_							)
  								if skip_first_row:
  															a_       :   Optional[int]			=	lines[1:]
  								a_       :   List[Any]			=	[]
  								a_       :   Union[str, Any]			=	[]
  								a_       :   Union[str, Any]			=	[]
  								for i, line in enumerate(UpperCamelCase_							):
  															texts.append(line[column_text]							)
  															labels.append(line[column_label]							)
  															if column_id is not None:
  																						ids.append(line[column_id]							)
  															else:
  																						a_       :   Dict			=	f"""{split_name}-{i}""" if split_name else str(UpperCamelCase_							)
  																						ids.append(UpperCamelCase_							)
  
  								return self.add_examples(
  								    UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_				,    overwrite_labels=UpperCamelCase_				,    overwrite_examples=UpperCamelCase_							)
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_				,    UpperCamelCase_=None				,    UpperCamelCase_=None				,    UpperCamelCase_=False				,    UpperCamelCase_=False							)		->			Any:
  								"""simple docstring"""
  
  
  
  
  
  
  								if labels is not None and len(UpperCamelCase_							) != len(UpperCamelCase_							):
  															raise ValueError(
  															    f"""Text and labels have mismatched lengths {len(UpperCamelCase_							)} and {len(UpperCamelCase_							)}"""							)
  								if ids is not None and len(UpperCamelCase_							) != len(UpperCamelCase_							):
  															raise ValueError(f"""Text and ids have mismatched lengths {len(UpperCamelCase_							)} and {len(UpperCamelCase_							)}"""							)
  								if ids is None:
  															a_       :   Any			=	[None] * len(UpperCamelCase_							)
  								if labels is None:
  															a_       :   Optional[Any]			=	[None] * len(UpperCamelCase_							)
  								a_       :   Optional[Any]			=	[]
  								a_       :   str			=	set()
  								for text_or_text_and_label, label, guid in zip(UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_							):
  															if isinstance(UpperCamelCase_				,    (tuple, list)							) and label is None:
  																						a_		,				a_       :   Any			=	text_or_text_and_label
  															else:
  																						a_       :   Union[str, Any]			=	text_or_text_and_label
  															added_labels.add(UpperCamelCase_							)
  															examples.append(InputExample(guid=UpperCamelCase_				,    text_a=UpperCamelCase_				,    text_b=UpperCamelCase_				,    label=UpperCamelCase_							)							)
  
  								# Update examples
  								if overwrite_examples:
  															a_       :   str			=	examples
  								else:
  															self.examples.extend(UpperCamelCase_							)
  
  								# Update labels
  								if overwrite_labels:
  															a_       :   Tuple			=	list(UpperCamelCase_							)
  								else:
  															a_       :   str			=	list(set(self.labels							).union(UpperCamelCase_							)							)
  
  								return self.examples
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_				,    UpperCamelCase_=None				,    UpperCamelCase_=False				,    UpperCamelCase_=0				,    UpperCamelCase_=True				,    UpperCamelCase_=None				,    )		->			Optional[int]:
  								"""simple docstring"""
  
  
  
  
  
  
  								if max_length is None:
  															a_       :   int			=	tokenizer.max_len
  
  								a_       :   List[str]			=	{label: i for i, label in enumerate(self.labels							)}
  
  								a_       :   Optional[int]			=	[]
  								for ex_index, example in enumerate(self.examples							):
  															if ex_index % 10000 == 0:
  																						logger.info(f"""Tokenizing example {ex_index}"""							)
  
  															a_       :   str			=	tokenizer.encode(
  															    example.text_a				,    add_special_tokens=UpperCamelCase_				,    max_length=min(UpperCamelCase_				,    tokenizer.max_len							)				,    )
  															all_input_ids.append(UpperCamelCase_							)
  
  								a_       :   List[Any]			=	max(len(UpperCamelCase_							) for input_ids in all_input_ids							)
  
  								a_       :   List[str]			=	[]
  								for ex_index, (input_ids, example) in enumerate(zip(UpperCamelCase_				,    self.examples							)							):
  															if ex_index % 10000 == 0:
  																						logger.info(f"""Writing example {ex_index}/{len(self.examples							)}"""							)
  															# The mask has 1 for real tokens and 0 for padding tokens. Only real
  															# tokens are attended to.
  															a_       :   int			=	[1 if mask_padding_with_zero else 0] * len(UpperCamelCase_							)
  
  															# Zero-pad up to the sequence length.
  															a_       :   str			=	batch_length - len(UpperCamelCase_							)
  															if pad_on_left:
  																						a_       :   Optional[int]			=	([pad_token] * padding_length) + input_ids
  																						a_       :   List[str]			=	([0 if mask_padding_with_zero else 1] * padding_length) + attention_mask
  															else:
  																						a_       :   Optional[Any]			=	input_ids + ([pad_token] * padding_length)
  																						a_       :   Any			=	attention_mask + ([0 if mask_padding_with_zero else 1] * padding_length)
  
  															if len(UpperCamelCase_							) != batch_length:
  																						raise ValueError(f"""Error with input length {len(UpperCamelCase_							)} vs {batch_length}"""							)
  															if len(UpperCamelCase_							) != batch_length:
  																						raise ValueError(f"""Error with input length {len(UpperCamelCase_							)} vs {batch_length}"""							)
  
  															if self.mode == "classification":
  																						a_       :   Optional[int]			=	label_map[example.label]
  															elif self.mode == "regression":
  																						a_       :   Optional[Any]			=	float(example.label							)
  															else:
  																						raise ValueError(self.mode							)
  
  															if ex_index < 5 and self.verbose:
  																						logger.info("""*** Example ***"""							)
  																						logger.info(f"""guid: {example.guid}"""							)
  																						logger.info(f"""input_ids: {' '.join([str(UpperCamelCase_							) for x in input_ids]							)}"""							)
  																						logger.info(f"""attention_mask: {' '.join([str(UpperCamelCase_							) for x in attention_mask]							)}"""							)
  																						logger.info(f"""label: {example.label} (id = {label})"""							)
  
  															features.append(InputFeatures(input_ids=UpperCamelCase_				,    attention_mask=UpperCamelCase_				,    label=UpperCamelCase_							)							)
  
  								if return_tensors is None:
  															return features
  								elif return_tensors == "tf":
  															if not is_tf_available():
  																						raise RuntimeError("""return_tensors set to 'tf' but TensorFlow 2.0 can't be imported"""							)
  															import tensorflow as tf
  
  															def gen():
  																						for ex in features:
  																													yield ({"input_ids": ex.input_ids, "attention_mask": ex.attention_mask}, ex.label)
  
  															a_       :   List[Any]			=	tf.data.Dataset.from_generator(
  															    UpperCamelCase_				,    ({"""input_ids""": tf.intaa, """attention_mask""": tf.intaa}, tf.intaa)				,    ({"""input_ids""": tf.TensorShape([None]							), """attention_mask""": tf.TensorShape([None]							)}, tf.TensorShape([]							))				,    )
  															return dataset
  								elif return_tensors == "pt":
  															if not is_torch_available():
  																						raise RuntimeError("""return_tensors set to 'pt' but PyTorch can't be imported"""							)
  															import torch
  															from torch.utils.data import TensorDataset
  
  															a_       :   Any			=	torch.tensor([f.input_ids for f in features]				,    dtype=torch.long							)
  															a_       :   List[Any]			=	torch.tensor([f.attention_mask for f in features]				,    dtype=torch.long							)
  															if self.mode == "classification":
  																						a_       :   List[str]			=	torch.tensor([f.label for f in features]				,    dtype=torch.long							)
  															elif self.mode == "regression":
  																						a_       :   str			=	torch.tensor([f.label for f in features]				,    dtype=torch.float							)
  
  															a_       :   Optional[Any]			=	TensorDataset(UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_							)
  															return dataset
  								else:
  															raise ValueError("""return_tensors should be one of 'tf' or 'pt'"""							)
  
  
  
style_context: 
  
  
  from dataclasses import dataclass
  from typing import Any, Dict, Optional
  
  import torch
  import torch.nn.functional as F
  from torch import nn
  
  from ..configuration_utils import ConfigMixin, register_to_config
  from ..models.embeddings import ImagePositionalEmbeddings
  from ..utils import BaseOutput, deprecate
  from .attention import BasicTransformerBlock
  from .embeddings import PatchEmbed
  from .modeling_utils import ModelMixin
  
  
  
  
  
  @dataclass
  class 					snake_case__  ( __A       ):
  	UpperCAmelCase   :							torch.FloatTensor
  
  
  
  
  
  class 					snake_case__  ( __A      ,    __A       ):
  
  
  
  
  
  	@register_to_config
  	def __init__(  self				,    UpperCamelCase_ = 16				,    UpperCamelCase_ = 88				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = 1				,    UpperCamelCase_ = 0.0				,    UpperCamelCase_ = 32				,    UpperCamelCase_ = None				,    UpperCamelCase_ = False				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = "geglu"				,    UpperCamelCase_ = None				,    UpperCamelCase_ = False				,    UpperCamelCase_ = False				,    UpperCamelCase_ = False				,    UpperCamelCase_ = "layer_norm"				,    UpperCamelCase_ = True				,    )		->			Union[str, Any]:
  								"""simple docstring"""
  
  
  
  
  
  
  								super().__init__()
  								a_       :   Dict			=	use_linear_projection
  								a_       :   Tuple			=	num_attention_heads
  								a_       :   List[Any]			=	attention_head_dim
  								a_       :   Dict			=	num_attention_heads * attention_head_dim
  
  								# 1. Transformer2DModel can process both standard continuous images of shape `(batch_size, num_channels, width, height)` as well as quantized image embeddings of shape `(batch_size, num_image_vectors)`
  								# Define whether input is continuous or discrete depending on configuration
  								a_       :   List[Any]			=	(in_channels is not None) and (patch_size is None)
  								a_       :   Dict			=	num_vector_embeds is not None
  								a_       :   Union[str, Any]			=	in_channels is not None and patch_size is not None
  
  								if norm_type == "layer_norm" and num_embeds_ada_norm is not None:
  															a_       :   int			=	(
  															    f"""The configuration file of this model: {self.__class__} is outdated. `norm_type` is either not set or"""
  															    """ incorrectly set to `'layer_norm'`.Make sure to set `norm_type` to `'ada_norm'` in the config."""
  															    """ Please make sure to update the config accordingly as leaving `norm_type` might led to incorrect"""
  															    """ results in future versions. If you have downloaded this checkpoint from the Hugging Face Hub, it"""
  															    """ would be very nice if you could open a Pull request for the `transformer/config.json` file"""
  															)
  															deprecate("""norm_type!=num_embeds_ada_norm"""				,    """1.0.0"""				,    UpperCamelCase_				,    standard_warn=UpperCamelCase_							)
  															a_       :   List[Any]			=	"""ada_norm"""
  
  								if self.is_input_continuous and self.is_input_vectorized:
  															raise ValueError(
  															    f"""Cannot define both `in_channels`: {in_channels} and `num_vector_embeds`: {num_vector_embeds}. Make"""
  															    """ sure that either `in_channels` or `num_vector_embeds` is None."""							)
  								elif self.is_input_vectorized and self.is_input_patches:
  															raise ValueError(
  															    f"""Cannot define both `num_vector_embeds`: {num_vector_embeds} and `patch_size`: {patch_size}. Make"""
  															    """ sure that either `num_vector_embeds` or `num_patches` is None."""							)
  								elif not self.is_input_continuous and not self.is_input_vectorized and not self.is_input_patches:
  															raise ValueError(
  															    f"""Has to define `in_channels`: {in_channels}, `num_vector_embeds`: {num_vector_embeds}, or patch_size:"""
  															    f""" {patch_size}. Make sure that `in_channels`, `num_vector_embeds` or `num_patches` is not None."""							)
  
  								# 2. Define input layers
  								if self.is_input_continuous:
  															a_       :   List[Any]			=	in_channels
  
  															a_       :   List[str]			=	torch.nn.GroupNorm(num_groups=UpperCamelCase_				,    num_channels=UpperCamelCase_				,    eps=1e-6				,    affine=UpperCamelCase_							)
  															if use_linear_projection:
  																						a_       :   int			=	nn.Linear(UpperCamelCase_				,    UpperCamelCase_							)
  															else:
  																						a_       :   Optional[Any]			=	nn.Convad(UpperCamelCase_				,    UpperCamelCase_				,    kernel_size=1				,    stride=1				,    padding=0							)
  								elif self.is_input_vectorized:
  															assert sample_size is not None, "Transformer2DModel over discrete input must provide sample_size"
  															assert num_vector_embeds is not None, "Transformer2DModel over discrete input must provide num_embed"
  
  															a_       :   Optional[Any]			=	sample_size
  															a_       :   str			=	sample_size
  															a_       :   str			=	num_vector_embeds
  															a_       :   str			=	self.height * self.width
  
  															a_       :   int			=	ImagePositionalEmbeddings(
  															    num_embed=UpperCamelCase_				,    embed_dim=UpperCamelCase_				,    height=self.height				,    width=self.width							)
  								elif self.is_input_patches:
  															assert sample_size is not None, "Transformer2DModel over patched input must provide sample_size"
  
  															a_       :   Dict			=	sample_size
  															a_       :   List[Any]			=	sample_size
  
  															a_       :   Tuple			=	patch_size
  															a_       :   Optional[Any]			=	PatchEmbed(
  															    height=UpperCamelCase_				,    width=UpperCamelCase_				,    patch_size=UpperCamelCase_				,    in_channels=UpperCamelCase_				,    embed_dim=UpperCamelCase_				,    )
  
  								# 3. Define transformers blocks
  								a_       :   List[Any]			=	nn.ModuleList(
  								    [
  								        BasicTransformerBlock(
  								            UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_				,    dropout=UpperCamelCase_				,    cross_attention_dim=UpperCamelCase_				,    activation_fn=UpperCamelCase_				,    num_embeds_ada_norm=UpperCamelCase_				,    attention_bias=UpperCamelCase_				,    only_cross_attention=UpperCamelCase_				,    upcast_attention=UpperCamelCase_				,    norm_type=UpperCamelCase_				,    norm_elementwise_affine=UpperCamelCase_				,    )
  								        for d in range(UpperCamelCase_							)
  								    ]							)
  
  								# 4. Define output layers
  								a_       :   str			=	in_channels if out_channels is None else out_channels
  								if self.is_input_continuous:
  															# TODO: should use out_channels for continuous projections
  															if use_linear_projection:
  																						a_       :   Optional[int]			=	nn.Linear(UpperCamelCase_				,    UpperCamelCase_							)
  															else:
  																						a_       :   Any			=	nn.Convad(UpperCamelCase_				,    UpperCamelCase_				,    kernel_size=1				,    stride=1				,    padding=0							)
  								elif self.is_input_vectorized:
  															a_       :   Optional[int]			=	nn.LayerNorm(UpperCamelCase_							)
  															a_       :   str			=	nn.Linear(UpperCamelCase_				,    self.num_vector_embeds - 1							)
  								elif self.is_input_patches:
  															a_       :   int			=	nn.LayerNorm(UpperCamelCase_				,    elementwise_affine=UpperCamelCase_				,    eps=1e-6							)
  															a_       :   str			=	nn.Linear(UpperCamelCase_				,    2 * inner_dim							)
  															a_       :   Optional[int]			=	nn.Linear(UpperCamelCase_				,    patch_size * patch_size * self.out_channels							)
  
  
  
  
  
  	def     A				(  self				,    UpperCamelCase_				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = None				,    UpperCamelCase_ = True				,    )		->			str:
  								"""simple docstring"""
  
  
  
  
  
  
  								if attention_mask is not None and attention_mask.ndim == 2:
  															# assume that mask is expressed as:
  															#   (1 = keep,      0 = discard)
  															# convert mask into a bias that can be added to attention scores:
  															#       (keep = +0,     discard = -10000.0)
  															a_       :   str			=	(1 - attention_mask.to(hidden_states.dtype							)) * -1_0000.0
  															a_       :   Union[str, Any]			=	attention_mask.unsqueeze(1							)
  
  								# convert encoder_attention_mask to a bias the same way we do for attention_mask
  								if encoder_attention_mask is not None and encoder_attention_mask.ndim == 2:
  															a_       :   Any			=	(1 - encoder_attention_mask.to(hidden_states.dtype							)) * -1_0000.0
  															a_       :   List[str]			=	encoder_attention_mask.unsqueeze(1							)
  
  								# 1. Input
  								if self.is_input_continuous:
  															a_		,				a_		,				a_		,				a_       :   str			=	hidden_states.shape
  															a_       :   Optional[Any]			=	hidden_states
  
  															a_       :   Optional[int]			=	self.norm(UpperCamelCase_							)
  															if not self.use_linear_projection:
  																						a_       :   int			=	self.proj_in(UpperCamelCase_							)
  																						a_       :   str			=	hidden_states.shape[1]
  																						a_       :   List[str]			=	hidden_states.permute(0				,    2				,    3				,    1							).reshape(UpperCamelCase_				,    height * width				,    UpperCamelCase_							)
  															else:
  																						a_       :   int			=	hidden_states.shape[1]
  																						a_       :   Optional[int]			=	hidden_states.permute(0				,    2				,    3				,    1							).reshape(UpperCamelCase_				,    height * width				,    UpperCamelCase_							)
  																						a_       :   Tuple			=	self.proj_in(UpperCamelCase_							)
  								elif self.is_input_vectorized:
  															a_       :   List[str]			=	self.latent_image_embedding(UpperCamelCase_							)
  								elif self.is_input_patches:
  															a_       :   Optional[int]			=	self.pos_embed(UpperCamelCase_							)
  
  								# 2. Blocks
  								for block in self.transformer_blocks:
  															a_       :   int			=	block(
  															    UpperCamelCase_				,    attention_mask=UpperCamelCase_				,    encoder_hidden_states=UpperCamelCase_				,    encoder_attention_mask=UpperCamelCase_				,    timestep=UpperCamelCase_				,    cross_attention_kwargs=UpperCamelCase_				,    class_labels=UpperCamelCase_				,    )
  
  								# 3. Output
  								if self.is_input_continuous:
  															if not self.use_linear_projection:
  																						a_       :   Dict			=	hidden_states.reshape(UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_							).permute(0				,    3				,    1				,    2							).contiguous()
  																						a_       :   List[Any]			=	self.proj_out(UpperCamelCase_							)
  															else:
  																						a_       :   Optional[int]			=	self.proj_out(UpperCamelCase_							)
  																						a_       :   int			=	hidden_states.reshape(UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_				,    UpperCamelCase_							).permute(0				,    3				,    1				,    2							).contiguous()
  
  															a_       :   int			=	hidden_states + residual
  								elif self.is_input_vectorized:
  															a_       :   str			=	self.norm_out(UpperCamelCase_							)
  															a_       :   str			=	self.out(UpperCamelCase_							)
  															# (batch, self.num_vector_embeds - 1, self.num_latent_pixels)
  															a_       :   int			=	logits.permute(0				,    2				,    1							)
  
  															# log(p(x_0))
  															a_       :   int			=	F.log_softmax(logits.double()				,    dim=1							).float()
  								elif self.is_input_patches:
  															# TODO: cleanup!
  															a_       :   Union[str, Any]			=	self.transformer_blocks[0].norma.emb(
  															    UpperCamelCase_				,    UpperCamelCase_				,    hidden_dtype=hidden_states.dtype							)
  															a_		,				a_       :   int			=	self.proj_out_a(F.silu(UpperCamelCase_							)							).chunk(2				,    dim=1							)
  															a_       :   Union[str, Any]			=	self.norm_out(UpperCamelCase_							) * (1 + scale[:, None]) + shift[:, None]
  															a_       :   Union[str, Any]			=	self.proj_out_a(UpperCamelCase_							)
  
  															# unpatchify
  															a_       :   Any			=	int(hidden_states.shape[1] ** 0.5							)
  															a_       :   str			=	hidden_states.reshape(
  															    shape=(-1, height, width, self.patch_size, self.patch_size, self.out_channels)							)
  															a_       :   Union[str, Any]			=	torch.einsum("""nhwpqc->nchpwq"""				,    UpperCamelCase_							)
  															a_       :   List[Any]			=	hidden_states.reshape(
  															    shape=(-1, self.out_channels, height * self.patch_size, width * self.patch_size)							)
  
  								if not return_dict:
  															return (output,)
  
  								return TransformeraDModelOutput(sample=UpperCamelCase_							)
  
  
  