PyTorch
文章平均质量分 80
pytorch语法和使用
laizi_laizi
梦想成为工程师,博士在读,可有偿指导本科/硕士毕设,代码辅导debug等
展开
-
PyTorch源码看Transformer
从去年的ViT以来,Transformer在CV领域也大红大紫,现在写都算比较迟了,这次主要从PyTorch源码角度来看Transformer整体结构。主要的源码文件位于下面这个路径:anaconda3/lib/python3.7/site-packages/torch/nn/modules/transformer.py官方的Transformer文档也可以去这里参考主要是有一个Transformer类,而这个类也主要由TransformerEncoder和TransformerDecoder组成原创 2021-08-14 19:47:25 · 1423 阅读 · 1 评论 -
从RepPoints来学习mmdetection框架
最近想精看一篇论文:RepPoints: Point Set Representation for Object Detection当然这只是V1的版本。官方代码地址:https://github.com/microsoft/RepPoints因为代码是基于mmdetection(v1.0rc0因为是比较早的一个工作了)的,所以这次趁此机会来打开mmdetection在我心中神秘的大门,看完之后发现这个看似庞大的框架还是很清晰的,也促进了我对detector的理解。ps:需要注意的是mmdetecti原创 2021-06-12 15:54:39 · 769 阅读 · 0 评论 -
pytoch实现nn.CrossEntropyLoss和多分类的focal loss
import timeimport torchimport torch.nn as nnimport torch.nn.functional as F# for weight variable:# https://discuss.pytorch.org/t/passing-the-weights-to-crossentropyloss-correctly/14731/10?u=simiao_lai1def crossentropy(logits, targets, weight=None,原创 2021-05-21 14:54:29 · 1196 阅读 · 1 评论 -
PyTorch DDP模式的使用
PyTorch支持分布式训练,所以当你有多块卡时,肯定是想让你的代码能够使用multi-gpu进行training。然后你会发现有两种选择摆在你面前:DP(torch.nn.DataParallel) 官方Tutorial优点:修改的代码量最少,只要像这样model = nn.DataParallel(model)包裹一下你的模型就行了,想用的话可以看一下上面的官方Tutorial,非常简单缺点:只适用single-machine multi-GPU(不过也已经适合大部分人使用了),不适用mult原创 2021-03-29 21:13:54 · 9387 阅读 · 12 评论 -
with torch.no_grad()和backward()
在编程中遇到了with torch.no_grad()用法,想整明白,过程中有一些意料之外的东西,故此记录一下。首先说明一下环境,以下的测试均在:python3.6, pytorch1.2.0 环境下给出:官网的截图如下:主要有几个重要的点:torch.no_grad上一个上下文管理器,在你确定不需要调用Tensor.backward()时可以用torch.no_grad来屏蔽梯度计算在被torch.no_grad管控下计算得到的tensor,它的requires_grad就是False下原创 2021-01-16 21:01:05 · 3239 阅读 · 3 评论 -
简单易懂的利用F.conv2d函数进行卷积的前向传播和反向传播
其实你去看pytorch中的nn.Conv2d的源码的时候,你会发现它还是调用的nn.functional.conv2d,如下图所示:显然这在前向传播中我们已经用的非常多了,有时候在跟踪里面会计算template和search的互相关,也是利用F.conv2d函数实现的,本篇文章用生动易懂的方式讲解一下F.conv2d前向传播和反向传播的过程。前向传播(forward propagation)官方的参数列表是这样的:torch.nn.functional.conv2d(input, weight原创 2020-11-26 21:37:37 · 14776 阅读 · 15 评论 -
分析pytorch中的view和reshape
在pytorch编写的代码中,view方法和reshape方法是非常常用的。但是经过我的一次亲手撸代码的经历,发现事情并不那么简单,那就一起来看一下我为何这么说吧?一、基础认知在此之前,希望对以下几点我们是有共同认知的:(B, C, H, W)这个形式的tensor通常都是作为网络的输入,而每个维度都是有其意义的,比如第一维的B就是不同的图片(暂且认为是输入的图片),也就是一个批次中的batch size大小,C是tensor的通道, H和W分别是tensor 的spatial size,即高和宽。原创 2020-09-21 09:14:15 · 3905 阅读 · 0 评论 -
两次sort排序求矩阵的升序或降序元素的位置(pytorch版)
之前看过ssd.pytorch里面的代码的Hard Negative Mining部分,通过两次sort排序来求取每张图片中正样本数的3倍的负样本,感觉还是比较巧妙的,以后可能会用到类似的思想,这里记录一下:先来看一下官方文档的解释:torch.sort(input, dim=-1, descending=False, out=None) -> (Tensor, LongTensor)...原创 2019-12-10 21:52:03 · 901 阅读 · 0 评论 -
看pytorch official tutorials的新收获(三)--分类损失计算
PyTorch分类损失计算11 torch.nn.functional.log_softmax()12 torch.nn.functional.nll_loss()13torch.nn.CrossEntropyLoss()BonusNote分类任务是CV里面最基本的一个task,自然离不开分类损失,一般我们看代码都会有两种写法,今天我就想清楚的搞懂一下:第一种写法:criterion = ...原创 2019-12-05 18:23:01 · 630 阅读 · 0 评论 -
PyTorch-网络的创建,网络结构参数的获取,预训练模型的加载
最近在做一个小测试,给了类似VOC格式的数据集,但是没有20类,只需要预测前景的四个坐标,我就拿ssd300练了个手。后来提交一次后,虽然改了很多,如把backbone从VGG16改成了ResNet34,ResNet101, 运用空洞卷积提高感受野,把原来的ssd300拓展为ssd512等,但是并没有提高测试集上的指标,原因还是图片中小物体较多,其实并不需要太大的感受野,比如下面这张图片:但也...转载 2019-12-02 21:21:35 · 486 阅读 · 0 评论 -
看pytorch official tutorials的新收获(二)
7 torchvision.utils这里面就只有两个函数:torchvision.utils.make_grid和torchvision.utils.save_image。一个是显示图片制作网格,另一个是保存图片8 torch.nn.MaxPool2d()以前就知道这个就是一个最大池化的操作,今天看到有人用了ceil_mode的参数,就又看了官网,其实很好理解:torch.nn.MaxP...原创 2019-12-02 19:05:49 · 241 阅读 · 0 评论 -
pytorch分类cifar-10(多模型对比)
之前沿着这样的路线:AlexNet,VGG,GoogLeNet v1,ResNet,DenseNet把主要的经典的分类网络的paper看完了,主要是人们发现很深的网络很难train,知道之后出现的Batch Normalization和ResNet才解决了深层网络的训练问题,因为网络深了之后准确率上升,所以之后的网络效果在解决了train的问题之后,就明显比之前的好,而且通过Bottleneck的...原创 2019-11-15 09:54:37 · 2560 阅读 · 20 评论 -
看pytorch official tutorials的新收获(持续更新)
今天才正式开始看pytorch的官网教程,把一些基础的操作先搞明白吧,虽然之前跑过简单的demo,总是感觉有些地方不能解释得很好,所以这次记录一下新的收获:1 torch tensorpytorch里面最基础格式的量就是torch tensor了,但这么基础的量在初始化的时候,还是可以指定很多参数的,例如torch.tensor(data, dtype, device, requires_gr...原创 2019-11-03 15:57:57 · 335 阅读 · 0 评论