保持较高精度的情况下, 快速的进行训练和预测
pip install fasttext
过程:
方法:
# 在训练词向量过程中, 我们可以设定很多常用超参数来调节我们的模型效果, 如:
# 无监督训练模式: 'skipgram' 或者 'cbow', 默认为'skipgram', 在实践中,skipgram模式在利用子词方面比cbow更好.
# 词嵌入维度dim: 默认为100, 但随着语料库的增大, 词嵌入的维度往往也要更大.
# 数据循环次数epoch: 默认为5, 但当你的数据集足够大, 可能不需要那么多次.
# 学习率lr: 默认为0.05, 根据经验, 建议选择[0.01,1]范围内.
# 使用的线程数thread: 默认为12个线程, 一般建议和你的cpu核数相同.model = fasttext.train_unsupervised('data/fil9', "cbow", dim=300, epoch=1, lr=0.1, thread=8)
可迁移词向量
预训练模型(Pretrained model)
微调(Fine-tuning)
微调脚本(Fine-tuning script)
两种迁移方式:
GLUE
BERT
GPT
GPT-2
Transformer-XL
XLNet
XLM
RoBERTa
DistilBERT
ALBERT
T5
XLM-RoBERTa
Example
import torch
from transformers import AutoTokenizer, AutoModel, AutoModelForMaskedLM, AutoModelForSequenceClassification, \AutoModelForQuestionAnsweringfrom transformers import logging
logging.set_verbosity_error()mirror = 'https://mirrors.tuna.tsinghua.edu.cn/help/hugging-face-models/'def load_AutoQA():# 1 加载 tokenizer# 加载的预训练模型的名字model_name = 'bert-base-chinese'tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese",mirror=mirror)# 2 加载modelqa_model = AutoModelForQuestionAnswering.from_pretrained(model_name)# 3 使用# 使用带有问答模型头的模型进行输出时, 需要使输入的形式为句子对# 第一条句子是对客观事物的陈述# 第二条句子是针对第一条句子提出的问题# 问答模型最终将得到两个张量,# 每个张量中最大值对应索引的分别代表答案的在文本中的起始位置和终止位置input_text1 = "我家的小狗是黑色的"input_text2 = "我家的小狗是什么颜色的呢?"# 映射两个句子indexed_tokens = tokenizer.encode(input_text1, input_text2)print("句子对的indexed_tokens:", indexed_tokens)# 输出结果: [101, 2769, 2157, 4638, 2207, 4318, 3221, 7946, 5682, 4638, 102, 2769, 2157, 4638, 2207, 4318, 3221, 784, 720, 7582, 5682, 4638, 1450, 136, 102]## 用0,1来区分第一条和第二条句子segments_ids = [0] * 11 + [1] * 14# 转化张量形式segments_tensors = torch.tensor([segments_ids])tokens_tensor = torch.tensor([indexed_tokens])# 使用带有问答模型头的预训练模型获得结果with torch.no_grad():start_logits, end_logits = qa_model(tokens_tensor, token_type_ids=segments_tensors, return_dict=False)print("带问答模型头的模型输出结果:", (start_logits, end_logits))print("带问答模型头的模型输出结果的尺寸:", (start_logits.shape, end_logits.shape)) # (torch.Size([1, 25]), torch.Size([1, 25]))if __name__ == '__main__':load_AutoQA()
输出
心得:已经了解些基本概念,还需要实践加深印象
上一篇:数据源切换
下一篇:RHCSA-进程、磁盘管理