赞
踩
优点
缺点
文本截断处理方式
第一种方式就是只保留前面510个token.
第二种方式就是只保留后面510个token.
第三种方式就是前后分别保留一部分token, 总数是510.
BERT预训练模型所接收的最大sequence长度是512
bert + 迁移学习 简单练习代码
步骤:
微调脚本
# 使用python运行微调脚本 # --model_name_or_path: 选择具体的模型或者变体 # --task_name: 它将代表对应的任务类型, 如MRPC代表句子对二分类任务 # --do_train: 使用微调脚本进行训练 # --do_eval: 使用微调脚本进行验证 # --max_seq_length: 输入句子的最大长度, 超过则截断, 不足则补齐 # --learning_rate: 学习率 # --num_train_epochs: 训练轮数 # --output_dir $SAVE_DIR: 训练后的模型保存路径 # --overwrite_output_dir: 再次训练时将清空之前的保存路径内容重新写入 # 该命令已在虚拟机执行,再次执行会覆盖缓存的模型 python run_glue.py \ --model_name_or_path bert-base-chinese \ --task_name sst2 \ --do_train \ --do_eval \ --max_seq_length 128 \ --learning_rate 2e-5 \ --num_train_epochs 1.0 \ --output_dir bert-base-chinese-sst2-finetuning
import torch # 0 找到自己预训练模型的路径 mymodelname = '/Users/lizhipeng/PycharmProjects/newProject/fasttext/transformers/examples/pytorch/text-classification/bert-base-chinese-sst2-finetuning' print(mymodelname) # 1 本地加载预训练模型的tokenizer tokenizer = AutoTokenizer.from_pretrained(mymodelname) # 2 本地加载 预训练模型 带分类模型头 model = AutoModelForSequenceClassification.from_pretrained(mymodelname) text = "早餐不好,服务不到位,晚餐无西餐,早餐晚餐相同,房间条件不好" index = tokenizer.encode(text) tokens_tensor = torch.tensor([index]) # 使用评估模式 with torch.no_grad(): # 使用模型预测获得结果 result = model(tokens_tensor) print(result[0]) predicted_label = torch.argmax(result[0]).item() print('预测标签为>', predicted_label) text1 = "房间应该超出30平米,是HK同级酒店中少有的大;重装之后,设备也不错." index = tokenizer.encode(text1) tokens_tensor = torch.tensor([index]) # 使用评估模式 with torch.no_grad(): # 使用模型预测获得结果 result = model(tokens_tensor) print(result[0]) predicted_label = torch.argmax(result[0]).item() print('预测标签为>', predicted_label)
输出:
输入文本为: 早餐不好,服务不到位,晚餐无西餐,早餐晚餐相同,房间条件不好
预测标签为: 0
输入文本为: 房间应该超出30平米,是HK同级酒店中少有的大;重装之后,设备也不错.
预测标签为: 1
优点
GPT使用了Transformer提取特征, 使得模型能力大幅提升.
缺点
GPT只使用了单向Decoder, 无法融合未来的信息.
优点
-ELMo根据上下文动态调整word embedding, 可以解决多义词的问题.
缺点
关于特征提取器
单/双向语言模型
心得:模型已浅知,内化成自己掌握的知识还需多学多看
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。