如何将微调过的 bert 模型的输出作为输入提供给另一个微调过的 bert 模型?

     2023-03-29     182

关键词:

【中文标题】如何将微调过的 bert 模型的输出作为输入提供给另一个微调过的 bert 模型?【英文标题】:How to feed the output of a finetuned bert model as inpunt to another finetuned bert model? 【发布时间】:2020-06-03 11:28:59 【问题描述】:

我在情绪分析和 pos 标记任务上微调了两个独立的 bert 模型(bert-base-uncased)。现在,我想将 pos 标记器的输出(batch、seqlength、hiddensize)作为情绪模型的输入。原始的 bert-base-uncased 模型位于“bertModel/”文件夹中,其中包含“model.bin”和“配置.json'。这是我的代码:

class DeepSequentialModel(nn.Module):
def __init__(self, sentiment_model_file, postag_model_file, device):
    super(DeepSequentialModel, self).__init__()

    self.sentiment_model = SentimentModel().to(device)
    self.sentiment_model.load_state_dict(torch.load(sentiment_model_file, map_location=device))
    self.postag_model = PosTagModel().to(device)
    self.postag_model.load_state_dict(torch.load(postag_model_file, map_location=device))

    self.classificationLayer = nn.Linear(768, 1)

def forward(self, seq, attn_masks):
    postag_context = self.postag_model(seq, attn_masks)
    sent_context = self.sentiment_model(postag_context, attn_masks)
    logits = self.classificationLayer(sent_context)
    return logits

class PosTagModel(nn.Module):
def __init__(self,):
    super(PosTagModel, self).__init__()
    self.bert_layer = BertModel.from_pretrained('bertModel/')
    self.classificationLayer = nn.Linear(768, 43)

def forward(self, seq, attn_masks):
    cont_reps, _ = self.bert_layer(seq, attention_mask=attn_masks)
    return cont_reps

class SentimentModel(nn.Module):
def __init__(self,):
    super(SentimentModel, self).__init__()
    self.bert_layer = BertModel.from_pretrained('bertModel/')
    self.cls_layer = nn.Linear(768, 1)

def forward(self, input, attn_masks):
    cont_reps, _ = self.bert_layer(encoder_hidden_states=input, encoder_attention_mask=attn_masks)
    cls_rep = cont_reps[:, 0]
    return cls_rep

但我收到以下错误。如果有人可以帮助我,我将不胜感激。谢谢!

    cont_reps, _ = self.bert_layer(encoder_hidden_states=input, encoder_attention_mask=attn_masks)
    result = self.forward(*input, **kwargs)
    TypeError: forward() got an unexpected keyword argument 'encoder_hidden_states'

【问题讨论】:

您使用的是哪个版本的transformers @dennlinger 变压器 2.1.1 那么是时候更新你的转换器版本了。 documentation for 2.1.1 清楚地列出了前向传递的非常过时的版本,因此这就是您无法访问(当时不存在的)参数的原因。 【参考方案1】:

也将其作为答案,并使其对未来的访问者正确可见,forward() 调用变形金刚does not support these arguments in version 2.1.1 或任何早期版本,就此而言。请注意,我评论中的链接实际上指向不同的转发功能,但除此之外,这一点仍然成立。

encoder_hidden_states 传递给forward() 是first possible in version 2.2.0。

【讨论】:

如何从微调的 bert 模型中获得多类置信度分数?

】如何从微调的bert模型中获得多类置信度分数?【英文标题】:Howtogetmulticlassconfidencescorefromfinetunedbertmodel?【发布时间】:2021-11-2922:52:53【问题描述】:我使用预训练的bert模型进行意图分类(uncased_L-12_H-768_A-12)。将输出显示为... 查看详情

将 LIME 解释应用于我的微调 BERT 以进行序列分类模型?

...分类对BERT进行了微调,我想应用LIME解释来查看每个标记如何有助于分类到特定标签,因为LIME将分类器作为黑盒处理。我从可用的在线 查看详情

如何将 Bert 嵌入提供给 LSTM

】如何将Bert嵌入提供给LSTM【英文标题】:HowtofeedBertembeddingstoLSTM【发布时间】:2019-09-0406:50:52【问题描述】:我正在研究用于文本分类问题的Bert+MLP模型。本质上,我正在尝试用基本的LSTM模型替换MLP模型。是否可以创建带有嵌... 查看详情

输入文件应该如何格式化以进行语言模型微调(BERT 通过 Huggingface Transformers)?

】输入文件应该如何格式化以进行语言模型微调(BERT通过HuggingfaceTransformers)?【英文标题】:Howexactlyshouldtheinputfilebeformattedforthelanguagemodelfinetuning(BERTthroughHuggingfaceTransformers)?【发布时间】:2020-05-1623:51:08【问题描述】:我想在... 查看详情

中文情感分类任务如何对bert语言模型微调,微调后的模型如何使用

中文情感分类任务如何对bert语言模型微调,微调后的模型如何使用  查看详情

如何再次微调一个bert微调模型

【中文标题】如何再次微调一个bert微调模型【英文标题】:Howtofinetuningagainofabertfinedtunedmodel【发布时间】:2021-07-2220:45:13【问题描述】:我使用ktrain为文本分类做了一个微调的bert模型。我想再次在另一个文本分类数据上微调这... 查看详情

如何使用微调的 BERT 模型进行句子编码?

】如何使用微调的BERT模型进行句子编码?【英文标题】:Howtousefine-tunedBERTmodelforsentenceencoding?【发布时间】:2021-06-1620:07:15【问题描述】:我按照此处的脚本在我自己的数据集上微调了BERT基础模型:https://github.com/cedrickchee/pytorch... 查看详情

预训练模型-从bert原理到bert调包和微调

 一、BERT原理BERT取名来自BidirectionalEncoderRepresentationsfromTransformers。架构为:预训练+fine-tuning(对于特定的任务只需要添加一个输出层)。1、引言      通过预训练语言模型可显著提高NLP下游任务。限制模... 查看详情

如何微调 HuggingFace BERT 模型以进行文本分类 [关闭]

】如何微调HuggingFaceBERT模型以进行文本分类[关闭]【英文标题】:HowtoFine-tuneHuggingFaceBERTmodelforTextClassification[closed]【发布时间】:2021-10-3115:55:33【问题描述】:是否有分步说明关于如何微调HuggingFaceBERT模型以进行文本分类?【问... 查看详情

bert模型

1.概述  bert是文本生成向量的一种方式,相较于以前的模型,bert将双向Transformer用于语言模型。2.用途  在分类任务中,例如情感分析等,只需要在Transformer的输出之上加一个分类层  在问答任务(例如SQUADv1.1)中,问答... 查看详情

如何将多个图像作为输入提供给卷积神经网络

】如何将多个图像作为输入提供给卷积神经网络【英文标题】:HowtofeedmultipleimagesasinputtoaConvolutionalNeuralnetwork【发布时间】:2020-05-0613:52:17【问题描述】:我对CNN很陌生。我计划构建一个分类器,您将在其中将两个图像作为输入... 查看详情

如何在未标记的数据上微调 BERT?

】如何在未标记的数据上微调BERT?【英文标题】:HowtofinetuneBERTonunlabeleddata?【发布时间】:2020-09-0917:57:09【问题描述】:我想在特定域上微调BERT。我在文本文件中有该域的文本。我如何使用这些来微调BERT?我目前正在寻找here... 查看详情

用于情绪分析的 BERT 微调模型高度过拟合

】用于情绪分析的BERT微调模型高度过拟合【英文标题】:BERTfinetunedmodelforsentimentanalysishighlyover-fitting【发布时间】:2021-09-1513:18:24【问题描述】:我正在尝试微调BERT预训练模型。我正在使用来自tensorflow_datasets的yelp_polarity_reviews... 查看详情

小白学习pytorch教程十六在多标签分类任务上微调bert模型(代码片段)

...xff1a;RunsenBERT模型在NLP各项任务中大杀四方,那么我们如何使用这一利器来为我们日常的NLP任务来服务呢?首先介绍使用BERT做文本多标签分类任务。文本多标签分类是常见的NLP任务,文本介绍了如何使用Bert模型完成文... 查看详情

bert:深度双向预训练语言模型

...双向表示,预训练结束后通过添加一个额外的输出层进行微调,最终在多个NLP任务上实现了SOTA。预训练语言模型在实践中证明对提高很多自然语言处理任务有效,其中包括句子层级的任务,比如自然语言推断(naturallanguageinferenc... 查看详情

Keras 功能 api 多输入:传递给模型的输入列表是多余的

...进行分类。由于我的数据有两个不同的列,我想为每一列微调一个BERT模型,并将它们连接到最后一层。但我收 查看详情

《自然语言处理实战入门》深度学习----预训练模型的使用(albert)

...albert的使用参考文献简介bert回顾bert两阶段模式:预训练+微调BERT的总体预训练和微调程序。除了输出层,在预训练和微调中都使用相同的体系结构。相同的预训练模型参数用于初始化不同下游任务的模型。 查看详情

BERT 作为分类服务?

...这里描述:https://github.com/hanxiao/bert-as-service/issues/213关于如何做到这一点的任何想法?【问题讨 查看详情