![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytorch
文章平均质量分 64
Xavier Jiezou
Python开发者 | 网络爬虫 | 图像处理 | 计算机视觉 | 人工智能 | 深度学习 | 微信公众号【干货共享菌】 | 微信号【wxhghgxj】 | 邮箱【878972272@qq.com】
展开
-
【PyTorch】模型 FPS 测试 Benchmark(参考 MMDetection 实现)
深度学习中,模型的速度和性能具有同等重要的地位,因为这直接关系到模型是否能在实际生产应用中落地。在计算机视觉领域,FPS(模型每秒能够处理的图像帧数)是一个重要且直观地反映模型处理速度的指标,基本在所有图像处理类任务中都有用到,例如图像超分,图像修复和目标检测等等。本文从 MMDetection 中抽取了 FPS Benchmark,并做了微小的修改,以便快速测试。原创 2022-12-07 15:41:42 · 6627 阅读 · 3 评论 -
【PyTorch】切记:GeForce RTX 3090 显卡仅支持 CUDA 11 以上的版本!
得知 PyTorch 1.7.0 开始才支持 CUDA 11,所以要使用 GPU 训练的话,必须安装 PyTorch 1.7.0 及以上版本。前不久给新来的 2台 8 张 GeForce RTX 3090 服务器配置了深度学习环境(配置教程参考。原来是 GeForce RTX 3090 显卡仅支持 CUDA 11 以上的版本!文章),最近在使用的时候却遇到了各种问题。原创 2022-08-23 21:57:19 · 10351 阅读 · 5 评论 -
【PyTorch】使用交叉熵作为语义分割损失函数遇到的坑
引言图像语义分割其实就是像素级别的图像分类。因此,我们可以选择交叉熵作为我们的损失函数。但使用交叉熵的时候,有以下几点是需要注意的。提示输入给模型的数据维度应该是 4 维的:(batch_size,C,H,W),语义分割标签维度应该是 3 维的:(batch_size,H,W);模型预测输出的通道数应该等于语义分割的类别数;语义分割标签图像的像素值应该在 [0,类别数-1] 范围内。如果不在,读进来之后必须进行转换。示例假设语义分割的类别标签有 5 种,原图尺寸为 512x512,数据加载原创 2022-05-31 21:43:17 · 1353 阅读 · 0 评论 -
Warning: find_unused_parameters=True was specified in DDP constructor……
项目场景使用 Pytorch Lightning 训练模型。问题描述Warning: find_unused_parameters=True was specified in DDP constructor, but did not find any unused parameters. This flag results in an extra traversal of the autograd graph every iteration, which can adversely affect pe原创 2022-05-27 00:14:33 · 7366 阅读 · 0 评论 -
记录 PyTorch Lightning 的一个坑
项目场景PyTorch Lightning 对 PyTorch 做了进一步的封装,并继承了日志记录,分布式训练等工具,让我们能够把研究核心放在模型改进上而不是工程代码的编写。近期使用的使用,发现一个小问题,在此记录一下。问题描述模型训练的时候很正常,但验证的时候报错:TypeError: validation_step() takes 3 positional arguments but 4 were given并且,测试的时候也会遇到类似的问题。原因分析原来是我重写 LightningMo原创 2022-05-21 09:55:49 · 943 阅读 · 0 评论 -
【PyTorch】基于 LSTM 的手写数字识别(MNIST)
引言基于 PyTorch 实现的 LSTM 模型在 MNIST 数据集上的手写数字识别。用法代码托管于 GitHub:https://github.com/XavierJiezou/pytorch-lstm-mnistgit clone https://github.com/XavierJiezou/pytorch-lstm-mnist.gitcd pytorch-lstm-mnistpip install -r requirements.txtpython ./code/train_on原创 2022-01-29 17:03:40 · 2700 阅读 · 0 评论 -
【PyTorch】打印模型结构、输出维度和参数信息(torchsummary)
引言安装pip install torchsummary用法示例from torchvision import modelsfrom torchsummary import summaryresnet18 = models.resnet18().cpu().cuda() # 不加.cuda()会报错summary(resnet18, (3, 224, 224))输出-------------------------------------------------------原创 2021-12-20 12:09:24 · 16113 阅读 · 1 评论 -
【PyTorch】下载的预训练模型的保存位置(Windows)
保存位置C:\Users\xxx\.cache\torch\hub\checkpoints\xxx替换为你的用户名。项目场景迁移学习的时候一般需要用到预训练模型,那么预训练模型的保存位置是在哪呢?示例代码from torchvision import modelsmodel = models.vgg19(pretrained=True)这里以VGG19为例,只要把pretrained参数设置为True就会下载模型,而模型的保存位置是在C盘用户目录下的\.cache\torch\hub\c原创 2021-07-15 15:23:44 · 11587 阅读 · 3 评论 -
【PyTorch】生成一张随机噪声图片
from torchvision.transforms import ToPILImageimport torchdef random_noise(nc, width, height): '''Generator a random noise image from tensor. If nc is 1, the Grayscale image will be created. If nc is 3, the RGB image will be generated.原创 2021-05-13 00:09:40 · 3437 阅读 · 0 评论 -
【pytorch】数据类型及转换方式
写在前面张量是一个包含单一数据类型元素的多维矩阵,pytorch中共定义了10种张量的数据类型。数据类型Data typedtypeCPU tensorGPU tensor32-bit floating pointtorch.float32 or torch.floattorch.FloatTensortorch.cuda.FloatTensor64-bit floating pointtorch.float64 or torch.doubletorch.Dou原创 2021-04-12 14:53:11 · 6022 阅读 · 1 评论 -
【pytorch】使用torch.utils.data.random_split()划分数据集
写在前面不用自己写划分数据集的函数,pytorch已经给我们封装好了,那就是torch.utils.data.random_split()。函数详解torch.utils.data.random_split(dataset, lengths, generator=<torch._C.Generator object>)描述随机将一个数据集分割成给定长度的不重叠的新数据集。可选择固定发生器以获得可重复的结果(效果同设置随机种子)。参数dataset (Dataset) – 要划原创 2021-04-05 17:48:47 · 34600 阅读 · 13 评论 -
【pytorch】torch.cat()与torch.stack()的区别
torch.cat()torch.cat(tensors, dim=0, *, out=None) → Tensor描述在给定维度连接给定的张量序列。所有张量必须要么具有相同的形状(要连接的维度除外),要么为空。参数tensors (张量序列) – 相同类型张量的任何python序列。提供的非空张量必须具有相同的形状,要拼接的维度除外。dim (int, 可选) – 张量连接的维度;默认是0。示例>>> import torch>>> a = t原创 2021-04-04 22:05:36 · 314 阅读 · 0 评论 -
【PyTorch】学习率调整策略汇总
写在前面目前pytorch中的学习率调整策略分为两种:直接修改 ;调用lr_scheduler中封装好的类。直接修改修改前import torch.nn as nnfrom torch.optim import Adamimport matplotlib.pyplot as pltfrom torch.optim import lr_schedulerclass Net(nn.Module): def __init__(self): super().__i原创 2021-04-04 18:29:31 · 900 阅读 · 0 评论 -
【pytorch】unet网络结构分析及代码实现
原始论文U-Net: Convolutional Networks for Biomedical Image Segmentation:点击查看网络结构注意事项论文中进行卷积操作的时候没有用padding,导致卷积后图片尺寸变小。推荐可能是当年padding操作并不流行。我们这里复现的时候用了padding,保持卷积后图片尺寸不变。输入给网络是什么尺寸的图像,那么输出也将是一样的尺寸。比如输入64 x 64的图像,那么输出也将是64 x 64。论文中并没有用到Batch Normaliz原创 2021-03-28 12:56:45 · 7403 阅读 · 9 评论 -
【pytorch】基于mnist数据集的cgan手写数字生成实现
文章目录0. 特别提示1. 学习目标2. 环境配置2.1. Python2.2. Pytorch2.3. Jupyter notebook2.4. Matplotlib3. 具体实现3.1. 导入模块3.2. 设置随机种子3.3. 超参数配置3.4. 数据集3.5. 数据加载器3.6. 选择训练设备3.7. 训练数据可视化3.8. 权重初始化3.9. 生成器3.10. 判别器3.11. 优化器和损失函数3.12. 开始训练3.13. 训练过程中的损失变化3.14. 训练过程中的D(x)和D(G(z))变..原创 2021-03-22 11:49:27 · 6291 阅读 · 24 评论 -
【pytorch】使用scatter_()进行one-hot编码
示例代码>>> import torch>>> label = torch.arange(10).view(-1, 1)>>> labeltensor([[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]])>>> label_onehot原创 2021-03-17 12:41:29 · 776 阅读 · 0 评论 -
【pytorch】基于mnist数据集的dcgan手写数字生成实现
导入模块原创 2021-01-27 12:16:28 · 4918 阅读 · 11 评论 -
【pytorch】一文读懂tensor张量(官方教程翻译)
文章目录1. 简介2. 张量初始化2.1. 直接从数据中创建2.2. 从NumPy的array创建2.3. 从另一个张量创建2.4. 用随机或常量值初始化3. 张量属性4. 张量运算4.1. 标准的类似numpy的索引和切片:4.2. 张量连接4.3. 张量乘法4.3.1. 矩阵数乘4.3.2. 哈达马积4.3.3. 矩阵乘法5. In-place操作6. 与NumPy桥接6.1. Tensor转NumPy array6.2. NumPy array转Tensor7. 原文1. 简介Tensor(张量翻译 2021-01-06 14:44:05 · 882 阅读 · 0 评论 -
【pytorch】torch.manual_seed()用法详解
描述设置CPU生成随机数的种子,方便下次复现实验结果。语法torch.manual_seed(seed) → torch._C.Generator参数seed (int) – CPU生成随机数的种子。取值范围为[-0x8000000000000000, 0xffffffffffffffff],十进制是[-9223372036854775808, 18446744073709551615],超出该范围将引发RuntimeError报错。返回返回一个torch.Generator对象。示例原创 2021-01-04 15:56:36 · 43167 阅读 · 12 评论 -
【pytorch】DCGAN实战教程(官方教程翻译)
简介本教程将通过一个具体的实例来讲解DCGANs。在向其展示许多真实名人的照片后,我们将训练一个生成对抗网络(GAN)来产生新的名人。此处的大部分代码都来自pytorch/examples中的dcgan实现,本文将对实现方式进行详细的讲解,并阐明该模型如何以及为什么起作用。你之前并不了解GAN也没关系,但对于新手的话可能需要花费一些时间来理解幕后的实际情况。同样,如果有一两个GPU的话,将会帮助你节省训练时间。让我们开始吧。生成对抗网络什么是生成对抗网络(GAN)GANs是深度学习模型用于捕获训练数翻译 2020-12-18 23:52:16 · 5735 阅读 · 15 评论 -
【pytorch】使用迁移学习(resnet18)训练mnist数据集
预备知识自己搭建cnn模型训练mnist(不使用迁移学习)https://blog.csdn.net/qq_42951560/article/details/109565625pytorch官方的迁移学习教程(蚂蚁、蜜蜂分类)https://blog.csdn.net/qq_42951560/article/details/109950786学习目标今天我们尝试在pytorch中使用迁移学习来训练mnist数据集。如何迁移预训练模型迁移学习需要选择一个预训练模型,我们这个任原创 2020-12-02 21:57:55 · 6995 阅读 · 4 评论 -
【PyTorch】迁移学习教程(计算机视觉应用实例)
写在前面本教程中,你将学习用迁移学习来训练一个应用于图像分类的卷积神经网络。向了解更多有关迁移学习的知识可以点击这里查看。使用情况实际上,很少有人从头开始训练整个卷积网络(使用随机初始化),因为拥有足够大小的数据集相对很少。 相反,我们通常在非常大的数据集上对ConvNet进行预训练(例如ImageNet,其中包含1000个类别共计120万张图像),然后将ConvNet用作初始化或固定特征提取器以完成感兴趣的任务。实现方法实现迁移学习主要有两种常见的方法:Convnet微调:代替随机初始化,我原创 2020-11-28 17:25:27 · 8103 阅读 · 16 评论 -
【pytorch】制作网格图像,直接将tensor格式的图像保存到本地
写到前面这是torchvision.utils模块里面的两个方法,因为比较常用,所以pytorch直接封装好了。制作网格网络图像一般用于训练数据或测试数据的可视化。torchvision.utils.make_grid(tensor: Union[torch.Tensor, List[torch.Tensor]], nrow: int = 8, padding: int = 2, normalize: bool = False, range: Optional[Tuple[int, int]] =原创 2020-11-22 23:35:49 · 2067 阅读 · 0 评论 -
【pytorch】带batch的tensor类型图像显示
项目场景pytorch训练时我们一般把数据集放到数据加载器里,然后分批拿出来训练。训练前我们一般还要看一下训练数据长啥样,也就是训练数据集可视化。那么如何显示dataloader里面带batch的tensor类型的图像呢?显示图像绘图最常用的库就是matplotlib:pip install matplotlib显示图像会用到matplotlib.pyplot.imshow方法。查阅官方文档可知,该方法接收的图像的通道数要放到后面:数据加载器中数据的维度是[B, C, H, W],我们每次只原创 2020-11-22 22:24:37 · 3131 阅读 · 0 评论 -
解决pytorch报错BrokenPipeError: [Errno 32] Broken pipe
问题描述BrokenPipeError: [Errno 32] Broken pipe原因分析Windows使用DataLoader时设置num_workers的问题。解决方案两种解决方案,任选一种即可!方案1把代码放到if __name__ == "__main__":下运行if __name__ == "__main__": train_dataloader = DataLoader( dataset=dataset, batch_size=32原创 2020-11-22 15:49:21 · 16760 阅读 · 0 评论 -
【pytorch】常用图像处理与数据增强方法合集(torchvision.transforms)
写在前面机器学习中难免会遇到数据集格式不符合训练规范,或者样本量很少的情况。我们一般采用图像处理或数据增强的方法来解决这一问题,幸运的是,pytorch的torchvision包给我们封装好了用于图像数据变换的模块transforms,本文是对该模块中常用函数的讲解。注意事项Deterministic or random transformations applied on the batch of Tensor Images identically transform all the images原创 2020-11-20 23:07:29 · 19536 阅读 · 14 评论 -
【python】手写数字识别模型api接口调用
写在前面我用pytorch搭建了一个cnn网络,然后部署到了线上,并提供一个可供调用的api接口。调用文档请求地址http://pytorch-cnn-mnist.herokuapp.com/predict/请求方法post请求参数字段类型描述data字符串图片的base64编码(包含头部信息)成功响应{ "confidence": "100.00%", "prediction": 3}请求示例...原创 2020-11-16 16:27:59 · 1123 阅读 · 1 评论 -
【PyTorch】基于CNN的手写数字识别(在MNIST数据集上训练)
项目场景简单的学习pytorch、自动求导和神经网络的知识后,我们来练习使用mnist手写数字集训练一个cnn模型。导入模块import torchimport torch.nn as nnimport matplotlib.pyplot as pltfrom torch.utils.data import DataLoaderfrom torchvision import datasets, transformsmatplotlib库用于绘图,如果没有请通过pip命令安装:pip in原创 2020-11-09 00:16:29 · 9317 阅读 · 19 评论 -
【pytorch】.item()的用法
用法描述Use torch.Tensor.item() to get a Python number from a tensor containing a single value..item()方法返回张量元素的值。用法示例>>> import torch>>> x = torch.tensor([[1]])>>> xtensor([[1]])>>> x.item()1>>> x = torc翻译 2020-11-08 15:00:46 · 5674 阅读 · 0 评论 -
【pytorch】保存与加载模型(1.7.0官方教程翻译)
写在前面pytorch训练完模型后,如何保存和加载?引用参考https://pytorch.org/tutorials/beginner/saving_loading_models.html翻译 2020-11-07 15:27:59 · 1755 阅读 · 0 评论 -
PyTorch安装教程(Windows)
安装准备请先安装Anaconda或者Miniconda并配置好清华源安装教程用conda新建一个名为pytroch的环境conda create -n pytorch python=3.7激活刚才创建的名为pytorch的环境conda activate pytorch进入Pytorch的官网,然后复制下方的安装命令在第2步激活的pytorch环境中运行第3步复制的安装命令conda install pytorch torchvision cudatoolkit=10.1原创 2020-10-23 16:45:07 · 1428 阅读 · 1 评论 -
PyTorch安装教程(Linux)
安装准备请先安装Anaconda或者Miniconda并配置好清华源输入命令nvidia-smi,查看CUDA版本,可以看到是10.1安装教程用conda新建一个名为pytroch的环境conda create -n pytorch python=3.7激活刚才创建的名为pytorch的环境conda activate pytorch进入Pytorch的官网,CUDA版本选择之前我们查询的。然后复制下方的安装命令在第2步激活的pytorch环境中运行第3步复制的安装命原创 2020-10-19 12:02:24 · 3647 阅读 · 2 评论 -
解决vscode中使用pytorch时pylint报错Module torch has no xxx member
项目场景安装好了pytorch,写一个简单的测试代码,如下:import torchx = torch.rand(5, 3)print(x)问题描述正常输出:tensor([[0.3506, 0.0131, 0.4908], [0.8524, 0.1879, 0.2194], [0.0101, 0.6458, 0.9603], [0.7522, 0.2765, 0.6378], [0.6041, 0.6980, 0.8985]]原创 2020-10-16 22:46:14 · 4589 阅读 · 4 评论 -
解决pytorch报错ImportError: numpy.core.multiarray failed to import
项目场景最近在学pytorch,先用官网提供的conda命令安装了一下:conda install pytorch torchvision cudatoolkit=10.2 -c pytorch然后按照官网的方法测试是否安装成功,能不能正常使用:import torchx = torch.rand(5, 3)print(x)若能正常打印出x的值,则说明可以正常使用,否则反之。问题描述代码运行报错ImportError: numpy.core.multiarray failed to i原创 2020-10-16 00:23:55 · 4222 阅读 · 2 评论