据我所知,如果不将它们放入优化器中,则模型的参数是不可训练的。但是最近,当我在github上运行一个项目时,我发现模型参数可以在不将它们放入优化器的情况下进行训练。要向优化器添加参数的项目的代码地址是https://github.com/zjunlp/HVPNeT/blob/main/modules/train.py#L500。
def multiModal_before_train(self):
# bert lr
parameters = []
params = {'lr':self.args.lr, 'weight_decay':1e-2}
params['params'] = []
for name, param in self.model.named_parameters():
if 'bert' in name:
params['params'].append(param)
parameters.append(params)
# prompt lr
params = {'lr':self.args.lr, 'weight_decay':1e-2}
params['params'] = []
for name, param in self.model.named_parameters():
if 'encoder_conv' in name or 'gates' in name:
params['params'].append(param)
parameters.append(params)
# crf lr
params = {'lr':5e-2, 'weight_decay':1e-2}
params['params'] = []
for name, param in self.model.named_parameters():
if 'crf' in name or name.startswith('fc'):
params['params'].append(param)
self.optimizer = optim.AdamW(parameters)
for name, par in self.model.named_parameters(): # freeze resnet
if 'image_model' in name: par.requires_grad = False
self.scheduler = get_linear_schedule_with_warmup(optimizer=self.optimizer,
num_warmup_steps=self.args.warmup_ratio*self.train_num_steps,
num_training_steps=self.train_num_steps)
self.model.to(self.args.device)结果表明,crf和fc的参数被加入到params中,而不是加入到参数中。但是他们仍然可以接受训练,有人知道为什么吗?
发布于 2022-11-04 12:05:12
该模型建立在快速学习的基础上,如果对提示语进行训练,则可以在不进行训练的情况下对分类器进行训练。
https://stackoverflow.com/questions/73341252
复制相似问题