对于已经声明好的模型 model ,获取其每层信息的方法:
首先获取模型每层信息的的方法如下:
for n,p in model.named_parameters() # n是每层的名称,p是每层的参数
可以 print 出来看一看 在笔者使用的模型中,Bert作为embedding层存在,其名称为‘embedding.xxxxx’
对于embedding层,我是用已设置好的learning_rate = 3e-5
那么接下来分组如下:
optimizer_grouped_parameters = [\
{'params': [p for n, p in model.named_parameters() if 'embedding' in n},\
{'params': [p for n, p in model.named_parameters() if 'embedding' not in n}], 'lr': 2e-3}]
随后构建优化器:
optimizer = torch.optim.Adam(optimizer_grouped_parameters, lr=learning_rate)
# embedding层使用learning_rate作为学习率,其他层用optimizer_grouped_parameters里设置好的lr学习率
参考链接:
Pytorch 常用操作汇总 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/345975527bert原码解析(embedding) - 简书 (jianshu.com)https://www.jianshu.com/p/6cbf33d613c9
|