python
文章平均质量分 55
anshiquanshu
这个作者很懒,什么都没留下…
展开
-
heatmap热力图
热力图的右侧是颜色带,上面代表了数值到颜色的映射,数值由小到大对应色彩由暗到亮。从上面的heatmap中我们可以得到两层信息,一是随着时间的推移,飞机的乘客数量是在逐步增多的,二是航班的乘坐旺季在七月和八月份。热力图在实际中常用于展示一组变量的相关系数矩阵,在展示列联表的数据分布上也有较大的用途,通过热力图我们可以非常直观地感受到数值大小的差异状况。参照mask和上面绘制的图,应该就很容易理解了,mask中为1的部分,就是要被盖掉的部分。的数值,我们得把数值进行格式化,这就用到了下面的参数。转载 2023-03-03 17:11:13 · 4189 阅读 · 2 评论 -
散点图和箱线图
stripplot(分布散点图)接下来就直接上代码演示,首先导入相应的包。下面是本次演示所使用的数据集:我们先来看一下stripplot是什么样的可以看到stripplot的作图原理就是按照x属性所对应的类别分别展示y属性的值,适用于分类数据。上图就是不同饭点的账单总金额的散点图。接下来讲解一下stripplot的主要参数,在这里我们只讲stripplot特有的一些参数,其他一些seaborn中常见参数的介绍可以翻看之前的文章。x:设置分组统计字段y:设置分布统计字段。转载 2023-03-16 09:34:07 · 1091 阅读 · 0 评论 -
torch.argmax()函数
argmax函数:torch.argmax(input, dim=None, keepdim=False) 返回指定维度最大值的序号,dim给定的定义是:the demention to reduce,就是把dim这个维度,变成这个维度的最大值的index。1)dim表示不同维度。特别的在dim=0表示二维矩阵中的列,dim=1在二维矩阵中的行。广泛的来说,我们不管一个矩阵是几维的,比如一个矩阵维度如下:(d0,d1,…,dn−1) ,那么dim=0就表示对应到d0 也就是第一个维度,dim=1表示对应到也转载 2022-12-05 16:15:09 · 273 阅读 · 0 评论 -
python WARNING: Retrying (Retry(total=4, connect...) ERROR: Cannot determine archive format of /tmp/
解决方法:出现该错误信息是因为pip源连接证书验证失败,将pip源调整为国内的源就可以了,比如要下载fitlog下面是收集的一些国内的pip源:阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/豆瓣(douban) http://pypi.douban.com/simple/原创 2022-11-22 20:46:00 · 558 阅读 · 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 · 3501 阅读 · 0 评论 -
执行git clone拉取代码出现错误RPC failed,curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054解决方法
最近在系统学习多线程并发的课程,课程中讲到了unsafe类,由于unsafe类在jdk中看不到源码,在idea中打开是反编译的,看不到具体的注释,所以去github上拉取openjdk的源码,openjdk上可以看到源码注释,但是在拉取时,一开始是好好地,但是拉取了一二十分钟后,突然报错了以前在github上拉取过很多图书的源码(买了很多技术书籍),拉取代码都是正常的,就是这次出错了,解决方法也很简单:继续输入命令git config http.sslVerify "false"转载 2022-04-06 22:44:04 · 1757 阅读 · 1 评论 -
使用tensorboard出现: “couldn‘t build proto file into descriptor pool”
当使用tensorboard时,出现了错误:“couldn’t build proto file into descriptor pool!”出现该问题的原因可能为:1、tensorboard与tensorflow的版本不合适2、tensorboard与tensorboardX的版本不合适3、tensorboardX与Pytorch的版本不合适4、protobuf的版本不合适尤其是在你的环境中,同时具有tensorboard和tensorboardX时,更有可能出现上述问题。我给出原创 2022-04-06 11:02:11 · 1171 阅读 · 1 评论 -
ImportError: cannot import name ‘SAVE_STATE_WARNING‘ from ‘torch.optim.lr_sc
在使用pytorch时遇到的问题,问题描述:ImportError: cannot import name 'SAVE_STATE_WARNING' from 'torch.optim.lr_sc解决方法:默认安装的torch版本是1.8版本,降低torch的版本为1.7.1即可。或者是升级transformers版本...原创 2022-04-06 11:02:59 · 2946 阅读 · 0 评论 -
ModuleNotFoundError: No module named ´sklearn.utils.linear_assignment_´
问题从sklearn.utils.linear_assignment_ 导入包 linear_assignmentfrom sklearn.utils.linear_assignment_ import linear_assignment1报错No module named ‘sklearn.utils.linear_assignment_’1解决1.使用scipy.optimize.linear_sum_assignment 替代通过百度、谷歌都没有弄明白,基本上都是说sklear.转载 2022-03-11 14:19:21 · 686 阅读 · 1 评论 -
Allennlp执行train时 出现 field None type相关的报错
使用allennlp ==0.9.0时发生了 TypeError: ArrayField.empty_field: return type `None` is not a `<class 'allennlp.data.fields.field.Field'>`.经Google,出现该问题因为同时使用的overrides包版本太高,把它降低版本即可解决方法:错误来源于Overrides包. 换成较旧的版本即可pip install overrides==4.1.2...原创 2022-03-11 14:11:53 · 1263 阅读 · 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 · 1868 阅读 · 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 · 2492 阅读 · 2 评论 -
公式识别软件
https://mathpix.com/下载地址本文推荐一个公式输入神器,只要截图就能识别公式,手写的公式都能识别。经过实测,几乎没有识别不出的公式,并可以输入到word、markdown、latex文件。一、前言写论文、博客,技术文档,公式输入非常麻烦,绝大部分朋友记不住latex代码,机器之心推荐了一篇文章《最好用的文字与公式编辑器,这套数学笔记神器送给你》推荐了公式神器 Mathpix Snip。本站对这个神器进行实测。二、识别公式测试Mathpix Snip 这款神器只要截个图,转载 2021-12-24 16:13:32 · 5375 阅读 · 0 评论 -
Sigmoid和tanh的异同
它们之间存在的细微差别观察sigmoid和tanh的函数曲线,sigmoid在输入处于[-1,1]之间时,函数值变化敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态,影响神经网络预测的精度值。tanh的输出和输入能够保持非线性单调上升和下降关系,符合BP网络的梯度求解,容错性好,有界,渐进于0、1,符合人脑神经饱和的规律,但比sigmoid函数延迟了饱和期。其他满足定义域为R,值域为(0,1)的函数...转载 2021-11-09 10:04:34 · 216 阅读 · 0 评论 -
python itertools.chain 乘号* 实例
import itertoolsa= ['a','aa','aaa']b= itertools.chain(a)c= itertools.chain(*a)print(a)print(list(b))print(list(c))print结果[‘a’, ‘aa’, ‘aaa’][‘a’, ‘aa’, ‘aaa’][‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’]转载 2021-11-03 16:53:04 · 123 阅读 · 0 评论 -
No module named torch_sparse, 及pytorch-geometric安装
pip安装完pytorch-geometric之后,报错No module named torch_sparse,搜了一下,居然是一个大坑,总结一下。网上各种方法都装不上,总是出各种问题,最后还是在官网上面找到安装方法。下面记载一下:第一种方法(别人我不知道,我试着无效):第二种方法(亲测有效):We alternatively provide pip wheels for all major OS/PyTorch/CUDA combinations, seehere网址为:http..原创 2021-11-02 20:54:54 · 2904 阅读 · 7 评论 -
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 · 1087 阅读 · 0 评论 -
深入简出理解SCIPY.SPARSE.CSR_MATRIX和SCIPY.SPARSE.CSC_MATRIX
一、导入 在用python进行科学运算时,常常需要把一个稀疏的np.array压缩,这时候就用到scipy库中的sparse.csr_matrix函数和sparse.csc_matric函数。 其中csr_matrix:Compressed SparseRowmarix,而csc_matric:Compressed SparseColumnmarix。二、引例这里先放上一个官网的经典例子:from scipy.sparse import csr_matriximport ...转载 2021-10-26 21:24:51 · 1215 阅读 · 0 评论 -
Pytorch判断两个tensor是否相等
equal – 张量比较原型:equal(other)比较两个张量是否相等–相等返回:True; 否则返回:Falseimport torcha = torch.tensor([1, 2, 3, 4])b = torch.tensor([1, 2, 3, 4])print(a.equal(b))# 返回结果:Trueeq – 逐元素判断原型:eq(other)比较两个张量tensor中,每一个对应位置上元素是否相等–对应位置相等,就返回一个1;否则返回一个0.impor原创 2021-05-19 15:07:15 · 19426 阅读 · 3 评论 -
关于最近实践 Bert 的一些坑
前言最近,已经几乎将重心完全放在了如何在 Bert 之上搞事情,主要还是探索 Bert 在分类问题以及阅读理解问题上的一些表现,已经踩了不少的坑,想着把最近遇到的坑都记录下来,帮助大家更好的使用 Bert。几个需要注意的地方文本长度首先注意到的一点是, 随着文本长度的增加,所需显存容量也会随之呈现线性增加, 运行时间也接近线性,因此,我们往往要做一个权衡,对于不同任务而言, 文本长度所带来的影响力并不相同.就分类问题而言, 到一定的文本长度后,模型表现就几乎没有变化了,这个时候再去提升文转载 2021-05-11 22:40:08 · 1539 阅读 · 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 · 11601 阅读 · 2 评论 -
BERT模型fine-tuning
Preface:fine-tuning到底是什么?在预训练模型层上添加新的网络层,然后预训练层和新网络层联合训练。文本分类的例子最典型了,最后加一个Dense层,把输出维度降至类别数,再进行sigmoid或softmax。比如命名实体识别,在外面添加BiLSTM+CRF层,就成了BERT+BiLSTM+CRF模型。这个例子可能不太典型,因为还是加了繁重的网络结构。做多分类和多标签分类时,只需要用到以下四个文件。├── tokenization.py # 所需文件四:用于文本预处理(分字)的文件原创 2021-05-11 21:59:07 · 1656 阅读 · 0 评论 -
TypeError: expected np.ndarray (got DataFrame)解决方法
DataFrame转成tensor这次跑实验的时候我是直接导入了csv表格,但是我使用的是pytorch,所以必须将csv中的数据类型转化成tensor形式,要不然无法跑后面的实验。此时出现的一个错误,找了很多种方法仍然是不行,我尝试过torch.from_numpy()和torch.Tensor(),其结果如下:尝试torch.from_numpy()出错:尝试torch.Tensor()出错:解决方法:X = torch.from_numpy(X.values)转载 2021-05-10 09:22:37 · 4130 阅读 · 2 评论 -
从csv文件中读取数据,提取数据的方法
数据保存在csv文件中1.从csv文件中读取数据参数header=None的有无(1)没有header=None——直接将csv表中的第一行当作表头# 读取数据import pandas as pddata = pd.read_csv("data1.csv")print(data)打印结果为:(2)有header=None——自动添加第一行当作表头# 读取数据import pandas as pddata = pd.read_csv("data1.csv.转载 2021-05-09 16:32:05 · 10061 阅读 · 0 评论 -
Python-import导入上级目录文件
假设有如下目录结构:-- dir0 | file1.py | file2.py | dir3 | file3.py | dir4 | file4.pydir0文件夹下有file1.py、file2.py两个文件和dir3、dir4两个子文件夹,dir3中有file3.py文件,dir4中有file4.py文件。1.导入同级模块python导入同级模块(在同一个文件夹中的py文件)直接导入即可。import xxx如在file1.py中想导入file2.转载 2021-04-26 21:48:27 · 3093 阅读 · 4 评论 -
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 · 166 阅读 · 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 · 1433 阅读 · 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 · 485 阅读 · 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 · 4005 阅读 · 1 评论 -
RuntimeError: Length of all samples has to be greater than 0, but found an element in ‘lengths‘ that
最近在使用pack_padded_sequence出现了RuntimeError: Length of all samples has to be greater than 0, but found an element in ‘lengths’ that is <= 0这个错误,刚开始百思不得其解,后来发现 问题出现在pack_padded_sequence(seq, seq_lengths, batch_first=True, enforce_sorted=False),里面的参数seq_leng原创 2021-03-23 22:44:40 · 2897 阅读 · 4 评论 -
pytorch中保存和加载模型
本文主要涉及到3个函数:torch.save: 使用Python的pickle实用程序将对象进行序列化,然后将序列化的对象保存到disk,可以保存各种对象,包括模型、张量和字典等。torch.load: 使用pickle unpickle工具将pickle的对象文件反序列化为内存。torch.nn.Module.load_state_dict: 用反序列化的state_dict来加载模型参数。1 读写tensor1.1 单个张量import torchx = torch.tensor([3.,转载 2021-03-23 20:01:27 · 697 阅读 · 0 评论 -
Pytorch之pack_padded_sequence与pad_packed_sequence函数
因为专注于NLP的学习与研究,所以经常接触文本数据,文本数据有一个不好的地方是不同的文本的长度不同,而输入到模型中一个Batch的数据要求他们的长度是相同的,这就产生了要给文本加padding,使得一个Batch中所有的文本长度变成相同的,但pad不能参与到训练,这就给广大的炼丹师带来了麻烦,但幸好Pytorch给我们提供了两个函数pack_padded_sequence与pad_packed_sequence让我们很好的解决了这个问题。import torchfrom torch.nn.utils.r原创 2021-03-23 09:50:29 · 209 阅读 · 0 评论 -
einsum满足你一切需要:深度学习中的爱因斯坦求和约定
作者:Tim Rocktäschel编译:weakish【编者按】FAIR研究科学家Tim Rocktäschel简要介绍了einsum表示法的概念,并通过真实例子展示了einsum的表达力。当我和同事聊天的时候,我意识到不是所有人都了解einsum,我开发深度学习模型时最喜欢的函数。本文打算改变这一现状,让所有人都了解它!爱因斯坦求和约定(einsum)在numpy和TensorFlow之类的深度学习库中都有实现,感谢Thomas Viehmann,最近PyTorch也实现了这一函数。关于einsu转载 2021-03-23 09:48:28 · 320 阅读 · 0 评论 -
tf.nn.in_top_k和tf.nn.top_k()的用法
tf.nn.in_top_k''' predictions: 你的预测结果(一般也就是你的网络输出值)大小是预测样本的数量乘以输出的维度 target: 实际样本类别的标签,大小是样本数量的个数 k: 每个样本中前K个最大的数里面(序号)是否包含对应target中的值 '''import tensorflow as tfA = tf.Variable([[0.8, 0.4, 0.5, 0.6],[0.1, 0.9, 0.2, 0.4.原创 2021-03-17 10:58:44 · 779 阅读 · 0 评论 -
汇总 Pytorch 踩过的10个坑
ytorch中的交叉熵pytorch的交叉熵nn.CrossEntropyLoss在训练阶段,里面是内置了softmax操作的,因此只需要喂入原始的数据结果即可,不需要在之前再添加softmax层。这个和tensorflow的tf.softmax_cross_entropy_with_logits如出一辙.[1][2]pytorch的交叉熵nn.CrossEntropyLoss在训练阶段,里面是内置了softmax操作的,因此只需要喂入原始的数据结果即可,不需要在之前再添加softmax层。这个和ten转载 2021-03-17 08:53:13 · 408 阅读 · 0 评论 -
TensorFlow交叉熵函数(cross_entropy)的理解
内容参考:Tensorflow四种交叉熵函数计算公式:tf.nn.cross_entropyTensorFlow四种Cross Entropy算法实现和应用交叉熵(Cross Entropy)交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小,常见的Loss函数就是均方平方差(Mean Squared Error),定义如下。注意:tensorflow交叉熵计算函数输入中的logits都不是softma..转载 2021-03-13 16:49:54 · 764 阅读 · 0 评论 -
RuntimeError: Expected object of backend CUDA but got backend CPU for argument #3 ‘index‘
使用bert时遇到的一个bug,是因为我没有把向量从cpu类型转为gpu类型,参考issue 227问题:Here is the complete error message:Traceback (most recent call last): File "app/set_expantion_eval.py", line 118, in <module> map_n=flags.map_n) File "app/set_expantion_eval.py", line转载 2021-02-24 15:35:17 · 845 阅读 · 0 评论 -
PyTorch代码调试利器: 自动print每行代码的Tensor信息
本文介绍一个用于 PyTorch 代码的实用工具 TorchSnooper。作者是TorchSnooper的作者,也是PyTorch开发者之一。GitHub 项目地址: https://github.com/zasdfgbnm/TorchSnooper大家可能遇到这样子的困扰:比如说运行自己编写的 PyTorch 代码的时候,PyTorch 提示你说数据类型不匹配,需要一个 double 的 tensor 但是你给的却是 float;再或者就是需要一个 CUDA tensor, 你给的却是个 CPU转载 2021-02-24 11:02:45 · 410 阅读 · 0 评论 -
Python typeerror: can’t multiply sequence by non-int of type ‘float’ Solution
While strings can be multiplied by integers to create a repeating sequence, strings cannot be multiplied by floats. Otherwise, Python returns an error.In this article, we’re going to talk about the “typeerror: can t multiply sequence by non-int of type ‘转载 2021-02-23 11:04:22 · 3715 阅读 · 0 评论 -
RuntimeError: Expected tensor for argument #1 ‘indices‘ to have scalar type Long; but got CUDAType
错误如下:PyTorch查询embedding的时候,报错了~/anaconda3/lib/python3.6/site-packages/torch/nn/modules/module.py in __call__(self, *input, **kwargs) 491 result = self._slow_forward(*input, **kwargs) 492 else:--> 493 result =转载 2021-02-22 14:46:12 · 2621 阅读 · 4 评论