pytorch
文章平均质量分 50
诸神黄昏的幸存者
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ResNet与Densenet之间的关系以及区别
一、resnet和densenet的之间的关系以及区别,如参数量和训练速度。简单介绍下resnet以及densenetresnet的最大的贡献是缓解深层的神经网络训练中的梯度消失问题,主要是利用shortcut的技术可以加深网络的深度而没有退化。反向传播时,梯度可能会在距离输入近的地方中产生消失的现象,既然离输入近的神经网络层较难训练,则可以将它短接到更加靠近输出的地方。因为直接映射是难以学习的,而ReseNet学习的是残差,这是更容易学习的。shortcut的设计是将模块的输入和输出连接在一起,然原创 2022-04-30 20:36:55 · 6474 阅读 · 0 评论 -
pytorch常用的乘法运算以及相关的运算符(@、*)
这里总结一下pytorch常用的乘法运算以及相关的运算符(@、*)。总结放前面:torch.mm:用于两个矩阵(不包括向量)的乘法。如维度为(l,m)和(m,n)torch.bmm:用于带batch的三维向量的乘法。如维度为(b,l,m)和(b,m,n)torch.mul:用于两个同维度矩阵的逐像素点相乘(点乘)。如维度为(l,m)和(l,m)torch.mv:用于矩阵和向量之间的乘法(矩阵在前,向量在后)。如维度为(l,m)和(m),结果的维度为(l)。torch.matmul:用于两个张量(原创 2022-01-05 17:23:29 · 8051 阅读 · 7 评论 -
RuntimeError: Boolean value of Tensor with more than one value is ambiguous
RuntimeError: Boolean value of Tensor with more than one value is ambiguous其中文意思大致是该张量含有多个(1个以上不含1个)boolean值,是不明确的,即无法比较。这里先举一个报错的例子:features = torch.zeros(8, 32)if features[1] == torch.zeros(32): # if 语句里面的条件无法判断 print('true')看一下if条件的实际结果是print(f原创 2021-12-31 14:39:00 · 95258 阅读 · 1 评论 -
torch.topk与torch.sort用法
torch.topk用法torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)沿给定dim维度返回输入张量input中 k 个最大值。 如果不指定dim,则默认为input的最后一维。 如果为largest为 False ,则返回最小的 k 个值。返回一个元组 (values,indices),其中indices是原始输入张量input中测元素下标。 如果设定布尔值s原创 2021-12-07 16:03:22 · 1909 阅读 · 0 评论 -
移除预训练网络的全连接层
有时,我们需要利用预训练网络权重提取全连接前的特征。需要将全连接去除掉,然后后面根据自己的任务进行修改。self.feature_extraction = models.resnet34(pretrained=True) self.feature_extraction.fc = nn.Sequential() # remove fc或者,在设计网络层面,将对应的fc去除掉,然后按对应键对进行加载即可。...原创 2021-10-29 11:49:36 · 1485 阅读 · 0 评论 -
手动加载特定的预训练模型权重(或解决size mismatch for fc.bias的问题)
有时无法直接利用官方的预训练模型,需要自己手动将指定模型进行预训练。主要有以下语句作为参考:model = models.resnet34(pretrained=False)state_dict = torch.load('./pretrain/resnet34-333f7ec4.pth')pretrained_dict = {k: v for k, v in state_dict.items() if k in model.state_dict()}model.load_state_dict(pr原创 2021-10-29 10:10:07 · 3435 阅读 · 0 评论 -
conda虚拟环境的相关操作(快速安装pytorch虚拟环境)
1、创建虚拟环境conda create -n your_env_name python=3.8 其中,your_env_name:虚拟环境的名字,是自定义的。2、激活虚拟环境conda activate your_env_name 或Linux以及windows系统下Linux: source activate your_env_nameWindows: activate your_env_name3、结束虚拟环境Linux: source deactivateWindows原创 2021-10-18 17:26:31 · 413 阅读 · 0 评论 -
python运行程序设置指定GPU(查看GPU使用情况)
常见的两种使用方式如下:一、python文件里设置指定GPU一般情况:import os os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" (保证程序cuda序号与实际cuda序号对应)os.environ['CUDA_VISIBLE_DEVICES'] = "0,1" (代表仅使用第0,1号GPU)单GPU:os.environ["CUDA_VISIBLE_DEVICES"] = "2"###代表只使用第3个gpu而没设置的时候一般会只用第原创 2021-07-17 14:45:53 · 48438 阅读 · 1 评论 -
图像分类超详细的pytorch实现
1、定义各种参数下面举例三种常见的参数batch_size = 8 learning_rate = 1e-4 epoches = 100 2、利用官方的数据加载指定训练、验证以及测试的文件夹的路径,其下一个目录的各个文件夹视为各个类别。下一个目录为了方便简单可以直接命名为0、1、2等。到时就可以对应0、1、2等类别。也可以按本身类别作为文件名,可能需要调试注意一下对应的类别0、1、2等。如:0、1、2文件夹里放置对应类别的图像即可。主要调用的是torchvision.dataset原创 2021-08-21 20:07:37 · 9577 阅读 · 9 评论 -
理解Resnet18的18的含义
18 = 17(卷积层)+ 1(全连接)18主要指的是带有权重的,包括卷积层和全连接层,不包括池化层和BN层。import torchvisionmodel = torchvision.models.resnet18(pretrained=False)print(model)具体网络结构可参考:细节如下:ResNet( (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=Fals原创 2021-08-19 16:16:27 · 4800 阅读 · 0 评论 -
理解transforms.ToTensor()函数
先说结论:transform.ToTensor()的操作对象有PIL格式的图像以及numpy(即cv2读取的图像也可以)这两种。对象不能是tensor格式的,因为是要转换为tensor的。先附上源码:class ToTensor(object): """Convert a ``PIL Image`` or ``numpy.ndarray`` to tensor. Converts a PIL Image or numpy.ndarray (H x W x C) in the rang原创 2021-08-08 20:06:39 · 22870 阅读 · 0 评论 -
解决网络训练正常、测试显存爆炸的问题(model.eval()和torch.no_grad()的区别)
问题分析:网络训练时正常,但测试中途却出现显存爆炸时。训练网络基本快占满了一张卡,这样测试时是有可能会显存爆炸。因为可能由于某张图测试的时候需要更大的显存,图像输入偏大等不确定因素。但测试的时候可以以更少的显存进行测试的。那就是使用**with torch.no_grad()**语句。测试代码修改大体如下所示:for i, image in enumerate(testLoader): # ...... (省略代码) with torch.no_grad(): # 主要将网络部分置于此即可原创 2021-07-27 13:08:24 · 5283 阅读 · 2 评论 -
pytorch按照指定元素索引排序选择操作大全(nonzero、sort、index_select函数)
一、特定元素的位置索引获取矩阵中特定元素的位置索引,可以通过nonzero()结合判断条件来获取。nonzero()函数可以返回非0元素的位置。下面举一下一维以及二维的相关例子。(1)一维矩阵的nonzero()>>> import torch>>> a = torch.tensor([1,0,2,30,0,1])>>> a.nonzero()tensor([[0], [2], [3], [5]原创 2021-07-20 15:43:54 · 9436 阅读 · 0 评论
分享