Chinese-CLIP 如何冻结text_encoder模型的权重?

owfi6suc  于 3个月前  发布在  其他
关注(0)|答案(1)|浏览(80)

我想用clip做细粒度分类任务,但是效果不是很好,于是就想能冻结text_encoder权重,单独训练vit部分。我参考了visual encoder部分的代码是
for k, v in model.visual.named_parameters():
v.requires_grad = False
我想依照上面的方法分别冻结self.tokenizer, self.bert和 self.text_projection, 但是我对nlp部分的模型不是特别了解,不确定这样改对不对,是否还有其他地方需要更改 ?
for k, v in model.tokenizer.named_parameters():
v.requires_grad = False
for k, v in model.bert.named_parameters()::
v.requires_grad = False
for k, v in model.text_projection.named_parameters()::
v.requires_grad = False

源代码的定义

def encode_text(self, text):
pad_index = self.tokenizer.vocab['[PAD]']
attn_mask = text.ne(pad_index).type(self.dtype)
x = self.bert(text, attention_mask=attn_mask)[0].type(self.dtype) # [batch_size, seq_length, hidden_size]
return x[:, 0, :] @ self.text_projection

58wvjzkj

58wvjzkj1#

您好,不知道冻结text_encoder效果如何,我理解除了冻结tokenizer可能是不必要的外没什么问题

相关问题