如何在Huggingface BERT模型上添加LSTM层



我正在做一个二进制分类任务,想尝试在huggingface BERT模型的最后一个隐藏层上添加lstm层,但是,我无法到达最后一个隐藏层。BERT和LSTM可以合并吗?

tokenizer = BertTokenizer.from_pretrained(model_path)
tain_inputs, train_labels, train_masks = data_prepare_BERT(
train_file, lab2ind, tokenizer, content_col, label_col, 
max_seq_length)
validation_inputs, validation_labels, validation_masks = data_prepare_BERT(
dev_file, lab2ind, tokenizer, content_col, label_col,max_seq_length)
# Load BertForSequenceClassification, the pretrained BERT model with a single linear classification layer on top.
model = BertForSequenceClassification.from_pretrained(
model_path, num_labels=len(lab2ind))

这确实是可能的,但是您需要自己实现它。BertForSequenceClassification类是BertModel的包装器。它运行模型,获取与[CLS]令牌对应的隐藏状态,并在其上应用分类器。

在您的示例中,您可以将类作为起点,并在BertModel和分类器之间添加LSTM层。BertModel在元组中返回用于分类的隐藏状态和池化状态。只取原始类中使用的另一个元组成员

虽然它在技术上是可能的,但与使用BertForSequenceClassification相比,我希望获得任何性能增益。对Transformer层进行微调可以学习任何额外的LSTM层能够学习的内容。

最新更新