Last Layers Re-initialization
我们不使用所有层的预训练权重,而是使用原始的Transformer初始化来重新初始化指定的层数。重新初始化的层会破坏这些特定块的预训练知识。我们知道较低的预训练层学习更多的全局一般特征,而靠近输出的较高的层则更专注于预训练任务。因此初始化较高的层,并重新训练能够让网络更好的学习当前特定的任务。下面的例子是初始化 roberta 最后两层。
from transformers import AutoConfig
from transformers import AutoModelForSequenceClassification
reinit_layers = 2
_model_type = 'roberta'
_pretrained_model = 'roberta-base'
config = AutoConfig.from_pretrained(_pretrained_model)
model = AutoModelForSequenceClassification.from_pretrained(_pretrained_model)
if reinit_layers > 0:
print(f'Reinitializing Last {
reinit_layers} Layers ...')
encoder_temp = getattr(model, _model_type)
for layer in encoder_temp.encoder.layer[-reinit_layers:]:
for module in layer.modules():

最低0.47元/天 解锁文章
2627

被折叠的 条评论
为什么被折叠?



