自然语言处理
文章平均质量分 66
anshiquanshu
这个作者很懒,什么都没留下…
展开
-
heatmap热力图
热力图的右侧是颜色带,上面代表了数值到颜色的映射,数值由小到大对应色彩由暗到亮。从上面的heatmap中我们可以得到两层信息,一是随着时间的推移,飞机的乘客数量是在逐步增多的,二是航班的乘坐旺季在七月和八月份。热力图在实际中常用于展示一组变量的相关系数矩阵,在展示列联表的数据分布上也有较大的用途,通过热力图我们可以非常直观地感受到数值大小的差异状况。参照mask和上面绘制的图,应该就很容易理解了,mask中为1的部分,就是要被盖掉的部分。的数值,我们得把数值进行格式化,这就用到了下面的参数。转载 2023-03-03 17:11:13 · 3475 阅读 · 2 评论 -
散点图和箱线图
stripplot(分布散点图)接下来就直接上代码演示,首先导入相应的包。下面是本次演示所使用的数据集:我们先来看一下stripplot是什么样的可以看到stripplot的作图原理就是按照x属性所对应的类别分别展示y属性的值,适用于分类数据。上图就是不同饭点的账单总金额的散点图。接下来讲解一下stripplot的主要参数,在这里我们只讲stripplot特有的一些参数,其他一些seaborn中常见参数的介绍可以翻看之前的文章。x:设置分组统计字段y:设置分布统计字段。转载 2023-03-16 09:34:07 · 955 阅读 · 0 评论 -
LaTeX插入参考文献,简单高效
如何用.bib文件自动生成论文Reference一般期刊或会议给的Latex模板会自带参考文献样式,因此,可以利用.bib文件来自动生成该模板下的参考文献样式。下面以引用以下三篇论文为例,来说明如何生成.bib文件,然后利用.bib文件自动生成Reference。引用论文:1.生成.bib文件。转载 2022-10-18 09:46:45 · 28083 阅读 · 0 评论 -
The ‘data’ object was created by an older version of PyG. If this error occurred while loading ...
目前使用PyG库需要的下载的whl主要为torch-cluster;一开始以为是pickle的问题,实际上最终就是torch-geometric版本不对的问题。也就是原因:torch和torch-geometric版本不兼容造成的。torch-sparse后,所有教程都是直接:pip install torch-geometric。这时候安装的 torch-geometric2.0.X版本的,这时候读取数据就会出现上面所述的错误,此时我们需要下载1.X.X低版本的 torch-geometric。原创 2022-10-04 16:30:58 · 3185 阅读 · 0 评论 -
教你安装Stanford NLP
4)把解压后的StanfordCoreNLP文件夹(个人习惯,这里我重命名为stanford_nlp)和下载的Stanford-chinese-corenlp-2018-02-27-models.jar放在同一目录下(注意一定要在同一目录下,否则执行会报错)StanfordcoreNLP是斯坦福大学开发的一套关于自然语言处理的工具(toolbox),使用简单功能强大,有命名实体识别、词性标注、词语词干化、语句语法树的构造还有指代关系等功能,使用起来比较方便。会抛出找不到文件异常。...原创 2022-08-01 15:41:33 · 1700 阅读 · 2 评论 -
itertools.chain()
python转载 2022-07-29 15:44:51 · 123 阅读 · 0 评论 -
PolyLoss:一种将分类损失函数加入泰勒展开式的损失函数
POLYLOSS原理和公式推导我就不过多介绍了,想了解的同学可以自己看一下论文。该篇论文发现,其实仅增加一个多项式系数就相比与原始的Cross-Entropy Loss和Focal Loss在多种图像任务上有所提高。并且论文中提供了TF的相关代码,详细如下:import tensorflow as tfdef cross_entropy_tf(logits, labels, class_number): """TF交叉熵损失函数""" labels = tf.one_hot(转载 2022-07-29 15:45:29 · 375 阅读 · 0 评论 -
使用allennlp遇到的问题:allennlp.common.checks.ConfigurationError: snli not in acceptable choices for datase
问题描述:最近因为课题需要使用allennlp包,self.cp = Predictor.from_path("https://storage.googleapis.com/allennlp-public-models/elmo-constituency-parser-2020.02.10.tar.gz", cuda_device=self.device) 结果出现报错allennlp.common.checks.ConfigurationError: nernot in acceptable c.原创 2022-03-12 11:09:19 · 2109 阅读 · 1 评论 -
RoBERTa中的merge.txt和vocab.json是什么?
背景在使用其他组织或个人发布的RoBERTa预训练模型时,一般除了模型文件之外还会有merges.txt和vocab.json。相比于BERT只需要一个vocab.txt,为何RoBRETa需要2个?作用是什么?PS:这里使用的是huggingface/transformers 下的 RoBRTa-base版模型。说明Bert采用的是字符级别的BPE编码,直接生成词表文件。Roberta采用的是**byte level的BPE(BBPE)**编码,预训练结果中的merges.txt中存储了BBP转载 2021-12-27 10:36:03 · 1650 阅读 · 0 评论 -
PyTorch多GPU模型保存和加载的一个注意事项-Unexpected key(s) in state_dict
用PyTorch加载已经保存好的模型参数文件时遇到一个bug:Unexpected key(s) in state_dict: “module.features. …”.,Expected “.features…”意思是从本地文件中加载模型的state_dict时,state_dict的key值不匹配。查了一些资料后,发现是PyTorch多gpu保存的问题,导致保存下来的state_dict中的key比原来都多了一个module,因此出现了上述这个问题。下面简单验证一下。import to转载 2021-12-26 16:42:37 · 2379 阅读 · 2 评论 -
NLP自然语言处理中英文分词工具集锦与基本使用介绍
一、中文分词工具(1)Jieba(2)snowNLP分词工具(3)thulac分词工具(4)pynlpir 分词工具(5)StanfordCoreNLP分词工具1.from stanfordcorenlp import StanfordCoreNLP2.with StanfordCoreNLP(r'E:\Users\Eternal Sun\PycharmProjects\1\venv\Lib\stanford-corenlp-full-2018-10-05', l转载 2021-12-16 15:54:46 · 667 阅读 · 0 评论 -
Transformers包中BERT类预训练模型下载链接备份
bin文件文件位置:/transformers/modeling_bert.pyBERT_PRETRAINED_MODEL_ARCHIVE_MAP = { "bert-base-uncased": "https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-uncased-pytorch_model.bin", "bert-large-uncased": "https://s3.amazonaws.com/model转载 2021-12-06 10:42:49 · 866 阅读 · 0 评论 -
Spacy简单入门
安装Spacypip install spacy导入工具包和英文模型#python -m spacy download en文本处理import spacynlp=spacy.load('en')#分词doc=nlp('Weather is good, very windy and sunny. We have no classes in the afternoon.')for token in doc: print(token)#分句for sent in转载 2021-11-30 14:43:54 · 447 阅读 · 0 评论 -
使用spacy报错TypeError: Argument ‘other‘ has incorrect type (expected spacy.tokens.token.Token, got str)
这是因为spacy返回是给了你一个对象,而不仅仅是文本。。。使用nlp时,请尝试:sentence = 'The legislation allowed California to be admitted to the Union as what kind of state?'doc = nlp(sentence)for i in doc.noun_chunks: list_2.append(i.text)# 注意这里的i后面要加text,即为i.text才可以。...原创 2021-11-26 11:10:08 · 1410 阅读 · 0 评论 -
pytorch之nn.Conv1d详解
之前学习pytorch用于文本分类的时候,用到了一维卷积,花了点时间了解其中的原理,看网上也没有详细解释的博客,所以就记录一下。Conv1dclass torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True)in_channels(int) – 输入信号的通道。在文本分类中,即为词向量的维度 out_channels(int) – 卷积转载 2021-10-27 21:54:33 · 914 阅读 · 0 评论 -
NLP预训练模型6 -- 模型轻量化(ALBERT、Q8BERT、DistillBERT、TinyBERT等)
1 背景模型压缩和加速在工业界应用中十分重要,特别是在嵌入式设备中。压缩和加速在算法层面,大体分为结构设计、量化、剪枝、蒸馏等。本文从这四个方面分析怎么实现BERT轻量化,从而实现BERT模型压缩和加速。2 结构设计通过结构设计来实现模型轻量化的手段主要有:权值共享、矩阵分解、分组卷积、分解卷积等。BERT中也广泛使用了这些技术。以ALBERT为例:矩阵分解:embedding层矩阵分解,分解前参数量 (V * H),分解后(V * E + E * H), 压缩 E/H 倍。权值共享:ALBE转载 2021-07-21 11:19:02 · 1385 阅读 · 0 评论 -
NLP预训练模型5 -- 模型结构优化(XLNet、ALBERT、ELECTRA)
1 背景上文我们从预训练任务优化(NLP预训练模型3 – 预训练任务优化(ERNIE、SpanBERT))和训练方法优化(NLP预训练模型4 – 训练方法优化(RoBERTa、T5))两个角度,分析了如何提升BERT和NLP预训练模型的performance。本文我们从模型结构优化的角度来进行深入分析。模型结构优化一直以来都是比较fancy的工作,优秀的模型结构设计,可以大大提高模型参数的效率,甚至小模型效果可以超过大模型。本文我们以XLNet、ALBERT、ELECTRA为例进行分析。虽然他们也可以转载 2021-07-21 11:10:50 · 1096 阅读 · 0 评论 -
NLP预训练模型4 -- 训练方法优化(RoBERTa、T5)
1 背景上文 NLP预训练模型3 – 预训练任务优化(ERNIE、SpanBERT)我们从预训练任务的角度讲解了如何对BERT进行优化,本文我们从训练方法的角度来讲解BERT优化。训练方法包括数据语料、文本预处理、超参调整等。BERT使用的一套超参,比如batch_size、training steps、optimizer、learning rate,是否还有优化的空间呢?每个深度学习调参侠都知道答案是显然的。虽然BERT在大模型大数据的作用下,对超参不是很敏感,但超参调整始终是模型优化一个绕不开转载 2021-07-21 10:46:38 · 2689 阅读 · 0 评论 -
NLP预训练模型3 -- 预训练任务优化(ERNIE、SpanBERT等)
1 背景前面一篇文章 NLP预训练模型2 – BERT详解和源码分析 中,我们从模型结构、实现源码、实验结果等角度,分析了预训练语言中大名鼎鼎的BERT模型。BERT大幅刷新的GLUE得分,提高了7.7个点之多,甚至有些中文NLP任务上达到了人类水平。那是不是在预训练模型方面就没法进行其他创新了呢,答案显然是否定的。前文中我们也提到了BERT存在的很多缺点,从预训练任务、模型结构、语料数据、模型轻量化等方面我们都可以进行深度优化。本文我们就先从预训练任务的优化讲起。BERT是一个multi-mask任转载 2021-07-21 10:37:44 · 953 阅读 · 0 评论 -
NLP预训练模型2 -- BERT详解和源码分析
1 模型结构论文信息:2018年10月,谷歌,NAACL论文地址 https://arxiv.org/pdf/1810.04805.pdf模型和代码地址 https://github.com/google-research/bertBERT自18年10月问世以来,就引起了NLP业界的广泛关注。毫不夸张的说,BERT基本上是近几年来NLP业界意义最大的一个创新,其意义主要包括大幅提高了GLUE任务SOTA performance(+7.7%),使得NLP真正可以应用到各生产环境中,大大推进转载 2021-07-21 10:24:18 · 3499 阅读 · 0 评论 -
NLP预训练模型1 -- 综述
1 为什么需要预训练模型复旦大学邱锡鹏教授发表了一篇NLP预训练模型综述,“Pre-trained Models for Natural Language Processing: A Survey”,从多个角度分析了当前预训练语言模型。本文基于这篇文章来分析。邱老师认为预训练模型有三大优势预训练模型从大规模语料中学习知识,对下游任务帮助很大预训练提供了一种更好的参数初始化方式,使得在目标任务上泛化能力更好,收敛速度更快预训练可以认为是一种正则化手段,可以防止模型在小数据集上过拟合。2 预训练简史转载 2021-07-21 10:01:02 · 381 阅读 · 0 评论 -
VS Code的Error: Running the contributed command: ‘_workbench.downloadResource‘ failed解决
VS Code的Error: Running the contributed command: '_workbench.downloadResource' failed解决1 问题描述2 解决方案1 问题描述此前,本人参考网上教程在VS Code中配置了“Remote SSH”插件(比如这个教程),本人是在Windows中使用VS Code来连接远程的Linux服务器。但是今天使用遇到了问题Error: Running the contributed command: '_workbench.dow转载 2021-07-12 20:29:50 · 6285 阅读 · 16 评论 -
把BERT模型从单GPU训练转换到多GPU训练但出现StopIteration: Caught StopIteration in replica 0 on device 0.
# Prepare model model = BertForMultipleChoice.from_pretrained(args.bert_model, cache_dir=PYTORCH_PRETRAINED_BERT_CACHE / 'distributed_{}'.format(args.local_rank), num_choices=4) model.to(device)import torch.nn as nn # Prepare mod.转载 2021-07-04 09:46:52 · 712 阅读 · 0 评论 -
list里面装tensor(pytorch的)如何合并起来
问题简述:使用pytorch中tensor时,有时需要将多个tensor合并成一个高维tensor或者是list中装着多个同纬度的tensor,想让这个list转为tensor核心方法:torch.stack()def stack(tensors: Union[Tuple[Tensor, ...], List[Tensor]], dim: _int=0, *, out: Optional[Tensor]=None) -> Tensor:import torch def li.原创 2021-06-24 20:45:03 · 2202 阅读 · 2 评论 -
torch.clamp()
源于FocalLoss.py损失函数中返回的loss起初是inf, 后续就前篇一律的nan, debug的结果发现代码里出现了probs = log(0), 这不就是出现inf的根源吗? 此处先给出大神的FocalLoss.py,转载 2021-06-08 20:25:20 · 646 阅读 · 0 评论 -
AttributeError: ‘Tensor‘ object has no attribute ‘bool‘
这个问题是跑b站作者bubbliiiing写的YOLOv4(pytorch版本)代码中出现的问题,具体是计算CIoU的过程中需要将mask的值转化为bool型,作者直接采用的mask.bool,ciou = ( 1 - box_ciou( pred_boxes_for_ciou[mask.bool], t_box[mask.bool] ) ) * box_loss_scale[mask.bool]这个也是版本的问题,将pytorch版本换到1.2.0以上应该就可以解决,不过我的9.0版本的显卡最高也就只原创 2021-06-01 16:02:55 · 1268 阅读 · 0 评论 -
torch.contiguous()方法
orch.contiguous()方法语义上是“连续的”,经常与torch.permute()、torch.transpose()、torch.view()方法一起使用,要理解这样使用的缘由,得从pytorch多维数组的低层存储开始说起:touch.view()方法对张量改变“形状”其实并没有改变张量在内存中真正的形状,可以理解为:view方法没有拷贝新的张量,没有开辟新内存,与原张量共享内存;view方法只是重新定义了访问张量的规则,使得取出的张量按照我们希望的形状展现。pytorch与num转载 2021-05-27 19:59:53 · 357 阅读 · 0 评论 -
关于ad hoc retrieval的解释
: 信息检索中常提到ad hoc, routing filtering等术语,能否解释一下它们的含义?Answer:TREC刚开始的时候只有两个任务,ad hoc和routing。前者类似于图书馆里的书籍检索,即书籍库(数据库)相对稳定不变,不同用户的查询要求是千变万化的。这种检索就称为ad hoc。基于Web的搜索引擎也属于这一类。后者的情况与前者相对,用户的查询要求相对稳定。在routing中,查询常常称为profile,也就是通常所说的兴趣,用户的兴趣在一段时间内是稳定不变的,但是数据库(更.转载 2021-05-14 19:45:19 · 381 阅读 · 0 评论 -
Louvain 算法原理 及设计实现
模块度:Louvain算法是一种基于图数据的社区发现算法。原始论文为:《Fast unfolding of communities in large networks》。算法的优化目标为最大化整个数据的模块度,模块度的计算如下:其中m为图中边的总数量,k_i表示所有指向节点i的连边权重之和,k_j同理。A_{i,j} 表示节点i,j之间的连边权重。有一点要搞清楚,模块度的概念不是Louvain算法发明的,而Louvain算法只是一种优化关系图模块度目标的一种实现而已。Louvain算法的转载 2021-05-13 22:29:01 · 476 阅读 · 0 评论 -
关于最近实践 Bert 的一些坑
前言最近,已经几乎将重心完全放在了如何在 Bert 之上搞事情,主要还是探索 Bert 在分类问题以及阅读理解问题上的一些表现,已经踩了不少的坑,想着把最近遇到的坑都记录下来,帮助大家更好的使用 Bert。几个需要注意的地方文本长度首先注意到的一点是, 随着文本长度的增加,所需显存容量也会随之呈现线性增加, 运行时间也接近线性,因此,我们往往要做一个权衡,对于不同任务而言, 文本长度所带来的影响力并不相同.就分类问题而言, 到一定的文本长度后,模型表现就几乎没有变化了,这个时候再去提升文转载 2021-05-11 22:40:08 · 1371 阅读 · 0 评论 -
BERT微调
bert微调步骤:首先从主函数开刀:copy run_classifier.py 随便重命名 my_classifier.py先看主函数:if __name__ == "__main__": flags.mark_flag_as_required("data_dir") flags.mark_flag_as_required("task_name") flags.mark_flag_as_required("vocab_file") flags.mark_flag_a..原创 2021-05-11 22:22:21 · 11282 阅读 · 2 评论 -
2021-04-17
运行GPU时,出现网上有很多人也遇到这个问题,有人说是 CUDA 和 cudnn 的版本匹配问题,有人说需要重装 Pytorch,CUDA,cudnn。我看了官网,版本是匹配的,试着重装了也不管用,而且我按照另一个系统的版本装也不行。 可以看到每次报错都在 conv.py 这个文件,就是在做 CNN 运算时出的错。 解决方法是引入如下语句import torchtorch.backends.cudnn.enabled = FalseGPU,CUDA,cudnn 的关系是:CU...原创 2021-04-17 10:47:52 · 104 阅读 · 0 评论 -
将pytorch中的三维tensor另存为csv文件
#!/usr/bin/env python3 import torch.nn as nnimport torch.nn.functionalimport numpy as npi#此案例来源于:https://pytorch.org/docs/master/nn.html#torch.nn.LSTMrnn = nn.LSTM(input_size=10,hidden_size=20,num_layers=2)#输入向量维数10, 隐藏元维度20, 2个LSTM层串联(若不写则默认为1)in.转载 2021-04-14 20:05:32 · 1357 阅读 · 0 评论 -
对列表中的元素是tensor形式,取出后在进行合并的代码块
#对列表中的元素是tensor形式,取出后在进行合并的代码块import torchimport torch.nn as nn import numpy as npv= torch.rand(1,3,5,5)a = torch.rand(1,3,5,5)g = torch.rand(1,3,5,5)print('v = ',v)print('a = ',a)print('g = ',g)cc = [v,a,g]print('cc =',cc)# print('cc =',cc[0.转载 2021-04-14 20:00:11 · 463 阅读 · 0 评论 -
list里面装tensor(pytorch的)如何合并起来
问题简述:使用pytorch中tensor时,有时需要将多个tensor合并成一个高维tensor或者是list中装着多个同纬度的tensor,想让这个list转为tensor核心方法:torch.stack()def stack(tensors: Union[Tuple[Tensor, ...], List[Tensor]], dim: _int=0, *, out: Optional[Tensor]=None) -> Tensor:import torchdef lis.转载 2021-04-01 14:56:23 · 3943 阅读 · 1 评论 -
Pytorch使用细节总结
Pytorch保存和加载模型Pytorch保存和加载模型后缀.pt 和.pth保存整个模型:torch.save(model,'save.pt')只保存训练好的权重:torch.save(model.state_dict(), 'save.pt')加载模型:pretrained_dict = torch.load("save.pt")只加载模型参数:model.load_state_dict(torch.load("save.pt")) #model.loa转载 2021-03-26 14:57:06 · 384 阅读 · 0 评论 -
Pytorch模型保存与加载,并在加载的模型基础上继续训练
pytorch保存模型非常简单,主要有两种方法:只保存参数;(官方推荐) 保存整个模型 (结构+参数)。 由于保存整个模型将耗费大量的存储,故官方推荐只保存参数,然后在建好模型的基础上加载。本文介绍两种方法,但只就第一种方法进行举例详解。一、只保存参数1.保存一般地,采用一条语句即可保存参数:torch.save(model.state_dict(), path)其中model指定义的模型实例变量,如 model=vgg16( ), path是保存参数的路径,如 path='.转载 2021-03-25 10:35:41 · 2082 阅读 · 0 评论 -
PyTorch模型保存深入理解
前面写过一篇PyTorch保存模型的文章:Pytorch模型保存与加载,并在加载的模型基础上继续训练 ,简单介绍了PyTorch模型保存和加载函数的用法,足以快速上手,但对相关函数和参数的具体用法和代表的含义没有进行展开介绍,这篇文章用于记录之。PyTorch保存模型的语句是这样的:torch.save(model.state_dict(), path)加载是这样的:model.load_state_dict(torch.load(path))下面我们将其拆开逐句介绍,深入理解。转载 2021-03-25 10:34:04 · 726 阅读 · 0 评论 -
PyTorch中的model.modules(), model.children(), model.named_children(), model.parameters()等
文通过一个例子实验来观察并讲解PyTorch中model.modules(), model.named_modules(), model.children(), model.named_children(), model.parameters(), model.named_parameters(), model.state_dict()这些model实例方法的返回值。例子如下:import torch import torch.nn as nn class Net(nn.Module):转载 2021-03-25 10:31:27 · 2978 阅读 · 0 评论 -
如何在多GPU上训练PyTorch模型
深度学习模型的最大问题之一是它们经常很大,往往无法在单个GPU中进行训练。PyTorch构建了两种在多个GPU中实施分布式训练的方法:nn.DataParalllel和nn.DistributedParalllel。它们是包装和更改代码以及增加在多个GPU中训练网络的功能的简单方法。nn.DataParallel更容易使用,但只需要在一台机器上使用。nn.DataParalllel在每个批次中,仅使用一个过程来计算模型权重并将其分配给每个GPU。在这篇文章中,我会详细介绍nn.DataParalle转载 2021-03-24 10:16:12 · 998 阅读 · 0 评论