
Pytorch学习笔记
文章平均质量分 60
总结深度学习Pytorch框架的常用函数、结合实例分析和理解Pytorch深度学习框架
纳兰小熊
Notes do not lie! 个人主页:https://liujf69.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Pytorch笔记--RuntimeError: NCCL communicator was aborted on rank 3.
从默认的30min,延长至其他时间:torch.distributed.init_process_group(backend='nccl', init_method='env://',超时错误,原因可能是CPU线程忙碌(服务器CPU资源不够),导致数据长时间加载不了,从而出现了超时bug。例如减少数据加载的线程(降低num_workers),避免由于CPU线程不足导致的超时问题。原创 2024-10-26 18:58:18 · 1521 阅读 · 0 评论 -
Pytorch复习笔记--pytorch常见交叉熵函数的实现
计算公式如下:Loss(x,class)=−log(ex[class]∑iex[i])=−x[class]+log(∑iex[i])Loss(x, class) = -log(\frac{e^{x[class]}}{\sum_{i}e^{x[i]}}) = -x[class] + log(\sum_{i}e^{x[i]})Loss(x,class)=−log(∑iex[i]ex[class])=−x[class]+log(i∑ex[i])代码实现如下:2. nn.BCELoss()计算公式如下原创 2024-09-20 15:37:29 · 811 阅读 · 0 评论 -
Pytorch复习笔记--分布式训练代码样例
【代码】Pytorch复习笔记--分布式训练代码样例。原创 2024-04-15 20:09:34 · 349 阅读 · 0 评论 -
Conda笔记--移动Conda环境后pip使用异常的解决
由于各种原因,需要将Anaconda转变为Minicoda,为了保留之前安装的所有环境,直接将anaconda3/envs的所有环境拷贝到Miniconda/envs中,但在使用移动后环境时会出现pip的错误:bad interpreter: No such file or directory。报错原因:移动环境后,对应pip的路径没有进行相应修改。解决方法:修改对应环境bin/pip的路径。原创 2024-03-04 14:58:48 · 1088 阅读 · 0 评论 -
Pytorch学习笔记--torch.autograd.Function的使用
构建不可连续求导的神经网络时,可以继承 torch.autograd.Function 类,此时需要重写 forward 函数和 backward 函数,其中 backward 函数的作用是返回求导结果。构建可连续求导的神经网络时,往往会继承 nn.Module 类,此时只需重写 __init__ 和 forward 函数即可,pytorch会自动求导;2-2--linear函数实现。2-1--e^x函数实现。原创 2023-10-31 00:43:08 · 1122 阅读 · 0 评论 -
模型部署笔记--Pytorch-FX量化
在对原始模型model调用prepare_fx()后得到prepare_model,一般需要对模型进行校准,校准后再调用convert_fx()进行模型的量化。Pytorch在torch.quantization.quantize_fx中提供了两个API,即prepare_fx和convert_fx。convert_fx的作用是根据scale和zero_point来将模型进行量化。3-2--prepare_dataloader函数。1--Pytorch-FX量化。3-3--训练和测试函数。原创 2023-10-20 17:49:50 · 2502 阅读 · 4 评论 -
Pytorch复习笔记--nn.Conv2d()和nn.Conv3d()的计算公式
nn.Conv2d( ) 和 nn.Conv3d() 分别表示二维卷积和三维卷积;二维卷积常用于处理单帧图片来提取高维特征;三维卷积则常用于处理视频,从多帧图像中提取高维特征;三维卷积可追溯于论文。原创 2023-03-26 20:50:27 · 2045 阅读 · 0 评论 -
Pytorch学习笔记--多GPU并行训练时nn.ParameterList()为空的问题
最近在复现一篇 Paper,其开源代码使用了 nn.DataParallel() 进行多 GPU 并行训练,同时使用 nn.ParameterList() 来构建参数列表;① 如前言所述,这是由于多 GPU 并行训练导致的问题,一个简单的方法就是使用单个GPU进行训练,但这也可能会出现显存不足的问题;② 博主针对这个问题的解决方法:不使用 nn.ParameterList() 列表的方式存储参数(可能优点傻瓜);原创 2023-03-20 18:59:10 · 1427 阅读 · 1 评论 -
深度学习笔记--修改替换Pytorch权重文件的Key值
最近复现一篇 Paper,需要使用预训练的模型,但预训练模型和自定义模型的 key 值不匹配,导致无法顺利加载预训练权重文件;原创 2023-03-20 11:58:09 · 2326 阅读 · 0 评论 -
Pytorch复习笔记--Conv2d和Linear的参数量和显存占用量比较
一般情况下,同维度操作的 nn.Conv2d() 会比 nn.Linear() 的显存占用量要高,即使两者的参数量一致;上面代码中,nn.Conv2d() 的参数量为 3 * 64 * 1 * 1 + 64 = 256;比如上面代码中,通过 nvidia-smi 发现,第一个模型会比第二个模型的显存占用量要高;上面代码中,nn.Conv2d() 的参数量为 3 * 64 + 64 = 256;out_c 表示输出通道维度;1--nn.Conv2d()参数量的计算。1--nn.Conv2d()参数量的计算。原创 2023-02-26 21:17:21 · 3264 阅读 · 1 评论 -
Pytorch复习笔记--KL散度的计算
一般情况下,Q 和 P 都需要经过 softmax() 操作以保证概率和 1,Q还需要进行 log() 操作;torch.nn.KLDivLoss() 的第一个参数为预测概率分布 Q,第二个参数为真实概率分布 P;KL 散度可用于衡量两个概率分布之间的相似性,两者越相似,其 KL 散度越小;KL 散度可用于多模态对比学习当中,用于比较两个模态之间的相似性;P 表示真实概率分布,Q表示预测概率分布;3--Pytorch实现。原创 2023-02-24 22:08:27 · 1072 阅读 · 0 评论 -
Pytorch复习笔记--torch.nn.functional.interpolate()和cv2.resize()的使用与比较
Pytorch 提供了一个类似于 cv2.resize() 的采样函数,即 torch.nn.functional.interpolate(),支持最近邻插值(nearest)和双线性插值(bilinear)等功能,通过设置合理的插值方式可以取得与 cv2.resize() 函数完全一样的效果。上面两个测试代码的结果表明,在采取相同插值方式的前提下,torch.nn.functional.interpolate() 和 cv2.resize() 两个方法的功能是完全等价的,处理后的数据相同;原创 2023-02-14 16:15:26 · 3706 阅读 · 0 评论 -
深度学习笔记--修改、增加和删除预训练模型的特定层
从上面代码的执行结果可知:模型在修改前和修改后,被修改层的参数不同,未修改层的参数保持相同;上述代码结果表明:被修改的层,其参数状态变为可学习,未修改层的参数仍保持原状态;这里以修改 VGG16 最后一层为例,将输出类别更改为120类;简单的实现方式是:使用 del 指令删除指定的网络层;基于 Pytorch,以 VGG16 模型为例;在原模型的基础上,在特定位置新增新的网络模块;首先固定预训练模型的权重,再对特定层进行修改。2--初始化 VGG16 模型。6--固定预训练模型的权重。原创 2023-02-11 20:55:56 · 3331 阅读 · 0 评论 -
Pytorch复习笔记--导出Onnx模型为动态输入和静态输入
当使用 Pytorch 将网络导出为 Onnx 模型格式时,可以导出为动态输入和静态输入两种方式。动态输入即模型输入数据的部分维度是动态的,可以由用户在使用模型时自主设定;静态输入即模型输入数据的维度是静态的,不能够改变,当用户使用模型时只能输入指定维度的数据进行推理。在以下代码中,定义了一个网络,并使用动态导出和静态导出两种方式,将网络导出为 Onnx 模型格式。模型,其输出维度也是动态的,并且为对应关系,则表明导出的。显然,动态输入的通用性比静态输入更强。1--动态输入和静态输入。,即默认为静态输入。原创 2023-01-11 01:00:10 · 11506 阅读 · 1 评论 -
pytorch复习笔记--nn.Embedding()的用法
nn.Embedding()产生一个权重矩阵weight,其shape为(num_embeddings, embedding_dim),表示生成num_embeddings个具有embedding_dim大小的嵌入向量;输入input的形状shape为(batch_size, Seq_len),batch_size表示样本数(NLP句子数),Seq_len表示序列的长度(每个句子单词个数);nn.Embedding(input)的输出output具有(batch_size,Seq_len,embedding原创 2022-12-06 13:33:11 · 4873 阅读 · 1 评论 -
Pytorch学习笔记--SEResNet50搭建
1--ResNet50介绍上图为ResNet50的整体结构,除Input和Output环节外,还包含5个环节:Stem Block环节、Stage1-4环节和Subsequent Processing环节。1-1--Stem Block环节Stem Block环节的Input是一个三通道(C = 3, W= 224, H = 224)的图像,首先经过卷积操作(kernel_size = 7 x7,stride = 2,卷积核个数 = 64 )、归一化操作、RELU操作,再经过最...原创 2021-11-17 14:58:02 · 10724 阅读 · 13 评论 -
Pytorch学习笔记-Advanced_CNN(Using Inception_Module)实现Mnist数据集分类-(注释及结果)
程序代码import torchfrom torchvision import transformsfrom torchvision import datasetsfrom torch.utils.data import DataLoaderimport torch.nn.functional as Fimport torch.optim as optimbatch_size = 64transform = transforms.Compose([ transforms.ToT原创 2021-10-21 12:35:16 · 295 阅读 · 0 评论 -
Pytorch框架练习(基于Kaggle Titanic竞赛)
Kaggle_Titanic竞赛网址1 数据预处理## 训练集和测试集数据预处理# 导入第三方库import numpy as npimport pandas as pdimport math# 数据预处理函数def Data_Processing(Input_Dataset, Dataset_Type): Dataset = pd.read_csv(Input_Dataset) # 导入数据集 print(Dataset.describe()) # 数据集描述原创 2021-11-15 12:30:58 · 1310 阅读 · 0 评论 -
Pytorch学习笔记--常用函数torch.randn()、F.max_pool2d()、F.avg_pool2d()总结1
。原创 2021-10-16 21:00:50 · 3934 阅读 · 0 评论 -
pytorch复习笔记--python类中getitem的用法
当一个python类中定义了__getitem__函数,则其。3-- 结合pytorch封装并读取batch数据。1-- 类中__getitem__的作用。原创 2022-07-04 16:57:29 · 6260 阅读 · 0 评论 -
pytorch复习笔记--loss.backward()、optimizer.step()和optimizer.zero_grad()的用法
通过②和③的对比,能看出 optimizer.zero_grad() 的作用是清除之前累积的梯度值。,lr 表示学习率 learning rate,减号表示沿着梯度的反方向进行更新;这一步会计算所有变量x的梯度值。3--optimizer.zero_grad()的用法。,一般在loss.backward()前使用,即清除。2--optimizer.step()的用法。作用:清除优化器关于所有参数x的累计梯度值。1--loss.backward()的用法。指的是上一个epoch累积的梯度。原创 2022-11-30 20:13:32 · 9114 阅读 · 2 评论 -
Pytorch学习笔记--常用函数torch.einsum()总结5
torch.einsum()函数有。原创 2022-01-29 12:34:10 · 2515 阅读 · 0 评论 -
Pytorch学习笔记--常用函数nn.init.normal()、nn.init.constant_()、torch.from_numpy()、torch.index_select()总结4
torch.from_numpy(numpy_array)基于输入numpy数组(numpy_array)返回一个tensor张量(数据不变,类型转换),作用是转换numpy_array -> tensor。torch.nn.init.constant_(tensor, val)基于输入参数(val)初始化输入张量tensor,即tensor的值均初始化为val。torch.nn.init.normal(tensor, mean, std)基于输入参数(均值mean和标准差std)输入张量tensor;原创 2021-12-02 21:40:46 · 3335 阅读 · 0 评论 -
Pytorch学习笔记--常用函数torch.optim.SGD()总结3
不同的初始化参数往往会导致不同的结果,当获得较好结果时我们通常希望这个结果是可以复现的。在pytorch中,通过设置随机数种子确保每次代码运行时初始化操作都相同,从而在相同的算法或神经网络程序中,确保运行的结果也相同。2--torch.manual_seed()函数和torch.cuda.manual_seed()函数。设置种子,确保每次实验生成的随机数固定,即初始化相同;J(θ)表示损失函数;了解L2正则化的作用,即如何避免过拟合,权重衰减通过。m表示冲量因子,l表示学习率;理解。原创 2021-11-22 20:17:29 · 3586 阅读 · 0 评论 -
Pytorch学习笔记-FCNN实现Mnist数据集分类
from torchvision import transformstransform = transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307, ), (0.3081, ))])transforms.ToTensor()的作用是:将shape为(H, W, C)的nump.ndarray或img转为shape为(C, H, W)的tensor,并将每一个数值归一化到[0,1](除以25.原创 2021-10-12 15:33:19 · 1188 阅读 · 0 评论 -
Pytorch学习笔记--Bilibili刘二大人Pytorch教学代码汇总(注释及运行结果)
Part103Gradient_Descent1# 输入训练数据x_data = [1.0, 2.0, 3.0]y_data = [2.0, 4.0, 6.0]# 设置初始参数w = 1.0 # 初始权重alpha = 0.005 #初始梯度下降法的学习率# 定义计算y_hat的函数def forward(x): return x * w# 定义计算平均损失的函数def cost(xs, ys): sum_cost = 0 for x, y in z.原创 2021-10-14 11:42:32 · 1656 阅读 · 0 评论 -
Pytorch学习笔记-刘二老师RNN高级篇-代码注释及结果
Pycharm代码:# 导入第三方库from torch.utils.data import Dataset, DataLoaderfrom torch.nn.utils.rnn import pack_padded_sequenceimport torchimport gzipimport csvimport matplotlib.pyplot as pltimport numpy as npimport timeimport math# 参数设置HIDDEN_SIZE =原创 2021-10-19 14:03:42 · 1153 阅读 · 1 评论 -
Pytorch学习笔记--常用函数torch.nn.Sequential( )、torch.flatten()、Model.train()、Model.eval()总结2
如果模型中有BN层(Batch Normalization)和Dropout,需要在训练时添加model.train()。如果模型中有BN层(Batch Normalization)和Dropout,在测试时添加model.eval()。训练完train样本后,生成的模型model要用来测试样本。在model(test)之前,需要加上model.eval(),否则的话,,即测试过程中要保证BN层的均值和方差不变。有输入数据,即使不训练,它也会改变权值。对于Dropout,model.train()是随机。原创 2021-11-16 18:25:16 · 1584 阅读 · 0 评论