
pytorch
Snoopy_Dream
这个作者很懒,什么都没留下…
展开
-
PyTorch复杂模型初始化
写作背景:是因为我在自己做EAST写PVANet的DCN模型的时候,涉及到DCN中offset的初始化需要设置为常数。常见初始化形式这里需要注意的是,一般情况下我们看到的初始化都是下面第一段代码,根据模型的类型进行不同的初始化。for m in self.modules(): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal...原创 2019-12-20 13:27:16 · 2263 阅读 · 1 评论 -
习惯性矩阵思维
大体要用的函数就是squeeze/ unsequeeze /nonzero/ where /> /< /.new().fill_()/ torch.cat()/torch.sort经常看到的变量名 keep /index gt_max gt_argmax目录0. torch.nonzero返回满足条件的行列,[m,n] —> k行2列1、排除anchor跑到...原创 2018-11-29 11:13:55 · 631 阅读 · 0 评论 -
python numpy 三行代码打乱训练数据
>>> permutation = np.random.permutation(train_label.shape[0])#记下第一维度的打乱顺序>>> shuffled_dataset = train_data[permutation, :, :]#按照顺序索引>>> shuffled_labels = train_label[perm...转载 2018-12-04 20:27:36 · 2323 阅读 · 1 评论 -
yolo v3 网络结构
首先先看一下13*13如何与26*26相concat的。整个过程相当于第二张图里的右侧紫色部分【第一张图】。其次看一下整个大规模的模型图【第二张图】更详细的图【第三章图】9个clusters在分配时深层的feature map应该得到最大的3个clusters,浅层的feature map应该得到最小的3个clusters。这是因为深层的feature map是用来检测大目标的,而...原创 2018-11-27 15:56:28 · 1762 阅读 · 0 评论 -
pytorch yolov3 构建class Darknet 脑海中过一遍
从一个大体思路角度记录一下学习的过程。细节不写在这里。输入文件:只需要一个cfg文件即可。整体思路:先为网络定义一个Darknet类,然后里面肯定有init,foward函数,这里还有load_weight函数,在init初始化的时候,需要将利用cfg构建一个网络框架。具体关系在forward函数中。更详细的说法:1. 转换输入:根据cfg文件,先把每个block单独存储(作为字典...原创 2018-11-27 18:17:17 · 1057 阅读 · 0 评论 -
pytorch yolov3 yolo层的构建 矩阵运算思维启蒙 损失函数要求公示里面的乘以相应的anchor
上一篇:pytorch yolov3 构建class Darknet 脑海中过一遍其实上一篇讲到的,构建route和shortcut层,基本是简单的层之间的叠加操作,但是yolo层要相对复杂些。写博客的过程中意识到了,作者如何将功能分块实现。你比如:1. 转换输入:根据cfg文件,先把每个block单独存储(作为字典),放到blocks(列表)当中。2. 根据blocks中的bl...原创 2018-11-28 15:45:07 · 1040 阅读 · 0 评论 -
RuntimeError: Error(s) in loading state_dict for ***: Missing key(s) in state_dict:
原因,model需要先放到cuda上,根据你的设置,所以是load_state_dict错了。原来:model = se_resnet20_v2()model.load_state_dict(torch.load('/home/zj/senetial/save_models/SENet/SEnet_model_2.pth')if use_gpu and len(device_ids)...原创 2018-12-12 23:19:55 · 18955 阅读 · 4 评论 -
pytorch 多gpu训练
在torch.nn.DataParallel#多gpu训练device_ids = [0,1]....model=resnetv2sn18()if use_gpu and len(device_ids)>1:#多gpu训练 model = model.cuda(device_ids[0]) model = nn.DataParallel(model, de...原创 2018-12-06 18:19:02 · 670 阅读 · 0 评论 -
label smoothing pytorch版本
标签平滑的想法首先被提出用于训练 Inception-v2 [26]。它将真实概率的构造改成:其中ε是一个小常数,K 是标签总数量。图 4:ImageNet 上标签平滑效果的可视化。顶部:当增加ε时,目标类别与其它类别之间的理论差距减小。下图:最大预测与其它类别平均值之间差距的经验分布。很明显,通过标签平滑,分布中心处于理论值并具有较少的极端值。# -*- coding: ...原创 2018-12-15 22:22:27 · 14786 阅读 · 10 评论 -
PyTorch 更改训练好的模型 继续训练
目录直接加载预训练模型加载部分预训练模型冻结部分参数,训练另一部分参数微改基础模型预训练微改基础模型简单预训练直接加载预训练模型如果我们使用的模型和原模型完全一样,那么我们可以直接加载别人训练好的模型:my_resnet = MyResNet(*args, **kwargs)my_resnet.load_state_dict(torch.load("my_r...原创 2018-12-27 10:33:52 · 23918 阅读 · 5 评论 -
什么情况下应该设置 cudnn.benchmark = True?
文章目录 [隐藏]1 问题 2 解决办法问题在很多情况下我们都能看到代码里有这样一行: 1 torch.backends.cudnn.benchmark = true 而且大家都说这样可以增加程序的运行效率。那到底有没有这样的效果,或者什么情况下应该这样做呢?解决办法总的来说,大部分情况下,设置这个 flag 可以让内置的 cuDNN...转载 2018-12-27 11:52:28 · 4990 阅读 · 0 评论 -
'OrderedDict' object has no attribute 'module' 多卡训练测试
加载并跑起来多卡训练的模型来用来检测device_ids=[0,1]use_gpu = torch.cuda.is_available()#创建模型model = se_resnet20_v2() model = model.cuda(device_ids[0])model = nn.DataParallel(model, device_ids=device_ids)#加载...原创 2018-12-17 09:55:09 · 5078 阅读 · 1 评论 -
训练技巧详解【含有部分代码】Bag of Tricks for Image Classification with Convolutional Neural Networks
论文地址:https://arxiv.org/pdf/1812.01187.pdf更多方法和代码可见:图像分类任务中的tricks总结 更多更全的tricks补充(补充链接也是福利满满~)目录2 训练过程(baseline复现原文精度,作为下面的基础)3 高效训练(大BS为出发,但部分小BS也适用)(效率改进...原创 2018-12-11 22:07:40 · 6506 阅读 · 2 评论 -
Alibaba Cloud German AI Challenge 2018 pytorch 进度条+分类+学习
补充:两个前排的githubhttps://github.com/zhangboshen/Alibaba-Cloud-German-AI-Challenge-2018-Rank-17th-Solutionhttps://github.com/lhwcv/cloud_german_rank10比赛历程:https://tianchi.aliyun.com/forum/postDe...原创 2019-05-22 21:55:11 · 1052 阅读 · 0 评论 -
*** ValueError: some of the strides of a given numpy array are negative. This is currently not suppo
内存地址不连续的问题加一句np.ascontiguousarray就好了 inputs6=np.ascontiguousarray(inputs6, dtype=np.float32)原创 2019-01-08 12:27:23 · 4629 阅读 · 0 评论 -
nn.moduleList 和Sequential由来、用法和实例 —— 写网络模型
对于cnn前馈神经网络如果前馈一次写一个forward函数会有些麻烦,在此就有两种简化方式,ModuleList和Sequential。其中Sequential是一个特殊的module,它包含几个子Module,前向传播时会将输入一层接一层的传递下去。ModuleList也是一个特殊的module,可以包含几个子module,可以像用list一样使用它,但不能直接把输入传给ModuleList。下...原创 2018-11-23 17:20:39 · 54462 阅读 · 6 评论 -
pytorch 50行代码搭建ResNet-34(两种方法)
#------------------------------用50行代码搭建ResNet-------------------------------------------from torch import nnimport torch as tfrom torch.nn import functional as Fclass ResidualBlock(nn.Mod...转载 2018-10-24 09:55:21 · 2272 阅读 · 1 评论 -
ROIPooling的意义?全连接层输入需要固定尺度?全连接层的实现?为什么需要两个全连接层?
ROIPooling的作用,就是resize到统一尺寸,这样才能利用预训练的全连接层参数,大多是7*7大小,这是因为全链接层需要固定的输入尺寸.那么为什么需要固定尺寸呢?全连接层的计算其实相当于输入的特征图数据矩阵和全连接层权值矩阵进行内积以vgg16,512*7*7的特征输入为例,紧接着两个全连接层。如果是caffe,这个特征图进入全连接层之后就会被flatten成一个250...原创 2018-11-01 11:00:09 · 6550 阅读 · 0 评论 -
pytorch faster rcnn复现系列(一) RPN层输入输出维度理解
目录1. 1*1 FC层2. anchor_target_layer_>rpn_data 3. 二分类 softmaxloss 4. 回归损失 rpn_loss_bbox5. softmax 二分类分类概率6. prosal_layer_>rpn_rois 2000个rpn_roi...原创 2018-11-01 12:28:41 · 6786 阅读 · 10 评论 -
RPN 预备编程知识(一) : Numpy VS Pytorch ( Anchor_target_layer )
目录1. np.where(x>4) ) 知道返回[0] [1]2. np.meshgrid 构造xy轴3. np.ravel( ) VS np.flatten() 拉成一维4. x.reshape( ) 了解填充方式5. np.squeeze(a,axis=none) & b.squeeze(0) [ b是torch.data ]6. np.vi...原创 2018-11-03 12:12:59 · 1425 阅读 · 0 评论 -
PyTorch基础系列(二)——cnn简单训练6个流程
目录零、 函数总体说明一、数据导入1. torch.utils.data.Dataset基类 or torchvision.datasets.ImageFolder 将路径和标签变列表2. torch.utils.data.DataLoader对图像和标签列表分别封装成一个Tensor3. 将Tensor数据类型封装成Variable数据类型。补充:Sample二、导入...原创 2018-11-09 12:06:41 · 5061 阅读 · 2 评论 -
faster rcnn中 损失函数(一)——softmax,softmax loss和cross entropy的讲解
先理清下从全连接层到损失层之间的计算。来看下面这张图,(非常好的图)。 T类 N表示前一层特征层flatten后的数字 fltten后的特征 无限大小的T类 从0-1的T类向量 这张图的等号左边部分就是全连接层做的事,W是全连接层的参数,我们也称为权值,X...原创 2018-11-06 22:59:12 · 11385 阅读 · 4 评论 -
faster rcnn pytorch 复现系列(三): Anchor_target_layer.py
注:此篇文章的基础知识可见链接:pytoch faster rcnn复现系列(一) RPN层输入输出维度理解 faster rcnn pytorch 复现系列(二):generate_anchors源码解析 RPN 预备编程知识(一) : Numpy VS Pytorch ( Anchor_target_layer ) RPN 预备编程知识(二) : 函数篇章 bbox_trans...原创 2018-11-02 21:49:47 · 2922 阅读 · 6 评论 -
RPN 预备编程知识(二) : 函数篇章 bbox_transform.py
目录1. bbox_transform 计算与anchor有最大IOU的GT的偏移量2. bbox_transform_batch3. bbox_transform_inv 根据anchor和偏移量计算proposals4. clip_boxes 将proposals的边界限制在图片内5. clip_boxes_batch6. bbox_overlaps (附手绘理解IOU...原创 2018-11-02 22:38:40 · 4054 阅读 · 1 评论 -
pyTorch基础系列(一)—— 基本语法
目录-1.torch.FloatTensor()0. repeat1. Varibale与Tensor的区别(0.4之后已经合并为一类了)2. 大多数索引 都用LongTensor3. import导入4. 创建Tensors5. 获取Tensor部分值6. 产生随机数据7. Tensor运算8. torch.cat( [res,] x_1, x_2,...原创 2018-11-07 15:53:31 · 5042 阅读 · 0 评论 -
faster rcnn中损失函数(三)——理解faster-rcnn中计算rpn_loss_cls&rpn_loss_box的过程
首先感想来源与pytorch的rpn.py。我们都知道,rpn通过制作lable和targe_ shift来构造rpn loss的计算。那具体是怎么构造的呢?首先rpn_loss_cls计算:我们应该首先想到的是: rpn_loss_cls = F.cross_entropy(rpn_cls_score, rpn_label)维度分析cross_entropy要求输入是Vari...原创 2018-11-13 12:01:13 · 16364 阅读 · 10 评论 -
继承nn.Module后的 init与forward函数【trian_val、vgg16、faster_rcnn、rpn】.py 学习 文件结构 大工程安排
本篇文章主要是用来学习大工程的构造,具体包括如何进行init和forward,如何层层递进,高层设置输入,传入底层的input中。从train_val.py中的初始化vgg开始,这里调用了vgg的初始化,嵌套faster_rcnn初始化,再内嵌套调用rpn初始化,调anchor_target_layer/prosal_layer的初始化。其中faster_rcnn的forward函数中,利...原创 2018-11-13 12:01:55 · 5655 阅读 · 1 评论 -
faster rcnn中损失函数(二)—— Smoooh L1 Loss的讲解
想具体了解代码的可以转置:r-cnn学习(五):SmoothL1LossLayer论文与代码的结合理解1. 使用Smoooh L1 Loss的原因对于边框的预测是一个回归问题。通常可以选择平方损失函数(L2损失)f(x)=x^2。但这个损失对于比较大的误差的惩罚很高。我们可以采用稍微缓和一点绝对损失函数(L1损失)f(x)=|x|,它是随着误差线性增长,而不是平方增长。但这个函数在0...原创 2018-11-08 11:18:40 · 6738 阅读 · 5 评论 -
pytorch minst分类 莫凡
"""View more, visit my tutorial page: https://morvanzhou.github.io/tutorials/My Youtube Channel: https://www.youtube.com/user/MorvanZhouDependencies:torch: 0.4torchvisionmatplotlib"""#...转载 2018-11-13 21:10:55 · 1038 阅读 · 1 评论 -
Pytorch 学习系列 汇总
目录首先是pytorch基础系列:1. pytorch常用的一些基础属性和函数,以及与所熟知的numpy的不同,矩阵思维。2. pytorch写cnnn训练的一系列流程。3. pytorch 搭建模型 经典 ResNet+yolo5. nn.moduleList 和Sequential由来、用法和实例 —— 写网络模型【高阶】4. 深入 学习神经网络中 模块的属性方法。ba...原创 2018-11-15 19:16:56 · 737 阅读 · 4 评论 -
PyTorch基础系列(三)——深入理解autograd:Variable属性方法【最新已经和tensor合并为一类】
torch.autograd.backward(variables, grad_variables, retain_variables=False)当前Variable对leaf variable求偏导。计算图可以通过链式法则求导。如果Variable是 非标量(non-scalar)的,且requires_grad=True。那么此函数需要指定gradient,它的形状应该和Variab...原创 2018-11-14 18:10:02 · 26218 阅读 · 0 评论 -
pytorch 基础系列(四)——nn.module
torch.nn的核心数据结构是Module,它是一个抽象概念,既可以表示神经网络中的某个层(layer),也可以表示一个包含很多层的神经网络。无需纠结variable和tensor了,0.4版本已经将两个类彻底合并了。在实际使用中,最常见的做法是继承nn.Module,撰写自己的网络/层。自定义层Linear必须继承nn.Module,并且在其构造函数中需调用nn.Module的构造函数...转载 2018-11-14 22:22:00 · 6309 阅读 · 0 评论 -
faster rcnn pytorch 复现系列(二):generate_anchors源码解析
目录1. 总函数 generate_anchors2. 函数分功能写,首先是ratios的实现,其次是scale的实现3. anchor2WHXY函数+WsHsXsYs2anchors函数[s表示复数]4. _ratio_enum(anchor,ratios) 5 ._scale_enum(anchor,scales)6. 最终获得的anchors的坐标:学习到的变...原创 2018-10-31 11:38:25 · 3115 阅读 · 0 评论