【问题标题】:How to add extra dense layer on top of BertForSequenceClassification?如何在 BertForSequenceClassification 之上添加额外的密集层?
【发布时间】:2021-07-27 15:05:49
【问题描述】:

我想在分类层之前添加一个额外的层(和 dropout)(我正在使用 PyTorch 闪电)最好的方法是什么?

【问题讨论】:

    标签: text-classification bert-language-model pytorch-lightning


    【解决方案1】:

    BertForSequenceClassification 类(来自 Huggingface Transformers when using PyTorch lightning)实现了固定架构。如果你想改变它(例如,通过添加层),你需要继承你自己的模块。

    这其实很简单。可以复制BertForSequenceClassification的代码,修改between getting the pooled BERT output and getting the logits的代码。

    但请注意,在微调 BERT 时,向分类器添加隐藏层并没有太大区别。与整个 BERT 层堆栈相比,附加隐藏层的容量可以忽略不计。即使您无法微调整个模型,仅微调最后一个 BERT 层也可能比在分类器中添加额外的层更好。

    【讨论】:

    • 谢谢!这非常有帮助,出于某种原因,我认为 Bert 层应该是静态的。现在我试着按照你说的在没有额外层的情况下解冻它们,我得到了更合理的结果,非常感谢!
    猜你喜欢
    • 2021-11-05
    • 2021-01-17
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多