我想向您指出BertForSequenceClassification的定义,您可以使用以下方法轻松避免丢失和分类器:
model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)
model.bert() # this will give you the dense layer output
Run Code Online (Sandbox Code Playgroud)
为什么你可以做到以上几点?如果你看一下 BertForSequenceClassification 的构造函数:
def __init__(self, config):
super(BertForSequenceClassification, self).__init__(config)
self.num_labels = config.num_labels
self.bert = BertModel(config)
self.dropout = nn.Dropout(config.hidden_dropout_prob)
self.classifier = nn.Linear(config.hidden_size, self.config.num_labels)
self.init_weights()
Run Code Online (Sandbox Code Playgroud)
如您所见,您只想忽略dropout
和classifier
层。
还有一件事,冻结图层和删除图层是两件事。在您的问题中,您提到要冻结分类器层,但冻结层不会帮助您避免它。冻结意味着,您不想训练图层。
归档时间: |
|
查看次数: |
3896 次 |
最近记录: |