
Pytorch
文章平均质量分 63
Pytorch
u013250861
这个作者很懒,什么都没留下…
展开
-
国内源安装torch2.1.2+cu121、torch2.3.1+cu121
【代码】离线安装torch2.1.2+cu121。原创 2024-12-23 19:24:32 · 4523 阅读 · 0 评论 -
python 不省略打印tensor、numpy、panda,在终端中打印numpy数组时避免行的换行显示
这样就可以在终端中完整地打印出每一行的数组元素,而不会被强制换行。需要注意的是,在行的长度非常长的情况下,仍然可能会因为终端的限制而出现换行的情况。函数来设置打印选项。Torch 在输出tensor的时候,如何指定输出全部,不要。数组时避免行的换行显示,可以通过。如果想要在终端中打印。原创 2024-06-16 14:57:37 · 656 阅读 · 0 评论 -
docker下gdb调试断点不停
它能使一个进程进入到一种“安全”运行模式,该模式下的进程只能调用4种系统调用(system calls),即read(), write(), exit()和sigreturn(),否则进程便会被终止。还有一种可能是gdb挂在父进程上,而断点处的代码是在子进程中执行的。在gdb中设置set follow-fork-mode child使gdb既能调试父进程,又能调试子进程。只有以--security-opt seccomp=unconfined的模式运行container才能利用GDB调试。原创 2024-06-06 00:09:49 · 265 阅读 · 0 评论 -
PyTorch源码编译、VSCode----python/C++ Debug 调试 Pytorch源码
注意:在window的git bash中下载的源码拷贝到Linux中会出错。可以在wsl的linux系统中git clone相应源码。原创 2024-06-02 15:51:08 · 981 阅读 · 1 评论 -
pytorch源码编译,支持cuda cuDnn ,深度学习 之 源码编译
安装了上面两步后,会自动安装nvcc。原创 2024-06-02 14:59:14 · 1050 阅读 · 0 评论 -
【PyTorch】Torch.gather()用法详细图文解释
使用函数的时候,涉及到3个Tensor及它们在这个函数中扮演的角色:input:输入(糖果区里等待被购买的各类糖果)index:索引(商场导购员)output:输出(来买糖果的人最终买走的某类糖果)另外还涉及到1个参数:dim:需要在input中使用index来“指路”的维度(选择糖果的范围)原创 2024-05-29 01:07:50 · 2623 阅读 · 0 评论 -
让pytorch 控制台输出的tensor时,当元素过多时也不换行
【代码】让pytorch 控制台输出的tensor时,当元素过多时也不换行。原创 2024-03-10 14:01:19 · 635 阅读 · 0 评论 -
Pytorch 源码解读:Dataset、DataLoader、Sampler、BatchSampler、collate_fn
需要继承需要覆写方法,返回值必须可迭代。原创 2024-02-19 23:12:14 · 1446 阅读 · 0 评论 -
Libtorch:Linux系统中使用libtorch【下载、解压】【下载的libtorch是编译好的库文件,可直接使用】
这几天学习C++部署模型,看到libtorch是现在人人都可以用普遍方法。原创 2022-11-13 10:55:52 · 1953 阅读 · 0 评论 -
C++:利用Libtorch调用保存的pytorch模型(.pt)进行前向计算(预测)
在写C++代码调用.pt模型时,也要注意预处理方式要和之前保持一致,不然在C++环境下的模型预测结果会和在python环境下的结果相差很大。在pytorch的.pth网络模型转.pt过程中,要保证图像image的预处理方式与之前在训练.pth模型时保持一致。原创 2022-11-16 23:52:01 · 7485 阅读 · 0 评论 -
Pytorch:长度不同的数据如何放在一个batch
为我们提供的数据裁剪函数,当collate_fn=None时,初始化会调用默认的裁剪方式即直接将数据打包,所以这时如果数据shape不一致,会打包不成功。因此我们需要自己写一个collate_fn函数,我常用的两种方式是:1.将所有数据截断到和最短的数据一样长;2.将所有的数据补零到和最长的数据一样长。是一致的,才能打包成一个方块投入模型。这样是没法成功加载dataset,因为Dataloader要求一个batch内的数据。RNN及其变种算法处理一维信号经常会遇到信号长度不一致的问题。原创 2023-01-10 16:44:29 · 1666 阅读 · 0 评论 -
Pytorch:使用scatter()、scatter_()将Label变成one-hot编码
【代码】Pytorch:使用scatter()、scatter_()将Label变成one-hot编码。原创 2023-01-10 10:36:27 · 210 阅读 · 0 评论 -
Pytorch网络结构可视化:torchsummary
以上两种的输入只有一个input,这种是经常遇到的情况。原创 2022-09-02 15:33:21 · 816 阅读 · 0 评论 -
Pytorch:BatchNorm1d、BatchNorm2d、BatchNorm3d
网络训练时和网络评估时,BatchNorm模块的计算方式不同。如果一个网络里包含了BatchNorm,则在训练时需要先调用train(),使网络里的BatchNorm模块的training=True(默认是True),在网络评估时,需要先调用eval()使网络的training=False。原创 2022-08-19 19:39:32 · 571 阅读 · 0 评论 -
PyTorch常用参数初始化方法:【均匀分布、正态(高斯)分布、Xavier、kaiming、正交矩阵、稀疏矩阵、常数、单位矩阵、零填充】
从均匀分布U(a, b)中采样,初始化张量。参考资料:PyTorch常用参数初始化方法详解PyTorch常用参数初始化方法详解原创 2022-06-12 14:51:26 · 2258 阅读 · 0 评论 -
Pytorch中的梯度累加【在实验时,由于GPU显存限制,遇到batch_size不能再增大的情况。为解决该问题,使用梯度累加方法】
在实验时,由于GPU显存限制,遇到batch_size不能再增大的情况。为解决该问题,使用梯度累加方法。不进行梯度累加的方法如下:使用梯度累加:原本batch size为32,使用梯度累加,设置accumulation_steps=4,此时只需将batch_size设置为8,就能达到之前的效果。参考资料:Pytorch中的梯度累加...原创 2022-06-12 14:28:31 · 544 阅读 · 0 评论 -
Linux:普通用户安装Pytorch、Tensorflow【在Anaconda的基础上】
1.安装Anaconda第一条:wget https://repo.anaconda.com/archive/Anaconda3-2020.11-Linux-x86_64.sh第二条:bash Anaconda3-2020.11-Linux-x86_64.sh第三条:source ~/.bashrc参考资料:linux安装pytorchanaconda 更换默认官方镜像离线安装Pytorch 最简单 高效的方法http://download.pytorch.org/whl/torch_原创 2022-05-13 13:44:24 · 577 阅读 · 0 评论 -
PyTorch的可重复性问题【设置随机种子】
由于在模型训练的过程中存在大量的随机操作,使得对于同一份代码,重复运行后得到的结果不一致。因此,为了得到可重复的实验结果,我们需要对随机数生成器设置一个固定的种子。def seed_everything(seed=1029): ''' 设置整个开发环境的seed :param seed: :param device: :return: ''' random.seed(seed) os.environ['PYTHONHASHSEED'] = s原创 2022-05-16 22:18:36 · 399 阅读 · 0 评论 -
Pytorch模型保存/加载方式:①只保存/加载模型参数【推荐】;②保存/加载整个模型(结构+参数);③保存模型Checkpoint;④CPU/GPU保存加载【后缀:pt、pth、pkl】
当提到保存和加载模型时,有三个核心功能需要熟悉:torch.save:将序列化的对象保存到disk。这个函数使用Python的pickle实用程序进行序列化。使用这个函数可以保存各种对象的模型、张量和字典。torch.load:使用pickle unpickle工具将pickle的对象文件反序列化为内存。torch.nn.Module.load_state_dict:使用反序列化状态字典加载model’s参数字典。一、模型保存与调用方式一:只保存模型参数1、模型保存model = TheMo原创 2021-10-02 23:15:00 · 1224 阅读 · 1 评论 -
Pytorch和GPU有关操作(CUDA)
使用GPU前,我们首先需要查看GPU信息,这可以通过如下命令实现:在命令行输入:nvidia-smi输出如下:可以看到总共有两块3090显卡。一、设定计算设备默认情况下Pytorch将数据创建在内存,然后利用CPU进行计算,所以我们我们需要手动设定GPU信息。接下来介绍几个相关指令查看GPU是否可用:torch.cuda.is_available()查看GPU数量:torch.cuda.device_count()查看当前GPU索引号(从0开始):torch.cuda.current原创 2022-05-13 22:10:29 · 563 阅读 · 0 评论 -
huggingface:transformers库(以前称为pytorch-transformers、pytorch-pretrained-bert)
一、transformers、pytorch-transformers、pytorch-pretrained-bert 三者的关系网上的一些介绍是“transformers包又名pytorch-transformers或者pytorch-pretrained-bert”但是根据一些了解,实际上transformers库是最新的版本(以前称为pytorch-transformers和pytorch-pretrained-bert)所以它在前两者的基础上对一些函数与方法进行了改进,包括一些函数可能只有在t原创 2022-05-03 18:23:04 · 1578 阅读 · 0 评论 -
NLP-文本摘要:利用预训练模型进行文本摘要任务【transformers:pipeline、T5、BART、Pegasus】
一、pipeline可以使用pipeline快速实现文本摘要from transformers import pipelinesummarizer = pipeline(task="summarization", model='t5-small')text = """ summarize: (CNN)For the second time during his papacy, Pope Francis has announced a new group of bishops an原创 2022-02-17 21:24:04 · 5063 阅读 · 0 评论 -
huggingface使用(一):AutoTokenizer(通用)、BertTokenizer(基于Bert)
AutoTokenizer是又一层的封装,避免了自己写attention_mask以及token_type_idsimport transformersimport configorigin_tokenizer = transformers.BertTokenizer.from_pretrained(config.pretrained_model_path)auto_tokenizer = transformers.AutoTokenizer.from_pretrained(config.pret原创 2022-05-02 01:24:11 · 45108 阅读 · 0 评论 -
深度学习-Pytorch:项目标准流程【构建、保存、加载神经网络模型;数据集构建器Dataset、数据加载器DataLoader(线性回归案例、手写数字识别案例)】
1、拿到文本,分词,清晰数据(去掉停用词语);2、建立word2index、index2word表3、准备好预训练好的word embedding4、做好DataSet / Dataloader5、建立模型6、配置好参数7、开始训练8、测评9、保存模型一、Pytorch构建基础的模型1. Pytorch构建模型常用API在前一部分,我们自己实现了通过torch的相关方法完成反向传播和参数更新,在pytorch中预设了一些更加灵活简单的对象,让我们来构造模型、定义损失,优化损失等那么接原创 2021-01-15 00:18:23 · 1564 阅读 · 1 评论 -
Colab实用教程(免费的深度学习GPU环境)
一、Colab是什么?Google Colab 是一个免费的云服务并支持免费的 GPU,可以:提高你的 Python 语言的编码技能。使用 Keras、TensorFlow、PyTorch 和 OpenCV 等流行库开发深度学习应用程序。Colab 与其它免费的云服务最重要的区别在于:Colab 提供完全免费的 GPU,对学生党进行AI学习提供便利。Colab 是Google的且服务器在国外如果不能使用Google,推荐使用Kaggle(国内也能访问)👉免费的深度学习GPU环境Colab和原创 2022-04-06 23:46:04 · 25049 阅读 · 2 评论 -
Hydra:Python程序中的配置管理插件
Facebook开源Hydra简化了Python程序中的配置管理Facebook Hydra是一个新的开源框架,旨在通过简化常见功能(如命令行参数处理,配置管理和日志记录)的实现来加快Python应用程序的创建。参考资料:Hydra:从代码访问配置文件的名称Facebook开源Hydra,简化Python程序中的配置管理...原创 2022-03-21 22:45:00 · 890 阅读 · 0 评论 -
fp16训练(混合精度训练)
深度神经网络(DNN)在许多领域都取得了突破,包括图像处理和理解,语言建模,语言翻译,语音处理,游戏策略以及许多其他领域。 为了获得这些卓越结果,DNN的复杂性一直在增加,这反过来又增加了训练这些网络所需的计算资源。 混合精度训练通过使用低精度算术降低了所需的资源,具有以下好处。减少所需的内存量。 半精度浮点格式(FP16)使用16位,而单精度(FP32)使用32位。 降低所需的内存可以训练更大的模型或训练时使用更大的batch size。缩短训练或推理时间。计算的次数或者数据存储的存储十分影响算法的执原创 2022-03-21 23:15:00 · 7021 阅读 · 0 评论 -
Pytorch使用技巧:①使用高级框架;②TensorBoard面板工具;③使用dict格式作为Dataset和Model返回值;④在训练期间通过detect_anomaly查找算术异常
在这篇文章中,我们将介绍以下技巧:用高级框架代替自己写的循环使用另外的度量标准监控训练的进展使用TensorBoard使模型的预测可视化使用Dict作为数据集和模型的返回值检测异常和解决数值的不稳定性一、用高级框架代替自己写的循环PyTorch在从头开始编写训练循环时提供了极佳的灵活性和自由度。理论上,这为编写任何训练逻辑提供了无限可能。在实践中,你很少会为训练CycleGAN、distilling BERT或3D物体检测从头开始实现编写训练循环。从头编写一个完整的训练循环是学习Py原创 2022-03-20 10:25:56 · 853 阅读 · 0 评论 -
Pytorch框架教程
深度学习:Pytorch教程原创 2021-02-27 22:10:37 · 503 阅读 · 0 评论 -
Pytorch 常用语法
人工智能-深度学习-Pytorch:Pytorch 常用语法原创 2021-01-15 00:19:28 · 1079 阅读 · 0 评论 -
Pytorch Lightning框架:使用笔记【LightningModule、LightningDataModule、Trainer、ModelCheckpoint】
pytorch是有缺陷的,例如要用半精度训练、BatchNorm参数同步、单机多卡训练,则要安排一下Apex,Apex安装也是很烦啊,我个人经历是各种报错,安装好了程序还是各种报错,而pl则不同,这些全部都安排,而且只要设置一下参数就可以了。另外,根据我训练的模型,4张卡的训练速度大概提升3倍,训练效果(图像生成)好很多,真香。另外,还有一个特色,就是你的超参数全部保存到模型中,如果你要调巨多参数,那就不需要再对每个训练的模型进行参数标记了,而且恢复模型时可以直接恢复超参数,可以大大减小代码量和工作量,这.原创 2022-03-19 11:24:42 · 20956 阅读 · 6 评论 -
PyTorch数据加载:自定义数据集【Dataset:处理每个原始样本】【DataLoader:每次生成batch_size个样本】【collate_fn:重新设置一个Batch中所有样本的加载格式】
一、自定义DatasetDataset是一个包装类:用来将数据包装为Dataset类,然后传入DataLoader中,我们再使用DataLoader这个类来更加快捷的对数据进行操作。可以通过继承Dataset来将数据集的源文件、规模和其他非必要的功能打包,从而供DataLoader使用。1、“文本分类”任务下使用自定义Datasetclass.txt:所有类别financerealtystockseducationsciencesocietypoliticssportsgam原创 2022-03-12 22:45:00 · 533 阅读 · 0 评论 -
PyTorch学习率衰减策略:指数衰减(ExponentialLR)、固定步长衰减(StepLR)、多步长衰减(MultiStepLR)、余弦退火衰减(CosineAnnealingLR)
梯度下降算法需要我们指定一个学习率作为权重更新步幅的控制因子,常用的学习率有0.01、0.001以及0.0001等,学习率越大则权重更新。一般来说,我们希望在训练初期学习率大一些,使得网络收敛迅速,在训练后期学习率小一些,使得网络更好的收敛到最优解。下图展示了随着迭代的进行动态调整学习率的4种策略曲线:上述4种策略为自己根据资料整理得到的衰减类型:指数衰减、固定步长的衰减、多步长衰、余弦退火衰减。下面逐一介绍其性质,及pytorch对应的使用方式,需要注意学习率衰减策略很大程度上是依赖于经验与具体问题的原创 2022-03-19 19:42:16 · 9183 阅读 · 0 评论 -
Pytorch:Tensor的高阶操作【where(按条件取元素)、gather(查表取元素)、scatter_(查表取元素)】【可并行计算,提高速度】
一、where:逐个元素按条件选取【并行计算,速度快】torch.where(condition,x,y) #condition必须是tensor类型condition的维度和x,y一致,用1和0分别表示该位置的取值import torchcond = torch.tensor([[0.6, 0.7], [0.3, 0.6]])a = torch.tensor([[1., 1.], [1., 1.]])b =原创 2022-03-11 23:15:00 · 11042 阅读 · 0 评论 -
Pytorch:Tensor的统计属性【norm:范数】、【mean、sum】【prod:累乘】【argmin、argmax:最值索引】【keepdim】【kthvalue:第k小的元素、topk】
范数1:所有元素的绝对值的求和范数2:所有元素的绝对值的平方和的开方max():矩阵中的最大值以及相应的indexmin():矩阵中的最小值以及相应的indexmean():平均值prod():累乘sum():求和argmax():返回最大值的indexargmin():返回最小值的indexargmax与argmin不带参数的话,会将矩阵先打平之后再寻找最值的index,这样找到的index一定只是一维的,而不是打平之前的indexargmax(dim=1)来指定进行比较的方向一、n原创 2022-03-11 22:45:00 · 3430 阅读 · 0 评论 -
Pytorch:Tensor基本运算【add/sub/mul/div:加减乘除】【mm/matmul:矩阵相乘】【Pow/Sqrt/rsqrt:次方】【近似:floor...】【裁剪:clamp】
一、基本运算:加减乘除1、乘法1.1 a * b:element-wise 对应元素相乘a * b:要求两个矩阵维度完全一致,即两个矩阵对应元素相乘,输出的维度也和原矩阵维度相同1.2 torch.mul(a, b):element-wise 对应元素相乘torch.mul(a, b):是矩阵a和b对应位相乘,a和b的维度必须相等,比如a的维度是(1, 2),b的维度是(1, 2),返回的仍是(1, 2)的矩阵1.3 torch.mm(a,b):只能用于二维矩阵torch.mm(a,b),要求原创 2022-03-11 23:15:00 · 2148 阅读 · 0 评论 -
Pytorch:Tensor之间的拼接与拆分【拼接:cat、stack;拆分:split、chunk】
一、cat函数二、stack函数三、split函数四、chunk函数参考资料:Pytorch:Tensor的合并与分割原创 2022-03-11 23:15:00 · 4892 阅读 · 0 评论 -
Pytorch中torch.Tensor.scatter_用法
首先看一下这个函数的接口,需要三个输入:1)维度dim 2)索引数组index 3)原数组src,为了方便理解,我们后文把src换成input表示。最终的输出是新的output数组。下面依次介绍:1)维度dim:整数,可以是0,1,2,3…2)索引数组index:索引数组是一个tensor,其中的数据类型是整数,表示位置3)原数组input:也是一个tensor,其中的数据类型任意先说一下这个函数是干嘛的,在我看来,这个scatter函数就是把input数组中的数据进行重新分配。index中表示了原创 2021-09-12 22:26:10 · 636 阅读 · 0 评论 -
PyTorch中的model.zero_grad() 与 optimizer.zero_grad()
在PyTorch中,对模型参数的梯度置0时通常使用两种方式:model.zero_grad()和optimizer.zero_grad()。二者在训练代码都很常见,那么二者的区别在哪里呢?一、model.zero_grad()model.zero_grad()的作用是将所有模型参数的梯度置为0。其源码如下:for p in self.parameters(): if p.grad is not None: p.grad.detach_() p.grad.zero原创 2021-09-26 23:36:25 · 8040 阅读 · 1 评论 -
Pytorch:torch.Tensor的4种乘法【*==torch.mul(元素对应相乘)、torch.mm(满足矩阵结构的乘法)、torch.matmul(最后2个维度进行torch.mm操作)】
一、点乘(*)==torch.mul【具备broadcast性质】a与b做*乘法,原则是如果a与b的size不同,则以某种方式将a或b进行复制,使得复制后的a和b的size相同,然后再将a和b做element-wise的乘法。点积是broadcast的。broadcast是torch的一个概念,简单理解就是在一定的规则下允许高维Tensor和低维Tensor之间的运算。1、* 标量Tensor与标量k做*乘法的结果是Tensor的每个元素乘以k(相当于把k复制成与lhs大小相同,元素全为k的Tens原创 2021-09-27 22:20:45 · 5427 阅读 · 0 评论