Как загрузить веса моделей BertforSequenceClassification в модель BertforTokenClassification? - PullRequest
0 голосов
/ 28 марта 2020

Изначально у меня была отлаженная базовая модель BERT, использующая набор данных для классификации текста, и я использовал для этого класс BertforSequenceClassification.

from transformers import BertForSequenceClassification, AdamW, BertConfig

# Load BertForSequenceClassification, the pretrained BERT model with a single 
# linear classification layer on top. 
model = BertForSequenceClassification.from_pretrained(
    "bert-base-uncased", # Use the 12-layer BERT model, with an uncased vocab.
    num_labels = 2, # The number of output labels--2 for binary classification.
                    # You can increase this for multi-class tasks.   
    output_attentions = False, # Whether the model returns attentions weights.
    output_hidden_states = False, # Whether the model returns all hidden-states.
)

Теперь я хочу использовать эти точно настроенные веса модели BERT для распознавания именованных объектов, и для этого мне нужно использовать класс BertforTokenClassification. Я не могу понять, как загрузить точно настроенные веса модели BERT в новую модель, созданную с помощью BertforTokenClassification.

Заранее спасибо ................ .......

Ответы [ 2 ]

3 голосов
/ 28 марта 2020

Вы можете получить весовые коэффициенты из берта внутри первой модели и загрузить в него внутри второй:

new_model = BertForTokenClassification(config=config)
new_model.bert.load_state_dict(model.bert.state_dict())
0 голосов
/ 14 апреля 2020

Это сработало для меня

new_model = BertForTokenClassification.from_pretrained('/config path')
new_model.bert.load_state_dict(model.bert.state_dict())
...