code: from typing import Dict, Optional, Tuple
  
  import torch
  
  def      SCREAMING_SNAKE_CASE_  (		snake_case__							)  ->			torch.Tensor:
  							lowerCAmelCase				=	boundaries[1] - boundaries[0]
  							lowerCAmelCase				=	boundaries + step / 2
  							lowerCAmelCase				=	torch.cat([bin_centers, (bin_centers[-1] + step).unsqueeze(-1							)]     ,						dim=0							)
  							return bin_centers
  
  def      SCREAMING_SNAKE_CASE_  (		snake_case__     ,						snake_case__     ,						)  ->			Tuple[torch.Tensor, torch.Tensor]:
  							lowerCAmelCase				=	_calculate_bin_centers(snake_case__							)
  							return (
  							    torch.sum(aligned_distance_error_probs * bin_centers     ,						dim=-1							),
  							    bin_centers[-1],
  							)
  
  def      SCREAMING_SNAKE_CASE_  (		snake_case__     ,						snake_case__ = 3_1     ,						snake_case__ = 6_4     ,						**snake_case__     ,						)  ->			Dict[str, torch.Tensor]:
  							lowerCAmelCase				=	torch.linspace(0     ,						snake_case__     ,						steps=(no_bins - 1)     ,						device=logits.device							)
  
  							lowerCAmelCase				=	torch.nn.functional.softmax(snake_case__     ,						dim=-1							)
  							lowerCAmelCase	,   lowerCAmelCase				=	_calculate_expected_aligned_error(
  							    alignment_confidence_breaks=snake_case__     ,						aligned_distance_error_probs=snake_case__     ,						)
  
  							return {
  							    "aligned_confidence_probs": aligned_confidence_probs,
  							    "predicted_aligned_error": predicted_aligned_error,
  							    "max_predicted_aligned_error": max_predicted_aligned_error,
  							}
  
  
  
  
  
  
  def      SCREAMING_SNAKE_CASE_  (		snake_case__     ,						snake_case__ = None     ,						snake_case__ = 3_1     ,						snake_case__ = 6_4     ,						snake_case__ = 1E-8     ,						**snake_case__     ,						)  ->			torch.Tensor:
  							if residue_weights is None:
  														lowerCAmelCase				=	logits.new_ones(logits.shape[-2]							)
  
  							lowerCAmelCase				=	torch.linspace(0     ,						snake_case__     ,						steps=(no_bins - 1)     ,						device=logits.device							)
  
  							lowerCAmelCase				=	_calculate_bin_centers(snake_case__							)
  							torch.sum(snake_case__							)
  							lowerCAmelCase				=	logits.shape[-2]
  							lowerCAmelCase				=	max(snake_case__     ,						1_9							)
  
  							lowerCAmelCase				=	1.24 * (clipped_n - 1_5) ** (1.0 / 3) - 1.8
  
  							lowerCAmelCase				=	torch.nn.functional.softmax(snake_case__     ,						dim=-1							)
  
  							lowerCAmelCase				=	1.0 / (1 + (bin_centers**2) / (da**2))
  							lowerCAmelCase				=	torch.sum(probs * tm_per_bin     ,						dim=-1							)
  
  							lowerCAmelCase				=	residue_weights / (eps + residue_weights.sum())
  							lowerCAmelCase				=	torch.sum(predicted_tm_term * normed_residue_mask     ,						dim=-1							)
  
  							lowerCAmelCase				=	per_alignment * residue_weights
  
  							lowerCAmelCase				=	(weighted == torch.max(snake_case__							)).nonzero()[0]
  							return per_alignment[tuple(snake_case__							)]
  
  
  
  
style_context: from typing import Callable, Optional, Union
  
  from ...configuration_utils import PretrainedConfig
  from ...utils import logging
  
  
  lowercase__    :       Optional[Any]						=			logging.get_logger(__name__)
  
  lowercase__    :       Union[str, Any]						=			{
      '''microsoft/prophetnet-large-uncased''': (
          '''https://huggingface.co/microsoft/prophetnet-large-uncased/resolve/main/config.json'''
      ),
  }
  
  
  
  
  class      lowercase_						(						UpperCamelCase_		):
  
  
  
  	"""simple docstring"""
  
  
  
  
  
  	UpperCAmelCase_						:      Optional[int]     =       """prophetnet"""
  	UpperCAmelCase_						:      Optional[int]     =       ["""past_key_values"""]
  	UpperCAmelCase_						:      Any     =       {
  	    """num_attention_heads""": """num_encoder_attention_heads""",
  	}
  
  
  	def __init__(							self	,    __SCREAMING_SNAKE_CASE = 0.1	,    __SCREAMING_SNAKE_CASE = "gelu"	,    __SCREAMING_SNAKE_CASE = 30522	,    __SCREAMING_SNAKE_CASE = 1024	,    __SCREAMING_SNAKE_CASE = 4096	,    __SCREAMING_SNAKE_CASE = 12	,    __SCREAMING_SNAKE_CASE = 16	,    __SCREAMING_SNAKE_CASE = 4096	,    __SCREAMING_SNAKE_CASE = 12	,    __SCREAMING_SNAKE_CASE = 16	,    __SCREAMING_SNAKE_CASE = 0.1	,    __SCREAMING_SNAKE_CASE = 0.1	,    __SCREAMING_SNAKE_CASE = 512	,    __SCREAMING_SNAKE_CASE = 0.0_2	,    __SCREAMING_SNAKE_CASE = True	,    __SCREAMING_SNAKE_CASE = True	,    __SCREAMING_SNAKE_CASE = 0	,    __SCREAMING_SNAKE_CASE = 2	,    __SCREAMING_SNAKE_CASE = 32	,    __SCREAMING_SNAKE_CASE = 128	,    __SCREAMING_SNAKE_CASE = False	,    __SCREAMING_SNAKE_CASE = 0.0	,    __SCREAMING_SNAKE_CASE = True	,    __SCREAMING_SNAKE_CASE = 0	,    __SCREAMING_SNAKE_CASE = 1	,    __SCREAMING_SNAKE_CASE = 2	,    **__SCREAMING_SNAKE_CASE	,    )		->int:
  								lowerCAmelCase				=	vocab_size
  								lowerCAmelCase				=	hidden_size
  								lowerCAmelCase				=	encoder_ffn_dim
  								lowerCAmelCase				=	num_encoder_layers
  								lowerCAmelCase				=	num_encoder_attention_heads
  								lowerCAmelCase				=	decoder_ffn_dim
  								lowerCAmelCase				=	num_decoder_layers
  								lowerCAmelCase				=	num_decoder_attention_heads
  								lowerCAmelCase				=	max_position_embeddings
  								lowerCAmelCase				=	init_std  # Normal(0, this parameter)
  								lowerCAmelCase				=	activation_function
  
  								# parameters for prophetnet
  								lowerCAmelCase				=	ngram
  								lowerCAmelCase				=	num_buckets
  								lowerCAmelCase				=	relative_max_distance
  								lowerCAmelCase				=	disable_ngram_loss
  								lowerCAmelCase				=	eps
  
  								# 3 Types of Dropout
  								lowerCAmelCase				=	attention_dropout
  								lowerCAmelCase				=	activation_dropout
  								lowerCAmelCase				=	dropout
  
  								lowerCAmelCase				=	use_cache
  
  								super().__init__(
  								    pad_token_id=__SCREAMING_SNAKE_CASE	,    bos_token_id=__SCREAMING_SNAKE_CASE	,    eos_token_id=__SCREAMING_SNAKE_CASE	,    is_encoder_decoder=__SCREAMING_SNAKE_CASE	,    add_cross_attention=__SCREAMING_SNAKE_CASE	,    decoder_start_token_id=__SCREAMING_SNAKE_CASE	,    **__SCREAMING_SNAKE_CASE	,    )
  
  
  	@property
  	def     SCREAMING_SNAKE_CASE_       (							self       )		->int:
  								return self.num_encoder_layers + self.num_decoder_layers
  
  
  
  
  	@num_hidden_layers.setter
  	def     SCREAMING_SNAKE_CASE_       (							self	,    __SCREAMING_SNAKE_CASE       )		->Union[str, Any]:
  								raise NotImplementedError(
  								    '''This model does not support the setting of `num_hidden_layers`. Please set `num_encoder_layers` and'''
  								    ''' `num_decoder_layers`.'''       )
  
  
  
  