

from typing import Dict, Optional, Tuple

import torch




def        _lowercase  (					a_					:       torch.Tensor					)					->						torch.Tensor:




					'''simple docstring'''







					__magic_name__				=     boundaries[1] - boundaries[0]
					__magic_name__				=     boundaries + step / 2
					__magic_name__				=     torch.cat([bin_centers, (bin_centers[-1] + step).unsqueeze(-1					)]       ,dim=0					)
					return bin_centers




def        _lowercase  (					a_					:       torch.Tensor       ,a_					:       torch.Tensor       ,)					->						Tuple[torch.Tensor, torch.Tensor]:




					'''simple docstring'''







					__magic_name__				=     _calculate_bin_centers(a_					)
					return (
					    torch.sum(aligned_distance_error_probs * bin_centers       ,dim=-1					),
					    bin_centers[-1],
					)




def        _lowercase  (					a_					:       torch.Tensor       ,a_					:       int = 3_1       ,a_					:       int = 6_4       ,**a_					:       Union[str, Any]       ,)					->						Dict[str, torch.Tensor]:




					'''simple docstring'''







					__magic_name__				=     torch.linspace(0       ,a_       ,steps=(no_bins - 1)       ,device=logits.device					)

					__magic_name__				=     torch.nn.functional.softmax(a_       ,dim=-1					)
					__magic_name__,						__magic_name__				=     _calculate_expected_aligned_error(
					    alignment_confidence_breaks=a_       ,aligned_distance_error_probs=a_       ,)

					return {
					    "aligned_confidence_probs": aligned_confidence_probs,
					    "predicted_aligned_error": predicted_aligned_error,
					    "max_predicted_aligned_error": max_predicted_aligned_error,
					}




def        _lowercase  (					a_					:       torch.Tensor       ,a_					:       Optional[torch.Tensor] = None       ,a_					:       int = 3_1       ,a_					:       int = 6_4       ,a_					:       float = 1e-8       ,**a_					:       Tuple       ,)					->						torch.Tensor:




					'''simple docstring'''







					if residue_weights is None:
										__magic_name__				=     logits.new_ones(logits.shape[-2]					)

					__magic_name__				=     torch.linspace(0       ,a_       ,steps=(no_bins - 1)       ,device=logits.device					)

					__magic_name__				=     _calculate_bin_centers(a_					)
					torch.sum(a_					)
					__magic_name__				=     logits.shape[-2]
					__magic_name__				=     max(a_       ,1_9					)

					__magic_name__				=     1.24 * (clipped_n - 1_5) ** (1.0 / 3) - 1.8

					__magic_name__				=     torch.nn.functional.softmax(a_       ,dim=-1					)

					__magic_name__				=     1.0 / (1 + (bin_centers**2) / (da**2))
					__magic_name__				=     torch.sum(probs * tm_per_bin       ,dim=-1					)

					__magic_name__				=     residue_weights / (eps + residue_weights.sum())
					__magic_name__				=     torch.sum(predicted_tm_term * normed_residue_mask       ,dim=-1					)

					__magic_name__				=     per_alignment * residue_weights

					__magic_name__				=     (weighted == torch.max(a_					)).nonzero()[0]
					return per_alignment[tuple(a_					)]







from typing import Callable, Optional, Union

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


A__							=				logging.get_logger(__name__)

A__							=				{
    "microsoft/prophetnet-large-uncased": (
        "https://huggingface.co/microsoft/prophetnet-large-uncased/resolve/main/config.json"
    ),
}

class 					__UpperCamelCase					(       SCREAMING_SNAKE_CASE      ):
	_lowercase	: Union[str, Any]												=	"prophetnet"
	_lowercase	: Any												=	["past_key_values"]
	_lowercase	: int												=	{
	    "num_attention_heads": "num_encoder_attention_heads",
	}







	def __init__( self:			Union[str, Any]	,			__UpperCamelCase:			Optional[float] = 0.1	,			__UpperCamelCase:			Optional[Union[str, Callable]] = "gelu"	,			__UpperCamelCase:			Optional[int] = 3_05_22	,			__UpperCamelCase:			Optional[int] = 10_24	,			__UpperCamelCase:			Optional[int] = 40_96	,			__UpperCamelCase:			Optional[int] = 12	,			__UpperCamelCase:			Optional[int] = 16	,			__UpperCamelCase:			Optional[int] = 40_96	,			__UpperCamelCase:			Optional[int] = 12	,			__UpperCamelCase:			Optional[int] = 16	,			__UpperCamelCase:			Optional[float] = 0.1	,			__UpperCamelCase:			Optional[float] = 0.1	,			__UpperCamelCase:			Optional[int] = 5_12	,			__UpperCamelCase:			Optional[float] = 0.02	,			__UpperCamelCase:			Optional[bool] = True	,			__UpperCamelCase:			Optional[bool] = True	,			__UpperCamelCase:			Optional[int] = 0	,			__UpperCamelCase:			Optional[int] = 2	,			__UpperCamelCase:			Optional[int] = 32	,			__UpperCamelCase:			Optional[int] = 1_28	,			__UpperCamelCase:			Optional[bool] = False	,			__UpperCamelCase:			Optional[float] = 0.0	,			__UpperCamelCase:			Optional[bool] = True	,			__UpperCamelCase:			Optional[int] = 0	,			__UpperCamelCase:			Optional[int] = 1	,			__UpperCamelCase:			Optional[int] = 2	,			**__UpperCamelCase:			Optional[int]	,			):

						'''simple docstring'''





						__magic_name__				=     vocab_size
						__magic_name__				=     hidden_size
						__magic_name__				=     encoder_ffn_dim
						__magic_name__				=     num_encoder_layers
						__magic_name__				=     num_encoder_attention_heads
						__magic_name__				=     decoder_ffn_dim
						__magic_name__				=     num_decoder_layers
						__magic_name__				=     num_decoder_attention_heads
						__magic_name__				=     max_position_embeddings
						__magic_name__				=     init_std  # Normal(0, this parameter)
						__magic_name__				=     activation_function

						# parameters for prophetnet
						__magic_name__				=     ngram
						__magic_name__				=     num_buckets
						__magic_name__				=     relative_max_distance
						__magic_name__				=     disable_ngram_loss
						__magic_name__				=     eps

						# 3 Types of Dropout
						__magic_name__				=     attention_dropout
						__magic_name__				=     activation_dropout
						__magic_name__				=     dropout

						__magic_name__				=     use_cache

						super().__init__(
						    pad_token_id=__UpperCamelCase	,			bos_token_id=__UpperCamelCase	,			eos_token_id=__UpperCamelCase	,			is_encoder_decoder=__UpperCamelCase	,			add_cross_attention=__UpperCamelCase	,			decoder_start_token_id=__UpperCamelCase	,			**__UpperCamelCase	,			)







	@property
	def 						_SCREAMING_SNAKE_CASE				( self:			Tuple   ):

						'''simple docstring'''





						return self.num_encoder_layers + self.num_decoder_layers







	@num_hidden_layers.setter
	def 						_SCREAMING_SNAKE_CASE				( self:			Union[str, Any]	,			__UpperCamelCase:			List[Any]   ):

						'''simple docstring'''





						raise NotImplementedError(
						    'This model does not support the setting of `num_hidden_layers`. Please set `num_encoder_layers` and'
						    ' `num_decoder_layers`.'   )




