


'''simple docstring'''





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


UpperCAmelCase__  			=				logging.get_logger(__name__)

UpperCAmelCase__  			=				{
    '''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 						a__					(					a_   ):





			'''simple docstring'''

			A						:				Optional[int]					      =			'''dpr'''
			def __init__(  self							:			Dict			,    lowerCAmelCase_							:			Tuple=30_522			,    lowerCAmelCase_							:			Dict=768			,    lowerCAmelCase_							:			Union[str, Any]=12			,    lowerCAmelCase_							:			Optional[Any]=12			,    lowerCAmelCase_							:			Optional[Any]=3_072			,    lowerCAmelCase_							:			str="gelu"			,    lowerCAmelCase_							:			Optional[int]=0.1			,    lowerCAmelCase_							:			Optional[int]=0.1			,    lowerCAmelCase_							:			Any=512			,    lowerCAmelCase_							:			Optional[int]=2			,    lowerCAmelCase_							:			Optional[int]=0.02			,    lowerCAmelCase_							:			Optional[Any]=1E-12			,    lowerCAmelCase_							:			Union[str, Any]=0			,    lowerCAmelCase_							:			Tuple="absolute"			,    lowerCAmelCase_							:			int = 0			,    **lowerCAmelCase_							:			Optional[Any]			,    )      ->		List[Any]:
						super().__init__(pad_token_id=lowerCAmelCase_			,    **lowerCAmelCase_	)

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







'''simple docstring'''





import numpy as np

from transformers import Pipeline






def 						UpperCAmelCase__(				_SCREAMING_SNAKE_CASE					: Any ):






			"""simple docstring"""




			__A=	np.max(_SCREAMING_SNAKE_CASE,axis=-1,keepdims=_SCREAMING_SNAKE_CASE )
			__A=	np.exp(outputs - maxes )
			return shifted_exp / shifted_exp.sum(axis=-1,keepdims=_SCREAMING_SNAKE_CASE )






class 						a__					(					a_   ):





			'''simple docstring'''

			def 					lowerCAmelCase     (  self							:			Optional[Any]			,    **lowerCAmelCase_							:			List[str]	)      ->		List[str]:
						__A=	{}
						if "second_text" in kwargs:
									__A=	kwargs['second_text']
						return preprocess_kwargs, {}, {}
			def 					lowerCAmelCase     (  self							:			str			,    lowerCAmelCase_							:			Union[str, Any]			,    lowerCAmelCase_							:			Optional[int]=None	)      ->		int:
						return self.tokenizer(lowerCAmelCase_			,    text_pair=lowerCAmelCase_			,    return_tensors=self.framework	)
			def 					lowerCAmelCase     (  self							:			Dict			,    lowerCAmelCase_							:			List[str]	)      ->		Tuple:
						return self.model(**lowerCAmelCase_	)

			def 					lowerCAmelCase     (  self							:			str			,    lowerCAmelCase_							:			Dict	)      ->		Optional[int]:
						__A=	model_outputs.logits[0].numpy()
						__A=	softmax(lowerCAmelCase_	)

						__A=	np.argmax(lowerCAmelCase_	)
						__A=	self.model.config.idalabel[best_class]
						__A=	probabilities[best_class].item()
						__A=	logits.tolist()
						return {"label": label, "score": score, "logits": logits}



