





'''simple docstring'''




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


lowercase__   :				Union[str, Any]      =   logging.get_logger(__name__)

lowercase__   :				str      =   {
    '''uclanlp/visualbert-vqa''': '''https://huggingface.co/uclanlp/visualbert-vqa/resolve/main/config.json''',
    '''uclanlp/visualbert-vqa-pre''': '''https://huggingface.co/uclanlp/visualbert-vqa-pre/resolve/main/config.json''',
    '''uclanlp/visualbert-vqa-coco-pre''': (
        '''https://huggingface.co/uclanlp/visualbert-vqa-coco-pre/resolve/main/config.json'''
    ),
    '''uclanlp/visualbert-vcr''': '''https://huggingface.co/uclanlp/visualbert-vcr/resolve/main/config.json''',
    '''uclanlp/visualbert-vcr-pre''': '''https://huggingface.co/uclanlp/visualbert-vcr-pre/resolve/main/config.json''',
    '''uclanlp/visualbert-vcr-coco-pre''': (
        '''https://huggingface.co/uclanlp/visualbert-vcr-coco-pre/resolve/main/config.json'''
    ),
    '''uclanlp/visualbert-nlvr2''': '''https://huggingface.co/uclanlp/visualbert-nlvr2/resolve/main/config.json''',
    '''uclanlp/visualbert-nlvr2-pre''': '''https://huggingface.co/uclanlp/visualbert-nlvr2-pre/resolve/main/config.json''',
    '''uclanlp/visualbert-nlvr2-coco-pre''': (
        '''https://huggingface.co/uclanlp/visualbert-nlvr2-coco-pre/resolve/main/config.json'''
    )
    # See all VisualBERT models at https://huggingface.co/models?filter=visual_bert
}


class 			SCREAMING_SNAKE_CASE   (a__							):
     lowerCAmelCase		      =	'''visual_bert'''


     def __init__(						self						,     _UpperCAmelCase=3_0522						,     _UpperCAmelCase=768						,     _UpperCAmelCase=512						,     _UpperCAmelCase=12						,     _UpperCAmelCase=12						,     _UpperCAmelCase=3072						,     _UpperCAmelCase="gelu"						,     _UpperCAmelCase=0.1						,     _UpperCAmelCase=0.1						,     _UpperCAmelCase=512						,     _UpperCAmelCase=2						,     _UpperCAmelCase=0.02						,     _UpperCAmelCase=1e-1_2						,     _UpperCAmelCase=False						,     _UpperCAmelCase=True						,     _UpperCAmelCase=1						,     _UpperCAmelCase=0						,     _UpperCAmelCase=2						,     **_UpperCAmelCase						,     ):

          '''simple docstring'''






          super().__init__(pad_token_id=_UpperCAmelCase						,     bos_token_id=_UpperCAmelCase						,     eos_token_id=_UpperCAmelCase						,     **_UpperCAmelCase)

          __A						:			str								=	vocab_size
          __A						:			Union[str, Any]								=	max_position_embeddings
          __A						:			Dict								=	hidden_size
          __A						:			Optional[Any]								=	visual_embedding_dim
          __A						:			int								=	num_hidden_layers
          __A						:			str								=	num_attention_heads
          __A						:			int								=	intermediate_size
          __A						:			List[str]								=	hidden_act
          __A						:			str								=	hidden_dropout_prob
          __A						:			int								=	attention_probs_dropout_prob
          __A						:			str								=	initializer_range
          __A						:			List[str]								=	type_vocab_size
          __A						:			Tuple								=	layer_norm_eps
          __A						:			Union[str, Any]								=	bypass_transformer
          __A						:			int								=	special_visual_initialize






'''simple docstring'''




import PIL.Image
import PIL.ImageOps
from packaging import version
from PIL import Image


if version.parse(version.parse(PIL.__version__).base_version) >= version.parse('''9.1.0'''):
  lowercase__   :				Dict      =   {
      '''linear''': PIL.Image.Resampling.BILINEAR,
      '''bilinear''': PIL.Image.Resampling.BILINEAR,
      '''bicubic''': PIL.Image.Resampling.BICUBIC,
      '''lanczos''': PIL.Image.Resampling.LANCZOS,
      '''nearest''': PIL.Image.Resampling.NEAREST,
  }
else:
  lowercase__   :				Any      =   {
      '''linear''': PIL.Image.LINEAR,
      '''bilinear''': PIL.Image.BILINEAR,
      '''bicubic''': PIL.Image.BICUBIC,
      '''lanczos''': PIL.Image.LANCZOS,
      '''nearest''': PIL.Image.NEAREST,
  }






def 	_lowerCAmelCase      (  __snake_case  :			Any      )					->					Optional[Any]:
     __A						:			Dict								=	(images / 2 + 0.5).clamp(0			,							1      )
     __A						:			str								=	images.cpu().permute(0			,							2			,							3			,							1      ).float().numpy()
     __A						:			Dict								=	numpy_to_pil(__snake_case      )
     return images







def 	_lowerCAmelCase      (  __snake_case  :			List[Any]      )					->					Optional[Any]:
     if images.ndim == 3:
          __A						:			List[Any]								=	images[None, ...]
     __A						:			List[str]								=	(images * 2_55).round().astype('uint8'      )
     if images.shape[-1] == 1:
          # special case for grayscale (single channel) images
          __A						:			str								=	[Image.fromarray(image.squeeze()			,							mode='L'      ) for image in images]
     else:
          __A						:			str								=	[Image.fromarray(__snake_case      ) for image in images]

     return pil_images