TF RoBERTa
This commit is contained in:
@@ -71,3 +71,10 @@ TFRobertaForSequenceClassification
|
|||||||
|
|
||||||
.. autoclass:: transformers.TFRobertaForSequenceClassification
|
.. autoclass:: transformers.TFRobertaForSequenceClassification
|
||||||
:members:
|
:members:
|
||||||
|
|
||||||
|
|
||||||
|
TFRobertaForTokenClassification
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
.. autoclass:: transformers.TFRobertaForTokenClassification
|
||||||
|
:members:
|
||||||
|
|||||||
@@ -104,41 +104,29 @@ class TFRobertaPreTrainedModel(TFPreTrainedModel):
|
|||||||
base_model_prefix = "roberta"
|
base_model_prefix = "roberta"
|
||||||
|
|
||||||
|
|
||||||
ROBERTA_START_DOCSTRING = r""" The RoBERTa model was proposed in
|
ROBERTA_START_DOCSTRING = r"""
|
||||||
`RoBERTa: A Robustly Optimized BERT Pretraining Approach`_
|
This model is a `tf.keras.Model <https://www.tensorflow.org/api_docs/python/tf/keras/Model>`__ sub-class.
|
||||||
by Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer,
|
Use it as a regular TF 2.0 Keras Model and
|
||||||
Veselin Stoyanov. It is based on Google's BERT model released in 2018.
|
|
||||||
|
|
||||||
It builds on BERT and modifies key hyperparameters, removing the next-sentence pretraining
|
|
||||||
objective and training with much larger mini-batches and learning rates.
|
|
||||||
|
|
||||||
This implementation is the same as BertModel with a tiny embeddings tweak as well as a setup for Roberta pretrained
|
|
||||||
models.
|
|
||||||
|
|
||||||
This model is a tf.keras.Model `tf.keras.Model`_ sub-class. Use it as a regular TF 2.0 Keras Model and
|
|
||||||
refer to the TF 2.0 documentation for all matter related to general usage and behavior.
|
refer to the TF 2.0 documentation for all matter related to general usage and behavior.
|
||||||
|
|
||||||
.. _`RoBERTa: A Robustly Optimized BERT Pretraining Approach`:
|
.. note::
|
||||||
https://arxiv.org/abs/1907.11692
|
|
||||||
|
|
||||||
.. _`tf.keras.Model`:
|
|
||||||
https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/Model
|
|
||||||
|
|
||||||
Note on the model inputs:
|
|
||||||
TF 2.0 models accepts two formats as inputs:
|
TF 2.0 models accepts two formats as inputs:
|
||||||
|
|
||||||
- having all inputs as keyword arguments (like PyTorch models), or
|
- having all inputs as keyword arguments (like PyTorch models), or
|
||||||
- having all inputs as a list, tuple or dict in the first positional arguments.
|
- having all inputs as a list, tuple or dict in the first positional arguments.
|
||||||
|
|
||||||
This second option is usefull when using `tf.keras.Model.fit()` method which currently requires having all the tensors in the first argument of the model call function: `model(inputs)`.
|
This second option is useful when using :obj:`tf.keras.Model.fit()` method which currently requires having
|
||||||
|
all the tensors in the first argument of the model call function: :obj:`model(inputs)`.
|
||||||
|
|
||||||
If you choose this second option, there are three possibilities you can use to gather all the input Tensors in the first positional argument :
|
If you choose this second option, there are three possibilities you can use to gather all the input Tensors
|
||||||
|
in the first positional argument :
|
||||||
|
|
||||||
- a single Tensor with input_ids only and nothing else: `model(inputs_ids)
|
- a single Tensor with input_ids only and nothing else: :obj:`model(inputs_ids)`
|
||||||
- a list of varying length with one or several input Tensors IN THE ORDER given in the docstring:
|
- a list of varying length with one or several input Tensors IN THE ORDER given in the docstring:
|
||||||
`model([input_ids, attention_mask])` or `model([input_ids, attention_mask, token_type_ids])`
|
:obj:`model([input_ids, attention_mask])` or :obj:`model([input_ids, attention_mask, token_type_ids])`
|
||||||
- a dictionary with one or several input Tensors associaed to the input names given in the docstring:
|
- a dictionary with one or several input Tensors associated to the input names given in the docstring:
|
||||||
`model({'input_ids': input_ids, 'token_type_ids': token_type_ids})`
|
:obj:`model({'input_ids': input_ids, 'token_type_ids': token_type_ids})`
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
config (:class:`~transformers.RobertaConfig`): Model configuration class with all the parameters of the
|
config (:class:`~transformers.RobertaConfig`): Model configuration class with all the parameters of the
|
||||||
@@ -147,75 +135,78 @@ ROBERTA_START_DOCSTRING = r""" The RoBERTa model was proposed in
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
ROBERTA_INPUTS_DOCSTRING = r"""
|
ROBERTA_INPUTS_DOCSTRING = r"""
|
||||||
Inputs:
|
Args:
|
||||||
**input_ids**: ``Numpy array`` or ``tf.Tensor`` of shape ``(batch_size, sequence_length)``:
|
input_ids (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length)`):
|
||||||
Indices of input sequence tokens in the vocabulary.
|
Indices of input sequence tokens in the vocabulary.
|
||||||
To match pre-training, RoBERTa input sequence should be formatted with <s> and </s> tokens as follows:
|
|
||||||
|
Indices can be obtained using :class:`transformers.RobertaTokenizer`.
|
||||||
(a) For sequence pairs:
|
|
||||||
|
|
||||||
``tokens: <s> Is this Jacksonville ? </s> </s> No it is not . </s>``
|
|
||||||
|
|
||||||
(b) For single sequences:
|
|
||||||
|
|
||||||
``tokens: <s> the dog is hairy . </s>``
|
|
||||||
|
|
||||||
Fully encoded sequences or sequence pairs can be obtained using the RobertaTokenizer.encode function with
|
|
||||||
the ``add_special_tokens`` parameter set to ``True``.
|
|
||||||
|
|
||||||
RoBERTa is a model with absolute position embeddings so it's usually advised to pad the inputs on
|
|
||||||
the right rather than the left.
|
|
||||||
|
|
||||||
See :func:`transformers.PreTrainedTokenizer.encode` and
|
See :func:`transformers.PreTrainedTokenizer.encode` and
|
||||||
:func:`transformers.PreTrainedTokenizer.convert_tokens_to_ids` for details.
|
:func:`transformers.PreTrainedTokenizer.encode_plus` for details.
|
||||||
**attention_mask**: (`optional`) ``Numpy array`` or ``tf.Tensor`` of shape ``(batch_size, sequence_length)``:
|
|
||||||
|
`What are input IDs? <../glossary.html#input-ids>`__
|
||||||
|
attention_mask (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length)`, `optional`, defaults to :obj:`None`):
|
||||||
Mask to avoid performing attention on padding token indices.
|
Mask to avoid performing attention on padding token indices.
|
||||||
Mask values selected in ``[0, 1]``:
|
Mask values selected in ``[0, 1]``:
|
||||||
``1`` for tokens that are NOT MASKED, ``0`` for MASKED tokens.
|
``1`` for tokens that are NOT MASKED, ``0`` for MASKED tokens.
|
||||||
**token_type_ids**: (`optional` need to be trained) ``Numpy array`` or ``tf.Tensor`` of shape ``(batch_size, sequence_length)``:
|
|
||||||
Optional segment token indices to indicate first and second portions of the inputs.
|
`What are attention masks? <../glossary.html#attention-mask>`__
|
||||||
This embedding matrice is not trained (not pretrained during RoBERTa pretraining), you will have to train it
|
token_type_ids (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length)`, `optional`, defaults to :obj:`None`):
|
||||||
during finetuning.
|
Segment token indices to indicate first and second portions of the inputs.
|
||||||
Indices are selected in ``[0, 1]``: ``0`` corresponds to a `sentence A` token, ``1``
|
Indices are selected in ``[0, 1]``: ``0`` corresponds to a `sentence A` token, ``1``
|
||||||
corresponds to a `sentence B` token
|
corresponds to a `sentence B` token
|
||||||
(see `BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding`_ for more details).
|
|
||||||
**position_ids**: (`optional`) ``Numpy array`` or ``tf.Tensor`` of shape ``(batch_size, sequence_length)``:
|
`What are token type IDs? <../glossary.html#token-type-ids>`__
|
||||||
|
position_ids (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length)`, `optional`, defaults to :obj:`None`):
|
||||||
Indices of positions of each input sequence tokens in the position embeddings.
|
Indices of positions of each input sequence tokens in the position embeddings.
|
||||||
Selected in the range ``[0, config.max_position_embeddings - 1[``.
|
Selected in the range ``[0, config.max_position_embeddings - 1]``.
|
||||||
**head_mask**: (`optional`) ``Numpy array`` or ``tf.Tensor`` of shape ``(num_heads,)`` or ``(num_layers, num_heads)``:
|
|
||||||
|
`What are position IDs? <../glossary.html#position-ids>`__
|
||||||
|
head_mask (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(num_heads,)` or :obj:`(num_layers, num_heads)`, `optional`, defaults to :obj:`None`):
|
||||||
Mask to nullify selected heads of the self-attention modules.
|
Mask to nullify selected heads of the self-attention modules.
|
||||||
Mask values selected in ``[0, 1]``:
|
Mask values selected in ``[0, 1]``:
|
||||||
``1`` indicates the head is **not masked**, ``0`` indicates the head is **masked**.
|
:obj:`1` indicates the head is **not masked**, :obj:`0` indicates the head is **masked**.
|
||||||
**inputs_embeds**: (`optional`) ``Numpy array`` or ``tf.Tensor`` of shape ``(batch_size, sequence_length, embedding_dim)``:
|
inputs_embeds (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length, embedding_dim)`, `optional`, defaults to :obj:`None`):
|
||||||
Optionally, instead of passing ``input_ids`` you can choose to directly pass an embedded representation.
|
Optionally, instead of passing :obj:`input_ids` you can choose to directly pass an embedded representation.
|
||||||
This is useful if you want more control over how to convert `input_ids` indices into associated vectors
|
This is useful if you want more control over how to convert `input_ids` indices into associated vectors
|
||||||
than the model's internal embedding lookup matrix.
|
than the model's internal embedding lookup matrix.
|
||||||
|
training (:obj:`boolean`, `optional`, defaults to :obj:`False`):
|
||||||
|
Whether to activate dropout modules (if set to :obj:`True`) during training or to de-activate them
|
||||||
|
(if set to :obj:`False`) for evaluation.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
@add_start_docstrings(
|
@add_start_docstrings(
|
||||||
"The bare RoBERTa Model transformer outputing raw hidden-states without any specific head on top.",
|
"The bare RoBERTa Model transformer outputing raw hidden-states without any specific head on top.",
|
||||||
ROBERTA_START_DOCSTRING,
|
ROBERTA_START_DOCSTRING,
|
||||||
ROBERTA_INPUTS_DOCSTRING,
|
|
||||||
)
|
)
|
||||||
class TFRobertaModel(TFRobertaPreTrainedModel):
|
class TFRobertaModel(TFRobertaPreTrainedModel):
|
||||||
r"""
|
|
||||||
Outputs: `Tuple` comprising various elements depending on the configuration (config) and inputs:
|
def __init__(self, config, *inputs, **kwargs):
|
||||||
**last_hidden_state**: ``tf.Tensor`` of shape ``(batch_size, sequence_length, hidden_size)``
|
super().__init__(config, *inputs, **kwargs)
|
||||||
|
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
||||||
|
|
||||||
|
def call(self, inputs, **kwargs):
|
||||||
|
r"""
|
||||||
|
Returns:
|
||||||
|
:obj:`tuple(tf.Tensor)` comprising various elements depending on the configuration (:class:`~transformers.BertConfig`) and inputs:
|
||||||
|
last_hidden_state (:obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length, hidden_size)`):
|
||||||
Sequence of hidden-states at the output of the last layer of the model.
|
Sequence of hidden-states at the output of the last layer of the model.
|
||||||
**pooler_output**: ``tf.Tensor`` of shape ``(batch_size, hidden_size)``
|
pooler_output (:obj:`tf.Tensor` of shape :obj:`(batch_size, hidden_size)`):
|
||||||
Last layer hidden-state of the first token of the sequence (classification token)
|
Last layer hidden-state of the first token of the sequence (classification token)
|
||||||
further processed by a Linear layer and a Tanh activation function. The Linear
|
further processed by a Linear layer and a Tanh activation function. The Linear
|
||||||
layer weights are trained from the next sentence prediction (classification)
|
layer weights are trained from the next sentence prediction (classification)
|
||||||
objective during Bert pretraining. This output is usually *not* a good summary
|
objective during Bert pretraining. This output is usually *not* a good summary
|
||||||
of the semantic content of the input, you're often better with averaging or pooling
|
of the semantic content of the input, you're often better with averaging or pooling
|
||||||
the sequence of hidden-states for the whole input sequence.
|
the sequence of hidden-states for the whole input sequence.
|
||||||
**hidden_states**: (`optional`, returned when ``config.output_hidden_states=True``)
|
hidden_states (:obj:`tuple(tf.Tensor)`, `optional`, returned when :obj:`config.output_hidden_states=True`):
|
||||||
list of ``tf.Tensor`` (one for the output of each layer + the output of the embeddings)
|
tuple of :obj:`tf.Tensor` (one for the output of the embeddings + one for the output of each layer)
|
||||||
of shape ``(batch_size, sequence_length, hidden_size)``:
|
of shape :obj:`(batch_size, sequence_length, hidden_size)`.
|
||||||
|
|
||||||
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
||||||
**attentions**: (`optional`, returned when ``config.output_attentions=True``)
|
attentions (:obj:`tuple(tf.Tensor)`, `optional`, returned when ``config.output_attentions=True``):
|
||||||
list of ``tf.Tensor`` (one for each layer) of shape ``(batch_size, num_heads, sequence_length, sequence_length)``:
|
tuple of :obj:`tf.Tensor` (one for each layer) of shape
|
||||||
|
:obj:`(batch_size, num_heads, sequence_length, sequence_length)`:
|
||||||
|
|
||||||
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
||||||
|
|
||||||
Examples::
|
Examples::
|
||||||
@@ -229,13 +220,7 @@ class TFRobertaModel(TFRobertaPreTrainedModel):
|
|||||||
outputs = model(input_ids)
|
outputs = model(input_ids)
|
||||||
last_hidden_states = outputs[0] # The last hidden-state is the first element of the output tuple
|
last_hidden_states = outputs[0] # The last hidden-state is the first element of the output tuple
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, config, *inputs, **kwargs):
|
|
||||||
super().__init__(config, *inputs, **kwargs)
|
|
||||||
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
|
||||||
|
|
||||||
def call(self, inputs, **kwargs):
|
|
||||||
outputs = self.roberta(inputs, **kwargs)
|
outputs = self.roberta(inputs, **kwargs)
|
||||||
return outputs
|
return outputs
|
||||||
|
|
||||||
@@ -272,21 +257,34 @@ class TFRobertaLMHead(tf.keras.layers.Layer):
|
|||||||
|
|
||||||
|
|
||||||
@add_start_docstrings(
|
@add_start_docstrings(
|
||||||
"""RoBERTa Model with a `language modeling` head on top. """, ROBERTA_START_DOCSTRING, ROBERTA_INPUTS_DOCSTRING
|
"""RoBERTa Model with a `language modeling` head on top. """, ROBERTA_START_DOCSTRING
|
||||||
)
|
)
|
||||||
class TFRobertaForMaskedLM(TFRobertaPreTrainedModel):
|
class TFRobertaForMaskedLM(TFRobertaPreTrainedModel):
|
||||||
r"""
|
|
||||||
Outputs: `Tuple` comprising various elements depending on the configuration (config) and inputs:
|
def __init__(self, config, *inputs, **kwargs):
|
||||||
**loss**: (`optional`, returned when ``masked_lm_labels`` is provided) ``tf.Tensor`` of shape ``(1,)``:
|
super().__init__(config, *inputs, **kwargs)
|
||||||
Masked language modeling loss.
|
|
||||||
**prediction_scores**: ``tf.Tensor`` of shape ``(batch_size, sequence_length, config.vocab_size)``
|
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
||||||
|
self.lm_head = TFRobertaLMHead(config, self.roberta.embeddings, name="lm_head")
|
||||||
|
|
||||||
|
def get_output_embeddings(self):
|
||||||
|
return self.lm_head.decoder
|
||||||
|
|
||||||
|
def call(self, inputs, **kwargs):
|
||||||
|
r"""
|
||||||
|
Return:
|
||||||
|
:obj:`tuple(torch.FloatTensor)` comprising various elements depending on the configuration (:obj:`~transformers.BertConfig`) and inputs:
|
||||||
|
prediction_scores (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length, config.vocab_size)`):
|
||||||
Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
|
Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
|
||||||
**hidden_states**: (`optional`, returned when ``config.output_hidden_states=True``)
|
hidden_states (:obj:`tuple(tf.Tensor)`, `optional`, returned when :obj:`config.output_hidden_states=True`):
|
||||||
list of ``tf.Tensor`` (one for the output of each layer + the output of the embeddings)
|
tuple of :obj:`tf.Tensor` (one for the output of the embeddings + one for the output of each layer)
|
||||||
of shape ``(batch_size, sequence_length, hidden_size)``:
|
of shape :obj:`(batch_size, sequence_length, hidden_size)`.
|
||||||
|
|
||||||
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
||||||
**attentions**: (`optional`, returned when ``config.output_attentions=True``)
|
attentions (:obj:`tuple(tf.Tensor)`, `optional`, returned when ``config.output_attentions=True``):
|
||||||
list of ``tf.Tensor`` (one for each layer) of shape ``(batch_size, num_heads, sequence_length, sequence_length)``:
|
tuple of :obj:`tf.Tensor` (one for each layer) of shape
|
||||||
|
:obj:`(batch_size, num_heads, sequence_length, sequence_length)`:
|
||||||
|
|
||||||
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
||||||
|
|
||||||
Examples::
|
Examples::
|
||||||
@@ -300,18 +298,7 @@ class TFRobertaForMaskedLM(TFRobertaPreTrainedModel):
|
|||||||
outputs = model(input_ids, masked_lm_labels=input_ids)
|
outputs = model(input_ids, masked_lm_labels=input_ids)
|
||||||
prediction_scores = outputs[0]
|
prediction_scores = outputs[0]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, config, *inputs, **kwargs):
|
|
||||||
super().__init__(config, *inputs, **kwargs)
|
|
||||||
|
|
||||||
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
|
||||||
self.lm_head = TFRobertaLMHead(config, self.roberta.embeddings, name="lm_head")
|
|
||||||
|
|
||||||
def get_output_embeddings(self):
|
|
||||||
return self.lm_head.decoder
|
|
||||||
|
|
||||||
def call(self, inputs, **kwargs):
|
|
||||||
outputs = self.roberta(inputs, **kwargs)
|
outputs = self.roberta(inputs, **kwargs)
|
||||||
|
|
||||||
sequence_output = outputs[0]
|
sequence_output = outputs[0]
|
||||||
@@ -351,19 +338,31 @@ class TFRobertaClassificationHead(tf.keras.layers.Layer):
|
|||||||
"""RoBERTa Model transformer with a sequence classification/regression head on top (a linear layer
|
"""RoBERTa Model transformer with a sequence classification/regression head on top (a linear layer
|
||||||
on top of the pooled output) e.g. for GLUE tasks. """,
|
on top of the pooled output) e.g. for GLUE tasks. """,
|
||||||
ROBERTA_START_DOCSTRING,
|
ROBERTA_START_DOCSTRING,
|
||||||
ROBERTA_INPUTS_DOCSTRING,
|
|
||||||
)
|
)
|
||||||
class TFRobertaForSequenceClassification(TFRobertaPreTrainedModel):
|
class TFRobertaForSequenceClassification(TFRobertaPreTrainedModel):
|
||||||
r"""
|
|
||||||
Outputs: `Tuple` comprising various elements depending on the configuration (config) and inputs:
|
def __init__(self, config, *inputs, **kwargs):
|
||||||
**logits**: ``tf.Tensor`` of shape ``(batch_size, config.num_labels)``
|
super().__init__(config, *inputs, **kwargs)
|
||||||
|
self.num_labels = config.num_labels
|
||||||
|
|
||||||
|
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
||||||
|
self.classifier = TFRobertaClassificationHead(config, name="classifier")
|
||||||
|
|
||||||
|
def call(self, inputs, **kwargs):
|
||||||
|
r"""
|
||||||
|
Return:
|
||||||
|
:obj:`tuple(torch.FloatTensor)` comprising various elements depending on the configuration (config) and inputs:
|
||||||
|
logits (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, config.num_labels)`):
|
||||||
Classification (or regression if config.num_labels==1) scores (before SoftMax).
|
Classification (or regression if config.num_labels==1) scores (before SoftMax).
|
||||||
**hidden_states**: (`optional`, returned when ``config.output_hidden_states=True``)
|
hidden_states (:obj:`tuple(tf.Tensor)`, `optional`, returned when :obj:`config.output_hidden_states=True`):
|
||||||
list of ``tf.Tensor`` (one for the output of each layer + the output of the embeddings)
|
tuple of :obj:`tf.Tensor` (one for the output of the embeddings + one for the output of each layer)
|
||||||
of shape ``(batch_size, sequence_length, hidden_size)``:
|
of shape :obj:`(batch_size, sequence_length, hidden_size)`.
|
||||||
|
|
||||||
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
||||||
**attentions**: (`optional`, returned when ``config.output_attentions=True``)
|
attentions (:obj:`tuple(tf.Tensor)`, `optional`, returned when ``config.output_attentions=True``):
|
||||||
list of ``tf.Tensor`` (one for each layer) of shape ``(batch_size, num_heads, sequence_length, sequence_length)``:
|
tuple of :obj:`tf.Tensor` (one for each layer) of shape
|
||||||
|
:obj:`(batch_size, num_heads, sequence_length, sequence_length)`:
|
||||||
|
|
||||||
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
||||||
|
|
||||||
Examples::
|
Examples::
|
||||||
@@ -378,16 +377,7 @@ class TFRobertaForSequenceClassification(TFRobertaPreTrainedModel):
|
|||||||
outputs = model(input_ids)
|
outputs = model(input_ids)
|
||||||
logits = outputs[0]
|
logits = outputs[0]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, config, *inputs, **kwargs):
|
|
||||||
super().__init__(config, *inputs, **kwargs)
|
|
||||||
self.num_labels = config.num_labels
|
|
||||||
|
|
||||||
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
|
||||||
self.classifier = TFRobertaClassificationHead(config, name="classifier")
|
|
||||||
|
|
||||||
def call(self, inputs, **kwargs):
|
|
||||||
outputs = self.roberta(inputs, **kwargs)
|
outputs = self.roberta(inputs, **kwargs)
|
||||||
|
|
||||||
sequence_output = outputs[0]
|
sequence_output = outputs[0]
|
||||||
@@ -402,19 +392,34 @@ class TFRobertaForSequenceClassification(TFRobertaPreTrainedModel):
|
|||||||
"""RoBERTa Model with a token classification head on top (a linear layer on top of
|
"""RoBERTa Model with a token classification head on top (a linear layer on top of
|
||||||
the hidden-states output) e.g. for Named-Entity-Recognition (NER) tasks. """,
|
the hidden-states output) e.g. for Named-Entity-Recognition (NER) tasks. """,
|
||||||
ROBERTA_START_DOCSTRING,
|
ROBERTA_START_DOCSTRING,
|
||||||
ROBERTA_INPUTS_DOCSTRING,
|
|
||||||
)
|
)
|
||||||
class TFRobertaForTokenClassification(TFRobertaPreTrainedModel):
|
class TFRobertaForTokenClassification(TFRobertaPreTrainedModel):
|
||||||
r"""
|
|
||||||
Outputs: `Tuple` comprising various elements depending on the configuration (config) and inputs:
|
def __init__(self, config, *inputs, **kwargs):
|
||||||
**scores**: ``Numpy array`` or ``tf.Tensor`` of shape ``(batch_size, sequence_length, config.num_labels)``
|
super().__init__(config, *inputs, **kwargs)
|
||||||
|
self.num_labels = config.num_labels
|
||||||
|
|
||||||
|
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
||||||
|
self.dropout = tf.keras.layers.Dropout(config.hidden_dropout_prob)
|
||||||
|
self.classifier = tf.keras.layers.Dense(
|
||||||
|
config.num_labels, kernel_initializer=get_initializer(config.initializer_range), name="classifier"
|
||||||
|
)
|
||||||
|
|
||||||
|
def call(self, inputs, **kwargs):
|
||||||
|
r"""
|
||||||
|
Return:
|
||||||
|
:obj:`tuple(torch.FloatTensor)` comprising various elements depending on the configuration (:obj:`~transformers.BertConfig`) and inputs:
|
||||||
|
scores (:obj:`Numpy array` or :obj:`tf.Tensor` of shape :obj:`(batch_size, sequence_length, config.num_labels)`):
|
||||||
Classification scores (before SoftMax).
|
Classification scores (before SoftMax).
|
||||||
**hidden_states**: (`optional`, returned when ``config.output_hidden_states=True``)
|
hidden_states (:obj:`tuple(tf.Tensor)`, `optional`, returned when :obj:`config.output_hidden_states=True`):
|
||||||
list of ``Numpy array`` or ``tf.Tensor`` (one for the output of each layer + the output of the embeddings)
|
tuple of :obj:`tf.Tensor` (one for the output of the embeddings + one for the output of each layer)
|
||||||
of shape ``(batch_size, sequence_length, hidden_size)``:
|
of shape :obj:`(batch_size, sequence_length, hidden_size)`.
|
||||||
|
|
||||||
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
Hidden-states of the model at the output of each layer plus the initial embedding outputs.
|
||||||
**attentions**: (`optional`, returned when ``config.output_attentions=True``)
|
attentions (:obj:`tuple(tf.Tensor)`, `optional`, returned when ``config.output_attentions=True``):
|
||||||
list of ``Numpy array`` or ``tf.Tensor`` (one for each layer) of shape ``(batch_size, num_heads, sequence_length, sequence_length)``:
|
tuple of :obj:`tf.Tensor` (one for each layer) of shape
|
||||||
|
:obj:`(batch_size, num_heads, sequence_length, sequence_length)`:
|
||||||
|
|
||||||
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention heads.
|
||||||
|
|
||||||
Examples::
|
Examples::
|
||||||
@@ -428,19 +433,7 @@ class TFRobertaForTokenClassification(TFRobertaPreTrainedModel):
|
|||||||
outputs = model(input_ids)
|
outputs = model(input_ids)
|
||||||
scores = outputs[0]
|
scores = outputs[0]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, config, *inputs, **kwargs):
|
|
||||||
super().__init__(config, *inputs, **kwargs)
|
|
||||||
self.num_labels = config.num_labels
|
|
||||||
|
|
||||||
self.roberta = TFRobertaMainLayer(config, name="roberta")
|
|
||||||
self.dropout = tf.keras.layers.Dropout(config.hidden_dropout_prob)
|
|
||||||
self.classifier = tf.keras.layers.Dense(
|
|
||||||
config.num_labels, kernel_initializer=get_initializer(config.initializer_range), name="classifier"
|
|
||||||
)
|
|
||||||
|
|
||||||
def call(self, inputs, **kwargs):
|
|
||||||
outputs = self.roberta(inputs, **kwargs)
|
outputs = self.roberta(inputs, **kwargs)
|
||||||
|
|
||||||
sequence_output = outputs[0]
|
sequence_output = outputs[0]
|
||||||
|
|||||||
Reference in New Issue
Block a user