使用transformers从头训练Bert

比赛数据是脱敏后得数据,所以无法用网上公开得权重去finetune,于是自己从头训练一个BERT,为什么选择用transformers,因为它实在太酷了。如果不了解transformers,请看链接所以我不想再从github上找BERT代码,还有一个原因是这次比赛中也许要预训练好多模型,所以使用transformers预训练bert模型后,花费较少成本预训练其他模型了。
本次预训练模型主要解决两个问题,一个是transformer使用哪个API去预训练,一个是自己构建词典。直接放代码吧。由于代码太多,把一部分放在了百年不用的github上,finetune代码(https://github.com/BlackHorseQ/Use-transformers-train-Bert-from-scratch)


import pandas as pd
from pathlib import Path
from torch import nn
from tokenizers import ByteLevelBPETokenizer
from tqdm import tqdm
from transformers import BertConfig, BertForPreTraining
from torch.utils.data import Dataset, DataLoader
import random
import numpy as np
import torch
## 读取数据
train = pd.read_csv('gaiic_track3_round1_train_20210228.tsv',sep='\t', names=['text_a', 'text_b', 'label'])
test = pd.read_csv('gaiic_track3_round1_testA_20210228.tsv',sep='\t', names=['text_a', 'text_b', 'label'])
test['label'] = 0
##训练集和测试集造字典
from collections import defaultdict
def get_dict(data):
    words_dict = defaultdict(int)
    for i in tqdm(range(data.shape[0])):
        text = data.text_a.iloc[i].split() + data.text_b.iloc[i].split()
        for c in text:
            words_dict[c] += 1
    return words_dict
test_dict = get_dict(test)
train_dict = get_dict(train)
word_dict = list(test_dict.keys()) + list(train_dict.keys())
word_dict =
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>