Pytorch & BERT – 预测多个二元特征

扎眼的阳光 pytorch 217

原文标题Pytorch & BERT – Predict Multiple Binary Feature

我想手动向 BERT 添加一个输出层,以预测多个二进制特征。

例如,这些输出将回答以下问题:

  • 文字是正面的吗?如果是,则为 1,否则为 0。
  • 这篇文章是关于运动的吗? 1如果是,0如果不是。
  • 这篇文章是关于商业的吗? 1如果是,0如果不是。

我的第一个想法是将其作为回归任务来完成,添加一个带有 3 个神经元的输出层:每个问题一个。

伪代码:

def __init__(self):
      self.bert = CamembertModel.from_pretrained('camembert-base')
      self.regressor = nn.Sequential(nn.Linear(dim_in, 3))

def forward(self, input):
      outputs = self.bert(input) # "Bert Layers"
      outputs = self.regressor(outputs) # LinearSequential with output of 3
      return outputs

但我会得到高于 1 和低于 0 的值。那么,我可以添加哪种层以获得概率(0 到 1 之间的值)来处理这个问题?

我希望我的问题很清楚,谢谢你的帮助。

def __init__(self):
      self.bert = CamembertModel.from_pretrained('camembert-base')
      self.regressor = nn.Sequential(nn.Linear(dim_in, 3))

def forward(self, input):
      outputs = self.bert(input) # "Bert Layers"
      outputs = self.regressor(outputs) # LinearSequential with output of 3
      return outputs

原文链接:https://stackoverflow.com//questions/71675018/pytorch-bert-predict-multiple-binary-feature

回复

我来回复
  • ki-ljl的头像
    ki-ljl 评论

    torch中只能实现一个多分类任务。nn.Linear(dim_in, 3)表示一个三分类任务,三个输出数字中最大的数字对应的索引就是分类结果。根据你的描述,建议你直接进行6分类,或者三个任务各进行2分类,但是后者会比较麻烦。

    如果要做六分类任务,需要对样本进行重新标注,每一个都用 one-hot encoding 表示,然后使用交叉熵损失函数。

    2年前 0条评论