深度学习
文章平均质量分 63
anshiquanshu
这个作者很懒,什么都没留下…
展开
-
itertools.chain()
python转载 2022-07-29 15:44:51 · 129 阅读 · 0 评论 -
conda创建、查看、删除虚拟环境
conda 如何创建、查看、删除py的虚拟环境:(补充: conda国内源配置 可参考:https://blog.csdn.net/suiyueruge1314/article/details/105124806)1、创建虚拟环境:Anaconda创建环境:比如,创建pyhon=3.6的版本环境取名叫 nlpconda create -n nlp python=3.62、删除虚拟环境操作:(谨慎操作)conda remove -n nlp --all3、激活环境co转载 2022-04-01 21:50:56 · 822 阅读 · 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 · 2179 阅读 · 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 · 1127 阅读 · 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 · 2887 阅读 · 0 评论 -
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 · 1230 阅读 · 1 评论 -
Sigmoid和tanh的异同
它们之间存在的细微差别观察sigmoid和tanh的函数曲线,sigmoid在输入处于[-1,1]之间时,函数值变化敏感,一旦接近或者超出区间就失去敏感性,处于饱和状态,影响神经网络预测的精度值。tanh的输出和输入能够保持非线性单调上升和下降关系,符合BP网络的梯度求解,容错性好,有界,渐进于0、1,符合人脑神经饱和的规律,但比sigmoid函数延迟了饱和期。其他满足定义域为R,值域为(0,1)的函数...转载 2021-11-09 10:04:34 · 204 阅读 · 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 · 2782 阅读 · 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 · 1026 阅读 · 0 评论 -
Linux上查看已安装的CUDA和cuDNN版本号以及如何查看当前pytorch使用的cuda版本
1. 查看CUDA版本cuda默认安装在/usr/local目录,可以使用ls -l /usr/local | grep cuda查看该目录下有哪些cuda版本假设有如下输出:lrwxrwxrwx 1 root root 8 Apr 26 2019 cuda -> cuda-9.0drwxr-xr-x 11 root root 4096 Apr 26 2019 cuda-10.0drwxr-xr-x 11 root root 4096 Apr 26 2019 cuda...转载 2021-08-31 20:10:58 · 17500 阅读 · 0 评论 -
windows平台下VSCode通过跳板机连接服务器
一、安装openssh我会在后记部分解释为什么这步是必需的。好多人推荐都是使用windows的Powershell来安装:以管理员身份运行window Powershell(windows键+x,然后选(A)[1]),然后键入如下两条命令[2]:第一条命令:Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'(这条是用来检测是否有适合安装的openssh软件,正常情况下应有如下返回:)Name : OpenSSH.Clie原创 2021-08-24 09:44:33 · 1301 阅读 · 1 评论 -
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 · 1536 阅读 · 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 · 1177 阅读 · 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 · 2864 阅读 · 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 · 1024 阅读 · 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 · 3656 阅读 · 0 评论 -
NLP预训练模型1 -- 综述
1 为什么需要预训练模型复旦大学邱锡鹏教授发表了一篇NLP预训练模型综述,“Pre-trained Models for Natural Language Processing: A Survey”,从多个角度分析了当前预训练语言模型。本文基于这篇文章来分析。邱老师认为预训练模型有三大优势预训练模型从大规模语料中学习知识,对下游任务帮助很大预训练提供了一种更好的参数初始化方式,使得在目标任务上泛化能力更好,收敛速度更快预训练可以认为是一种正则化手段,可以防止模型在小数据集上过拟合。2 预训练简史转载 2021-07-21 10:01:02 · 397 阅读 · 0 评论 -
使用xshell通过跳板机(堡垒机)连接服务器
总结一下就是为跳板机创建隧道,为服务器创建代理,隧道和代理的端口要一致.前提假设:跳板机 主机地址为:A待登录服务器 主机地址为:Bstep 1、新建跳板机A会话1)连接名称:任意取(如:跳板机)主机:填写跳板机IP或跳板机服务器名称2)用户身份验证填写跳板机A的用户名和密码3)ssh-隧道建立类型:Dynamic(SOCKS4/5)侦听端口:可以自己设置,但必须与待连接服务器的配置一致,如此处假设侦听端口为1080新建好跳板机会话后连接跳转载 2021-07-16 10:41:53 · 2385 阅读 · 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 · 6386 阅读 · 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 · 740 阅读 · 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 · 2276 阅读 · 2 评论 -
torch.clamp()
源于FocalLoss.py损失函数中返回的loss起初是inf, 后续就前篇一律的nan, debug的结果发现代码里出现了probs = log(0), 这不就是出现inf的根源吗? 此处先给出大神的FocalLoss.py,转载 2021-06-08 20:25:20 · 683 阅读 · 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 · 1302 阅读 · 0 评论 -
vscode通过跳板机连接远程服务器
配置ssh config配置ssh config来实现跳板机访问可以极大地简化我们的连接流程。一、打开ssh config文件(远程资源管理器 -> SSH Targets -> Configure -> ssh config)二、配置ssh config假设你的跳板机的ip地址为A,目标机器的地址为B,那么在你的config中写下如下配置并保存:Host JumpMachine HostName A # 跳板机的ip地址原创 2021-05-27 21:52:06 · 1039 阅读 · 0 评论 -
torch.contiguous()方法
orch.contiguous()方法语义上是“连续的”,经常与torch.permute()、torch.transpose()、torch.view()方法一起使用,要理解这样使用的缘由,得从pytorch多维数组的低层存储开始说起:touch.view()方法对张量改变“形状”其实并没有改变张量在内存中真正的形状,可以理解为:view方法没有拷贝新的张量,没有开辟新内存,与原张量共享内存;view方法只是重新定义了访问张量的规则,使得取出的张量按照我们希望的形状展现。pytorch与num转载 2021-05-27 19:59:53 · 369 阅读 · 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 · 18611 阅读 · 3 评论 -
关于最近实践 Bert 的一些坑
前言最近,已经几乎将重心完全放在了如何在 Bert 之上搞事情,主要还是探索 Bert 在分类问题以及阅读理解问题上的一些表现,已经踩了不少的坑,想着把最近遇到的坑都记录下来,帮助大家更好的使用 Bert。几个需要注意的地方文本长度首先注意到的一点是, 随着文本长度的增加,所需显存容量也会随之呈现线性增加, 运行时间也接近线性,因此,我们往往要做一个权衡,对于不同任务而言, 文本长度所带来的影响力并不相同.就分类问题而言, 到一定的文本长度后,模型表现就几乎没有变化了,这个时候再去提升文转载 2021-05-11 22:40:08 · 1471 阅读 · 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 · 11476 阅读 · 2 评论 -
BERT模型fine-tuning
Preface:fine-tuning到底是什么?在预训练模型层上添加新的网络层,然后预训练层和新网络层联合训练。文本分类的例子最典型了,最后加一个Dense层,把输出维度降至类别数,再进行sigmoid或softmax。比如命名实体识别,在外面添加BiLSTM+CRF层,就成了BERT+BiLSTM+CRF模型。这个例子可能不太典型,因为还是加了繁重的网络结构。做多分类和多标签分类时,只需要用到以下四个文件。├── tokenization.py # 所需文件四:用于文本预处理(分字)的文件原创 2021-05-11 21:59:07 · 1605 阅读 · 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 · 4080 阅读 · 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 · 145 阅读 · 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 · 1390 阅读 · 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 · 473 阅读 · 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 · 3980 阅读 · 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 · 409 阅读 · 0 评论 -
Pytorch模型保存与加载,并在加载的模型基础上继续训练
pytorch保存模型非常简单,主要有两种方法:只保存参数;(官方推荐) 保存整个模型 (结构+参数)。 由于保存整个模型将耗费大量的存储,故官方推荐只保存参数,然后在建好模型的基础上加载。本文介绍两种方法,但只就第一种方法进行举例详解。一、只保存参数1.保存一般地,采用一条语句即可保存参数:torch.save(model.state_dict(), path)其中model指定义的模型实例变量,如 model=vgg16( ), path是保存参数的路径,如 path='.转载 2021-03-25 10:35:41 · 2161 阅读 · 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 · 747 阅读 · 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 · 3051 阅读 · 0 评论 -
如何在多GPU上训练PyTorch模型
深度学习模型的最大问题之一是它们经常很大,往往无法在单个GPU中进行训练。PyTorch构建了两种在多个GPU中实施分布式训练的方法:nn.DataParalllel和nn.DistributedParalllel。它们是包装和更改代码以及增加在多个GPU中训练网络的功能的简单方法。nn.DataParallel更容易使用,但只需要在一台机器上使用。nn.DataParalllel在每个批次中,仅使用一个过程来计算模型权重并将其分配给每个GPU。在这篇文章中,我会详细介绍nn.DataParalle转载 2021-03-24 10:16:12 · 1048 阅读 · 0 评论 -
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 · 685 阅读 · 0 评论