BERT模型解读分为Bert模型-数据加载篇,Bert模型-fine-tuning 篇,Bert模型-输出篇, Pytorch版源代码解读篇.
第一篇 (Pytorch版)Bert模型-数据加载篇 讲述了如何加载数据,为数据送入模型做准备.
本篇为第二篇,讲述模型训练过程.训练代码在github中的train_eval.py文件下 .模型参数信息代码在 models文件夹下
本篇将讲述 如何使用加载好的数据 微调预训练模型的参数,就是所谓的 fine-tuning.
其实 fine-tuning 属于迁移学习的一种实现方式.
迁移学习 关心的是: 任务中的“知识”是什么以及如何更好地运用之前得到的“知识” 在新的任务中使用。这可以有很多方法和手段。而fine-tune只是其中的一种手段。
先下载好Bert预训练模型(预训练模型来自google的github)
BERT-Large, Uncased.(Whole Word Masking): 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Large, Cased(Whole Word Masking) : 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Base, Uncased: 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Large, Uncased: 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Base, Cased: 12-layer, 768-hidden, 12-heads , 110M parameters
BERT-Large, Cased: 24-layer, 1024-hidden, 16-heads, 340M parameters
BERT-Base, Multilingual Cased (New, recommended): 104 languages, 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Multilingual Uncased (Orig, not recommended) (Not recommended, use Multilingual Cased instead): 102 languages, 12-layer, 768-hidden, 12-heads, 110M parameters
BERT-Base, Chinese: Chinese Simplified and Traditional, 12-layer, 768-hidden, 12-heads, 110M parameters
前6个为英文模型,Multilingual代表多语言模型,最后一个是中文模型(字级别)
Uncased 代表将字母全部转换成小写,而Cased代表保留了大小写
如果想使用其他预训练模型(其实挺多选择的),可以找到对应模型的github 下载即可,**
下载解压之后的有3个文件( 一个json文件 一个bin文件 一个vocab.txt文件 ,共三个) 放入对应的预训练模型文件夹即可 ( 在我的github 中为bert_pretrain文件夹),接下来进入正文
模型加载
parser.add_argument('--model', default='ERNIE',type=str, help='choose a model: Bert, ERNIE')
args = parser.parse_args()
if __name__ == '__main__':
dataset = 'datas' # 数据集
model_name = args.model # bert
print(model_name)
x = import_module('models.' + model_name)#导入模型
print(1)
config = x.Config(dataset)#加载配置参数
np.random.seed(1)
torch.manual_seed(1)
torch.cuda.manual_seed_all(1)
torch.backends.cudnn.deterministic = True # 保证每次结果一样
start_time = time.time()
print("Loadin