U
    &c{                     @   sF   d Z ddlZddlmZ eeZddddd	d
ZG dd deZdS )z BART configuration     N   )PretrainedConfigzShttps://s3.amazonaws.com/models.huggingface.co/bert/facebook/bart-large/config.jsonzXhttps://s3.amazonaws.com/models.huggingface.co/bert/facebook/bart-large-mnli/config.jsonzWhttps://s3.amazonaws.com/models.huggingface.co/bert/facebook/bart-large-cnn/config.jsonzXhttps://s3.amazonaws.com/models.huggingface.co/bert/facebook/bart-large-xsum/config.jsonzZhttps://s3.amazonaws.com/models.huggingface.co/bert/facebook/mbart-large-en-ro/config.json)z
bart-largezbart-large-mnlizbart-large-cnnzbart-large-xsumzmbart-large-en-roc                       s\   e Zd ZdZdZeZd fdd	Zee	dddZ
ee	dddZedddZ  ZS )
BartConfigzb
        Configuration class for Bart. Parameters are renamed from the fairseq implementation
    Zbart        geluY              皙?{Gz?   Tr   r      Fc                    s   d|krt dt jf |||||d| || _|| _|| _| | _| _|| _|| _	|| _
|| _|	| _|
| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _|| _dS )z
            :class:`~transformers.BartConfig` is the configuration class for `BartModel`.
            Examples:
                config = BartConfig.from_pretrained('bart-large')
                model = BartModel(config)
        hidden_sizezhidden size is called d_model)
num_labelspad_token_idbos_token_ideos_token_idis_encoder_decoderN)
ValueErrorsuper__init__
vocab_sized_modelencoder_ffn_dimencoder_layersZnum_hidden_layersencoder_attention_headsencoder_layerdropdecoder_layerdropdecoder_ffn_dimdecoder_layersdecoder_attention_headsmax_position_embeddingsinit_stdactivation_functionscale_embeddingnormalize_embeddingnormalize_beforeadd_final_layer_normadd_bias_logitsstatic_position_embeddingsattention_dropoutactivation_dropoutdropoutZclassif_dropout)selfr-   r%   r   r   r   r   r   r    r!   r"   r   r   r,   r.   r#   r$   Zclassifier_dropoutr   r   r   r   r   r(   r)   r&   r'   r+   r*   Zcommon_kwargs	__class__ C/tmp/pip-unpacked-wheel-ymerj3tt/transformers/configuration_bart.pyr   )   sD    &zBartConfig.__init__)returnc                 C   s   | j S N)r   r/   r2   r2   r3   num_attention_headsy   s    zBartConfig.num_attention_headsc                 C   s   | j S r5   )r   r6   r2   r2   r3   r   }   s    zBartConfig.hidden_sizec                 C   s6   | j r| jr| jrdS | j s(| js(| jr2td dS )z2Is the configuration aligned with the MBART paper.Tz:This configuration is a mixture of MBART and BART settingsF)r(   r)   r&   loggerinfor6   r2   r2   r3   is_valid_mbart   s
    
zBartConfig.is_valid_mbart)r   r   r   r   r	   r
   r   r	   r
   r   r   r   r   r   r   r   r   r   Tr   r   r   FFFTFF)__name__
__module____qualname____doc__Z
model_type"BART_PRETRAINED_CONFIG_ARCHIVE_MAPZpretrained_config_archive_mapr   propertyintr7   r   boolr:   __classcell__r2   r2   r0   r3   r   "   sJ                               Pr   )	r>   loggingZconfiguration_utilsr   	getLoggerr;   r8   r?   r   r2   r2   r2   r3   <module>   s   
	