|
--- |
|
library_name: keras-hub |
|
license: apache-2.0 |
|
language: |
|
- en |
|
tags: |
|
- text-classification |
|
- keras |
|
--- |
|
## Model Overview |
|
A RoBERTa encoder network. |
|
|
|
This network implements a bi-directional Transformer-based encoder as |
|
described in ["RoBERTa: A Robustly Optimized BERT Pretraining Approach"](https://arxiv.org/abs/1907.11692). |
|
It includes the embedding lookups and transformer layers, but does not |
|
include the masked language model head used during pretraining. |
|
|
|
The default constructor gives a fully customizable, randomly initialized |
|
RoBERTa encoder with any number of layers, heads, and embedding |
|
dimensions. To load preset architectures and weights, use the `from_preset()` |
|
constructor. |
|
|
|
Disclaimer: Pre-trained models are provided on an "as is" basis, without |
|
warranties or conditions of any kind. The underlying model is provided by a |
|
third party and subject to a separate license, available |
|
[here](https://github.com/facebookresearch/fairseq). |
|
|
|
|
|
__Arguments__ |
|
|
|
|
|
- __vocabulary_size__: int. The size of the token vocabulary. |
|
- __num_layers__: int. The number of transformer layers. |
|
- __num_heads__: int. The number of attention heads for each transformer. |
|
The hidden size must be divisible by the number of attention heads. |
|
- __hidden_dim__: int. The size of the transformer encoding layer. |
|
- __intermediate_dim__: int. The output dimension of the first Dense layer in |
|
a two-layer feedforward network for each transformer. |
|
- __dropout__: float. Dropout probability for the Transformer encoder. |
|
- __max_sequence_length__: int. The maximum sequence length this encoder can |
|
consume. The sequence length of the input must be less than |
|
`max_sequence_length` default value. This determines the variable |
|
shape for positional embeddings. |
|
|
|
## Example Usage |
|
```python |
|
import keras |
|
import keras_hub |
|
import numpy as np |
|
``` |
|
|
|
Raw string data. |
|
```python |
|
features = ["The quick brown fox jumped.", "I forgot my homework."] |
|
labels = [0, 3] |
|
|
|
# Pretrained classifier. |
|
classifier = keras_hub.models.RobertaClassifier.from_preset( |
|
"roberta_base_en", |
|
num_classes=4, |
|
) |
|
classifier.fit(x=features, y=labels, batch_size=2) |
|
classifier.predict(x=features, batch_size=2) |
|
|
|
# Re-compile (e.g., with a new learning rate). |
|
classifier.compile( |
|
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True), |
|
optimizer=keras.optimizers.Adam(5e-5), |
|
jit_compile=True, |
|
) |
|
# Access backbone programmatically (e.g., to change `trainable`). |
|
classifier.backbone.trainable = False |
|
# Fit again. |
|
classifier.fit(x=features, y=labels, batch_size=2) |
|
``` |
|
|
|
Preprocessed integer data. |
|
```python |
|
features = { |
|
"token_ids": np.ones(shape=(2, 12), dtype="int32"), |
|
"padding_mask": np.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]] * 2), |
|
} |
|
labels = [0, 3] |
|
|
|
# Pretrained classifier without preprocessing. |
|
classifier = keras_hub.models.RobertaClassifier.from_preset( |
|
"roberta_base_en", |
|
num_classes=4, |
|
preprocessor=None, |
|
) |
|
classifier.fit(x=features, y=labels, batch_size=2) |
|
``` |
|
|
|
## Example Usage with Hugging Face URI |
|
|
|
```python |
|
import keras |
|
import keras_hub |
|
import numpy as np |
|
``` |
|
|
|
Raw string data. |
|
```python |
|
features = ["The quick brown fox jumped.", "I forgot my homework."] |
|
labels = [0, 3] |
|
|
|
# Pretrained classifier. |
|
classifier = keras_hub.models.RobertaClassifier.from_preset( |
|
"hf://keras/roberta_base_en", |
|
num_classes=4, |
|
) |
|
classifier.fit(x=features, y=labels, batch_size=2) |
|
classifier.predict(x=features, batch_size=2) |
|
|
|
# Re-compile (e.g., with a new learning rate). |
|
classifier.compile( |
|
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True), |
|
optimizer=keras.optimizers.Adam(5e-5), |
|
jit_compile=True, |
|
) |
|
# Access backbone programmatically (e.g., to change `trainable`). |
|
classifier.backbone.trainable = False |
|
# Fit again. |
|
classifier.fit(x=features, y=labels, batch_size=2) |
|
``` |
|
|
|
Preprocessed integer data. |
|
```python |
|
features = { |
|
"token_ids": np.ones(shape=(2, 12), dtype="int32"), |
|
"padding_mask": np.array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0]] * 2), |
|
} |
|
labels = [0, 3] |
|
|
|
# Pretrained classifier without preprocessing. |
|
classifier = keras_hub.models.RobertaClassifier.from_preset( |
|
"hf://keras/roberta_base_en", |
|
num_classes=4, |
|
preprocessor=None, |
|
) |
|
classifier.fit(x=features, y=labels, batch_size=2) |
|
``` |