Pytorch
Pytorch
小鹏AI
深度学习算法工程师,主攻深度学习模型优化部署,辅攻图形图像算法调优。
中级软件设计师、英伟达Jeston Nano专家认证。
展开
-
解决No module named ’torch._six‘问题
最近升级的pytorch的版本,升级到了2.0。本人也尝试了将pytorch1.10版本下的。文件拷贝到pytorch2.0下,无果。,pytorch2.0 没有。原创 2023-05-30 14:45:59 · 28224 阅读 · 13 评论 -
Pytorch 分布式训练中DP和DDP的原理和用法
在使用 distributed 包的任何其他函数之前,需要使用 init_process_group 初始化进程组,同时初始化 distributed 包。ring-all-reduce模式没有server节点,worker与worker之间的通信构成一个环。如果是单机多卡,由于一个进程内就只有一个 GPU,所以 rank 也就表示第几块 GPU。因为充当server的GPU需要一定的显存用来保存worker节点计算出的局部梯度。初始化模型,从server节点拉取最新的模型参数(pull),原创 2022-11-14 16:02:16 · 1994 阅读 · 0 评论 -
LibTorch 使用torch::from_blob出现的问题
LibTorch 使用torch::from_blob出现的问题原创 2022-11-10 15:09:05 · 1262 阅读 · 0 评论 -
Pytorch转Onnx转TensorRT
首先使用pytorch框架训练深度学习模型,然后使用某些工具将训练好的pytorch模型转为onnx,最后转为tensorRT。目前模型部署的常见做法是pytorch->onnx->tensorRT。找到TensorRT-8.5.1.7文件(这是我自己的版本号)当前文件下会出现resnet18.trt 说明转换成功。将onnx模型转成TensorRT模型。将pytorch模型转成onnx模型。能够正常打印,即onnx模型没有问题。检查onnx模型是否能推理。获取pytorch模型。将onnx文件移动到。原创 2022-11-14 17:21:30 · 1071 阅读 · 1 评论 -
Pytorch模型训练到哪里找预训练模型?
使用预训练模型,我们有两种方式加载torchvison中的模型,然后定义 pretrained=True采用pretrainedmodels模块torchvision方式from torchvision.models.resnet import resnet18net = resnet18(pretrained=True)采用pretrainedmodels模块安装pretrainedmodels模块pip install pretrainedmodels安装好后,我们可以查原创 2021-12-27 11:35:30 · 2287 阅读 · 0 评论 -
pytorch 调用lstm
moduleimport torchimport torch.nn as nnclass M(nn.Module): def __init__(self): super().__init__() self.lstm = nn.LSTM(3, 3, 1) # input's dim = 3, hidden'dim = 3, num of lstm = 1 def forward(self, x): out = self.lstm(*x) return outdatadata原创 2021-10-22 10:12:03 · 1339 阅读 · 0 评论 -
Pytorch中transforms的用法整理
导入transformsfrom torchvision import transforms将图片转为Tensortransforms.ToTensor()Normalize标准化mean = [0.5, 0.5, 0.5]std = [0.5, 0.5, 0.5]transforms.Normalize(mean, std)尺度转换transforms.Resize((512, 512))随机裁剪transforms.RandomCrop(512, 512)组合原创 2021-12-15 20:20:00 · 1750 阅读 · 0 评论 -
pytorch中ReLU6的inplace参数到底是个啥????
测试代码import torchimport torch.nn as nnrelu1 = nn.ReLU6(True)relu2 = nn.ReLU6(False)inputs1 = torch.tensor([50,-2,6,5,3])inputs2 = torch.tensor([50,-2,6,5,3])x1 = relu1(inputs1)x2 = relu2(inputs2)打印结果 x1 = tensor([6, 0, 6, 5, 3]), x2 = tensor(原创 2021-02-19 09:47:56 · 1207 阅读 · 0 评论 -
Pytorch 加载预训练模型的两种方式:torchvision和torch.hub
查看TorchVision中所包含的预训练模型。查看Hub中所包含的预训练模型。原创 2022-11-07 14:31:59 · 1375 阅读 · 0 评论 -
Pytorch 修改hook源码 获取Per-Layer输出参数(带layer name)
今天在用hook获取每层输出参数的时候,调用pytorch中的API,发现没有好的方法能够将每层的层面一对一的打印处理为此修改了一下hook的源码import torchimport torch.utils.hooks as hooksdef get_output_param(module, datasets): output_param = {} def hook(module, input, output): name = list(module._forward_hooks.key原创 2022-01-14 15:26:53 · 705 阅读 · 0 评论 -
PyTorch ReLU6网络层
对于relu6, 采用:y = min((max(0, x)), 6)定义,即在relu的基础上,限定了特征值的最大值为6,即为6个bernoulli分布。对于relu,采用:y = max(0, x)定义, 即 特征值小于0的即为0, 特征值大于0的不变,相当于x个bernoulli分布。因此,对于一些移动端设备,我们为了提升网络的在移动端(npu之类的),我们采用定点进行推理(限制为6,主要是在移动端int8的低精度的时候,为了也能让模型有很好的特征提取。我们再谈谈MobileNets,原创 2022-11-03 11:19:14 · 895 阅读 · 0 评论 -
Pytorch中BatchNorm2d权重的加载
有关Pytorch中BatchNorm2d权重加载的问题>>> import torch.nn as nn>>> bn = nn.BatchNorm2d(3)>>> list(bn.parameters())[Parameter containing: tensor([1., 1., 1.], requires_grad=True), Parameter containing: tensor([0., 0., 0.], requires_gra原创 2021-10-08 11:24:15 · 659 阅读 · 0 评论 -
聊聊Pytorch2.0的新特性
看提速,提升没有超一倍,相比TensorRT(TensorRT优化的话,一般都是2-6倍左右,当然要算FP16)除了r50,我也试了下dla结构的模型,其中with_dcn是带了自定义cuda实现的pytorch-dcn算子。Pytorch2.0的版本,可能Dynamo会成为主要的模型的parser替代。之后Pytorch转trt、转tvm、转乱七八槽一切也会慢慢往这个上头靠。优化级别还是差些的,性能肯定不是极致,更不如纯手工优化后的。一行代码就能优化你的模型,优化后的模型和往常使用方式一样。原创 2023-01-12 16:44:27 · 1357 阅读 · 1 评论