深度学习
文章平均质量分 75
macan_dct
一直在思考怎样才能有意义地过这一生,却发现时间从来没让我这么去做
展开
-
Batch Normalization详解(原理+实验分析)
Batch Normalization详解(原理+实验分析)1. 计算过程2. 前向传播过程3. 反向传播过程4. 实验分析4.1 实验一:验证有没有BatchNorm下准确率的区别4.2 实验二:验证有没有BatchNorm+noisy下准确率的区别4.3 实验三:验证有没有BatchNorm+noisy下准确率的区别4.4 实验小结5. BatchNorm的其他细节5.1 训练和推理阶段时参数的初始化问题5.2 BatchNorm在哪个位置最好?5.3 在训练时为什么不直接使用整个训练集的均值/方差?5原创 2022-02-10 14:11:12 · 10613 阅读 · 9 评论 -
BatchNorm怎样解决训练和推理时batch size 不同的问题?
BatchNorm怎样解决训练和推理时batch size 不同的问题?BatchNorm是在batch维度上计算每个相同通道上的均值和方差,通常情况下,训练阶段的batchsize较大,而推理时batchsize基本为1。这样的话,就会导致训练和推理阶段得到不同的标准化,均值和方差时靠每一个mini-batch的统计得到的,因为推理时只有一个样本,在只有1个向量的数据组上进行标准化后,成了一个全0向量,导致模型出现BUG。为了解决这个问题,不改变训练时的BatchNorm计算方式,仅仅改变推理时计算均值原创 2022-02-10 11:35:07 · 3707 阅读 · 0 评论 -
Batch Normalization的反向传播解说
Batch Normalization的反向传播详细解说Batch Normalization在我的另一篇博客中已经详细说明了,而这篇我将详细介绍下Batch Normalization的反向传播的细节。先贴张前向和反向传播图:从左到右,沿着黑色箭头向前传播。输入是一个矩阵X,γ\gammaγ和β\betaβ作为向量。从右到左,沿着红色箭头反向传播,将梯度从上一层分布到γ\gammaγ和β\betaβ,并一直返回到输入。篇外话,下图中简单说明了正向传播和反向传播的示意图,如果看不懂,建议百度搜索链原创 2022-02-10 11:10:14 · 2129 阅读 · 1 评论 -
使用pytorch搭建卷积神经网络的一般写法
使用pytorch搭建卷积神经网络的一般写法(Alexnet为例)前言数据集代码1. 定义自己的transform2. 定义自己的Dataset2. 定义自己的DataLoader3. 设置GPU还是CPU运行设备4. 加载模型5. 设置优化器6. 定义损失函数7. 开始训练+验证整体代码前言本文使用pytorch简单搭建了一个Alexnet,代码流程可以作为模板,按照这个流程就可以写自己的训练代码了。数据集数据集使用的17flowers,一共有17个类别的花,做图片分类任务。17flowers数据原创 2022-01-22 17:45:41 · 1988 阅读 · 3 评论 -
pytorch的padding怎么使用?支持哪些padding方式方法?padding有什么意义?
pytorch的padding怎么使用?支持哪些padding方式方法?padding有什么意义?前言pytorch支持哪些padding?1. zeros(常量填充)2. reflect(反射填充)3. replicate(复制填充)4. circular(循环填充)总结前言搭建深度学习模型,必不可少使用卷积,卷积中有一个参数padding需要理解且应该掌握选择哪种方式进行padding,本文对pytorch中支持的四种padding进行详细描述。torch.nn.Conv2d(in_channel原创 2022-01-17 18:24:10 · 17540 阅读 · 1 评论 -
pytorch的Conv2d参数详解
pytorch的Conv2d参数详解torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)in_channels:输入维度,即你上一层特征图或者原始图片(3)的通道数out_channels:你希望这一层输出多少层的特征图,或者说你希望有多少个原创 2022-01-17 16:40:03 · 2874 阅读 · 2 评论 -
使用conda和pip批量安装Python包
使用conda和pip批量安装Python包1. conda方式批量安装2. pip方式批量安装在debug Yolov5之前,需要按照其txt文件中指定的包的版本来指定安装工程需要的Python包,截图如下:(这里面的torch慎装,因为这种方式装的pytorch不吃吃GPU,如果某个包不想安装,只要在该行前面输入注释符就行)1. conda方式批量安装进入(cd)到txt文件所在文件夹路径下,运行以下命令:$ conda install --file=requirements_conda.t原创 2022-01-12 11:24:23 · 2381 阅读 · 0 评论 -
使用tengine部署模型时,编译报错:fatal error: NvInfer.h: No such file or directory | #include <NvInfer.h>
使用tengine部署模型时,编译报错:fatal error: NvInfer.h: No such file or directory | #include 很明显,就是缺少头文件,这个头文件是自己配置tengine部署环境中需要安装的TensorRT带的头文件,(有关在Ubuntu系统上配置TensorRT的相关内容,详见我的另一篇博客:Ubuntu18配置CUDA10.2 cudnn8.0.1 TensorRT7.1.3.4)那么就需要在编译部署代码的CMakeList.txt中指定这个头文件的路径原创 2022-01-11 11:00:05 · 1781 阅读 · 4 评论 -
Ubuntu18配置CUDA10.2 cudnn8.0.1 TensorRT7.1.3.4
来自实际项目,项目简述:自动驾驶测试阶段,需要在车端测试算法运行在一个带有2080Ti工控机,这里使用tengine来部署模型。由于项目保密原因,本文不使用实际本团队开发的算法,就仅仅使用tengine自带的demo,完全够用。原创 2022-01-11 10:11:00 · 1294 阅读 · 0 评论 -
在tengine平台使用TensorRT运行目标检测算法
使用开源的tengine在GPU上使用TensorRT运行目标检测模型原创 2022-01-11 10:08:17 · 2069 阅读 · 1 评论 -
Ubuntu18配置CUDA10.2 cudnn8.0.1(cuda_10.2.run格式+cudnn-10.2-linux-x64-v8.0.1.13.tgz格式)
Ubuntu18配置CUDA10.2 cudnn8.0.1(cuda_10.2.run格式+cudnn-10.2-linux-x64-v8.0.1.13.tgz格式)原创 2022-01-11 09:38:30 · 1153 阅读 · 0 评论 -
目标检测RCNN系列的候选区选择算法——selective search(原理+Python实现)
一直想总结下目标检测的一系列算法,分为两个主要路线,一个是从RCNN发展起来的两阶段算法,另一个是以YOLO发展的一阶段算法。本篇属于RCNN算法中重要的一部分,用来解决生成候选区域的问题,算是基础,也很重要,尽管该算法已经过时了,但是掌握其中的思想用来解决可以问题还是不错的。简述作用:在原图片上,以尽可能快和好地生成可能包含目标的候选块。换句话说,避免了穷举法的计算量大且无图像本身信息的缺点。解决办法(大致思想):selective search首先使用 Felzenswalb图像分割算法将图像原创 2021-12-14 21:56:21 · 4805 阅读 · 1 评论 -
问题记录:为什么使用GPU训练模型会越来越慢?
问题记录:为什么使用GPU训练模型会越来越慢?本篇没前言,没总结,就仅仅是记录下我的一个“傻瓜式”代码。。。。。。在RPN上修改我的代码,使用GPU跑训练越来越慢,每次迭代消耗时间越来越大。经过仔细查找,发现犯了一个sb错误,在每次迭代都是新建了一个读gt的新图,这样会使整个图越来越来,训练越来越慢,最终导致内存爆了。怎么排查?答:在session定义下使用sess.graph.fina...原创 2019-12-28 09:44:19 · 4245 阅读 · 3 评论