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


_UpperCAmelCase :			List[Any]              =	logging.get_logger(__name__)

_UpperCAmelCase :			int              =	{
    "facebook/dpr-ctx_encoder-single-nq-base": (
        "https://huggingface.co/facebook/dpr-ctx_encoder-single-nq-base/resolve/main/config.json"
    ),
    "facebook/dpr-question_encoder-single-nq-base": (
        "https://huggingface.co/facebook/dpr-question_encoder-single-nq-base/resolve/main/config.json"
    ),
    "facebook/dpr-reader-single-nq-base": (
        "https://huggingface.co/facebook/dpr-reader-single-nq-base/resolve/main/config.json"
    ),
    "facebook/dpr-ctx_encoder-multiset-base": (
        "https://huggingface.co/facebook/dpr-ctx_encoder-multiset-base/resolve/main/config.json"
    ),
    "facebook/dpr-question_encoder-multiset-base": (
        "https://huggingface.co/facebook/dpr-question_encoder-multiset-base/resolve/main/config.json"
    ),
    "facebook/dpr-reader-multiset-base": (
        "https://huggingface.co/facebook/dpr-reader-multiset-base/resolve/main/config.json"
    ),
}


class     lowercase (		_SCREAMING_SNAKE_CASE       ):
		__lowercase	:	int     					=    "dpr"



		def __init__(			self    ,				A_=30_522    ,				A_=768    ,				A_=12    ,				A_=12    ,				A_=3_072    ,				A_="gelu"    ,				A_=0.1    ,				A_=0.1    ,				A_=512    ,				A_=2    ,				A_=0.02    ,				A_=1e-12    ,				A_=0    ,				A_="absolute"    ,				A_ = 0    ,				**A_    ,				)  -> Dict:
				"""simple docstring"""
				super().__init__(pad_token_id=A_    ,				**A_	)

				UpperCamelCase          =					vocab_size
				UpperCamelCase          =					hidden_size
				UpperCamelCase          =					num_hidden_layers
				UpperCamelCase          =					num_attention_heads
				UpperCamelCase          =					hidden_act
				UpperCamelCase          =					intermediate_size
				UpperCamelCase          =					hidden_dropout_prob
				UpperCamelCase          =					attention_probs_dropout_prob
				UpperCamelCase          =					max_position_embeddings
				UpperCamelCase          =					type_vocab_size
				UpperCamelCase          =					initializer_range
				UpperCamelCase          =					layer_norm_eps
				UpperCamelCase          =					projection_dim
				UpperCamelCase          =					position_embedding_type


from typing import Optional, Union

import torch
from torch import nn

from ...configuration_utils import ConfigMixin, register_to_config
from ...models.modeling_utils import ModelMixin


class     lowercase (		_SCREAMING_SNAKE_CASE  ,       _SCREAMING_SNAKE_CASE       ):



		@register_to_config
		def __init__(			self    ,				A_ = 768    ,				)  -> List[Any]:
				"""simple docstring"""
				super().__init__()

				UpperCamelCase          =					nn.Parameter(torch.zeros(1    ,				A_	)	)
				UpperCamelCase          =					nn.Parameter(torch.ones(1    ,				A_	)	)



		def __UpperCamelCase			(			self    ,				A_ = None    ,				A_ = None    ,				)  -> Any:
				"""simple docstring"""
				UpperCamelCase          =					nn.Parameter(self.mean.to(A_	).to(A_	)	)
				UpperCamelCase          =					nn.Parameter(self.std.to(A_	).to(A_	)	)
				return self



		def __UpperCamelCase			(			self    ,				A_	)  -> Dict:
				"""simple docstring"""
				UpperCamelCase          =					(embeds - self.mean) * 1.0 / self.std
				return embeds



		def __UpperCamelCase			(			self    ,				A_	)  -> Dict:
				"""simple docstring"""
				UpperCamelCase          =					(embeds * self.std) + self.mean
				return embeds
