
深度学习
文章平均质量分 71
深度学习基础知识
Billie使劲学
这个作者很懒,什么都没留下…
展开
-
设置随机数种子
默认情况下,Python 中的哈希值(如字典的键)在不同的会话或 Python 运行中可能会变化,这会导致非重复性。设置此环境变量可以强制 Python 在对象(如字典)中使用固定的哈希种子。如果使用 GPU,这行代码确保 GPU 上的操作也会有确定的随机数生成器。时,cuDNN 会确保像卷积操作这样的运算是可重复的。模块的随机种子,该模块用于生成随机数,如洗牌、采样等操作。这样可以确保使用该模块进行的随机操作是确定性的。等)都依赖于随机数生成器,因此设置该种子能确保这些操作在每次运行时产生相同的结果。原创 2024-12-23 09:56:37 · 486 阅读 · 0 评论 -
pytorch梯度累积
pytorch每次forward完都会得到一个用于梯度回传的计算图,pytorch构建的计算图是动态的,其实在每次backward后计算图都会从内存中释放掉,但是梯度不会清空的。同时,因为累计了4个batch,那学习率也应该扩大4倍,让更新的步子跨大点。看网上的帖子有讨论对BN层是否有影响,因为BN的估算阶段(计算batch内均值、方差)是在forward阶段完成的,那真实的batch_size放大4倍效果肯定是比通过梯度累加放大4倍效果好的,毕竟计算真实的大batch_size内的均值、方差肯定更精确。原创 2024-02-27 16:04:32 · 1167 阅读 · 0 评论 -
BPE的使用(代码)
【代码】BPE的使用(代码)原创 2024-02-27 15:57:37 · 653 阅读 · 0 评论 -
pytorch 分布式训练
神经网络训练加速的最简单方法是使用GPU,对弈神经网络中常规操作(矩阵乘法和加法)GPU运算速度要倍超于CPU。随着模型或数据集越来越大,一个GPU很快就会变得不足。例如,BERT和GPT-2等大型语言模型是在数百个GPU上训练的。对于多GPU训练,需要一种在不同GPU之间对模型和数据进行切分和调度的方法。PyTorch是非常流行的深度学习框架,它在主流框架中对于灵活性和易用性的平衡最好。和。DataParallel更易于使用(只需简单包装单GPU模型)。原创 2023-12-26 13:57:05 · 3718 阅读 · 0 评论 -
pip freeze 导出的requirements.txt文件含有 @file
使用 pip freeze > requirements.txt 导出的文件中含有 @file://解决:pip list --format=freeze > requirements.txt。原因是这种方法生成的文件只能用于本地环境,无法供他们使用。使用这个文件在其他环境下安装就会出现 找不到路径的错误。使用以下方式生成文件。原创 2023-12-26 10:13:02 · 1524 阅读 · 0 评论 -
变相增大BatchSize——梯度累积
pytorch每次forward完都会得到一个用于梯度回传的计算图,pytorch构建的计算图是动态的,其实在每次backward后计算图都会从内存中释放掉,但是梯度不会清空的。看网上的帖子有讨论对BN层是否有影响,因为BN的估算阶段(计算batch内均值、方差)是在forward阶段完成的,那真实的batch_size放大4倍效果肯定是比通过梯度累加放大4倍效果好的,毕竟计算真实的大batch_size内的均值、方差肯定更精确。同时,因为累计了4个batch,那学习率也应该扩大4倍,让更新的步子跨大点。原创 2023-12-11 09:07:43 · 664 阅读 · 0 评论 -
CBAM——即插即用的注意力模块(附代码)
论文:CBAM: Convolutional Block Attention Module代码:GitHub - Jongchan/attention-module: Official PyTorch code for "BAM: Bottleneck Attention Module (BMVC2018)" and "CBAM: Convolutional Block Attention Module (ECCV2018)"前言CBAM(Convolutional Block At..原创 2022-04-06 14:43:20 · 148436 阅读 · 37 评论 -
(一)动态卷积之CondConv
题目:CondConv: Conditionally Parameterized Convolutions for Efficient Inferencepaper:papercode:code目录前言CondConv是什么?CondConv解决了什么问题?CondConv做了怎样的工作?用了怎样的方法?实验结果结论要点总结(详细版)前言该文是谷歌大神Quov V.Le出品,一种条件卷积,我更愿称之为动态卷积。 卷积是当前CNN网络的基本构成单元之一转载 2022-04-06 20:24:21 · 4734 阅读 · 0 评论 -
注意力机制——CAM、SAM、CBAM、SE
CAM、SAM、CBAM详见:CBAM——即插即用的注意力模块(附代码)目录1.什么是注意力机制?2.通道注意力机制——SE(1)Squeeze(2)Excitation(3)SE Block3.CAM4.SAM5.CBAM6.代码参考1.什么是注意力机制?从数学角度看,注意力机制即提供一种权重模式进行运算。神经网络中,注意力机制即利用一些网络层计算得到特征图对应的权重值,对特征图进行”注意力机制“。2.通道注意力机制——SE论文地...原创 2022-04-06 15:45:12 · 41558 阅读 · 7 评论 -
(二)动态卷积之Dynamic Convolution
代码地址:code论文题目:Dynamic Convolution: Attention over Convolution Kernels论文地址:paper目录前言Dynamic Convolution解决的问题动态感知机Dynamic Convolution结构实验结果Dynamic Convolution代码实现(Pytorch)前言动态卷积现在的诸多task中,普遍需要capacity较大的模型,而随着模型参数的不断增加,计算成本也越来越高。转载 2022-04-07 11:11:56 · 17867 阅读 · 3 评论 -
使用hook提取模型的特征图
若打印结果是下面这样的,需要找到model的表示网络层的属性,如上面print(dir(model)显示的,需print(dir(model.model)才能打印网络层,这主要根据网络包装情况判断。这两个输出要区别好,name是后面需要判断是否是目标网路层,print的是模型某一块网络结构,写这两部分是为了展示这两个索引方式的不同。以上面的网络层输出为例,括号中就是网络层的名字,然后再根据缩进来判断网络层的层级关系。运行下面代码可以查看model中所有的网络层名字,然后选择自己需要的名字就好了。原创 2023-09-20 14:36:52 · 290 阅读 · 0 评论 -
提取网络特征(extract features)
【代码】提取网络特征(extract features)原创 2023-08-10 09:36:20 · 362 阅读 · 0 评论 -
模型训练时间计算
记录当前时间,或者用 time.perf_counter() ,精度更高记录结束时间计算时间差处理时间格式方法返回浮点数 time 的四舍五入值;原创 2023-07-14 16:57:07 · 1625 阅读 · 0 评论 -
实际工作中的高级技术(训练加速、推理加速、深度学习自适应、对抗神经网络)
针对训练数据过于庞大的对策,多GPU训练,加速生产模型的速度,可以认为是离线操作。我们主要看一下基于数据的并行,下面列出了三种并行方式①Model Average(模型平均)②SSGD(同步随机梯度下降)③。.........原创 2022-08-03 20:08:05 · 1573 阅读 · 11 评论 -
dropout
定义明确的代价函数J每次迭代后都会下降,因为我们所优化的代价函数J实际上并没有明确定义,或者说在某种程度上很难计算,所以我们失去了调试工具来绘制这样的图片。我觉得你也可以尝试其它方法,虽然我们并没有关于这些方法性能的数据统计,但你可以把它们与dropout方法一起使用。直观上理解不要依赖于任何一个特征,因为该单元的输入可能随时被清除,因此该单元通过这种方式传播下去,并为单元的四个输入增加一点权重,通过传播所有权重,dropout将产生收缩权重的平方范数的效果,和之前讲的L2正则化类似;...原创 2022-08-01 20:25:27 · 442 阅读 · 0 评论 -
CNN,RNN,LSTM,GRU的前后向传播算法(梯度是怎么更新的)
为什么要计算梯度?直观的讲,我们的网络通过这样的方式进行学习计算,最终输出的结果y为网络根据标签学习来的,网络的第一次前向传播相当于自学,随意学习一种概率分布,但是我们想让预测的结果更加接近“答案”,那我们就需要计算预测与标签之间差距,即loss。然后我们通过降低loss的方式改变权重(更新梯度),缩小预测结果与真实值(标签)之间的差距。...原创 2022-07-28 10:43:08 · 1694 阅读 · 1 评论 -
上采样方式(反卷积、插值、反池化)
如下图max-pooling操作中黄色窗口中(左图)的0.8为最大值,网络会记住该值得索引位置,如右边的4×4网格中的标记所示,这样在进行反池化时,就可以将值放到对应的最大值索引的位置,其余位置补0,如下图uppooling操作黄色窗口(右图)中将1.3放到了之前记录的最大索引的位置,其余位置补0。设i+u,j+v(i,j为正整数,u,v为大于零小于1的小数,下同)为待求像素坐标,则待求像素灰度的值f(i+u,j+v)得出的(0,0)就为原图坐标,则待求点的值就用求出的相对应原图位置的值来代替。...原创 2022-07-22 18:11:58 · 2663 阅读 · 2 评论 -
标签平滑(label smoothing)
标签平滑(labelsmoothing)出自GoogleNetv3。原创 2022-07-22 10:47:10 · 2560 阅读 · 0 评论 -
注意力机制的分类
注意力机制通俗的讲就是,而。其中重要程度的判断,具备注意力机制的神经网络可更好的进行自主学习。原创 2022-07-21 19:37:28 · 8282 阅读 · 0 评论 -
实时分割算法常用思想
如Resnet101或Resnet50→Resnet34或Resnet18。根据数据集进行预处理(不同数据集处理方式不同)避免出现2048、1024这样过多的通道数。将参数量较大的网络替换为参数量小的网络。参数量大,对结果也无大益。......原创 2022-07-20 18:25:31 · 305 阅读 · 0 评论 -
混淆矩阵的计算方式
然后我们将n×L+P映射到36维的一维序列中,如下图最后一个序列所示,该序列表示计算n×L+P中每一个值出现的次数,故该序列中的1,2等都为其对应数值出现的次数。我们需要计算n×L+P来计算预测结果值,当L和P都取最大时,得出的结果就是其最大计算空间。例如下图,L∈(0~5),P∈(0~5),则n×L+P∈(0~35)下图中有三个序列,L表示标签值,P表示预测值,n表示分类数。矩阵中,蓝色代表行和,绿色代表列和,粉色代表对角线元素。的矩阵,图中的0~35的序列可以生成6×6的矩阵。...原创 2022-07-19 11:20:06 · 3515 阅读 · 0 评论 -
卷积核的类型及其作用
这是为什么呢? 这就是解释了为什么很多网络的第一层使用的都是7×7的大卷积核接受输入图片,因为网络开头使用小卷积核进行下采样参数量会更大。感受野的计算是迭代计算感受野计算公式:1个5×5卷积:RF = 52个3×3卷积:RF = 3+(3-1)×1 = 51个7×7卷积:RF = 73个3×3卷积:RF = 3+(3-1)×1+(3-1)×1 = 7 标准的3×3卷积核只能看到对应区域3×3的大小,但是为了能让卷积核看到更大的范围,dilated conv使其成为了可能。poo原创 2022-07-13 21:10:09 · 6970 阅读 · 0 评论 -
Params and FLOPs
目录1.FLOPS、FLOPs和GFLOPs的辨析2.参数量的计算 3.FLOPs的计算卷积层:其中,代表输入的通道数,代表输出的通道数,为卷积核的大小,若卷积核有偏置项(Bias)则+1,没有则不加。若卷积核为方形则。简化为:池化层:池化层不需要计算参数量全连接层: 其中,表示输入通道;K表示卷积核大小;表示输出通道数。卷积层:其中为一次卷积的乘法预算的计算量,为一次卷积加法运算的计算量,+1为偏置项,W与H为输出特征图的长和宽。可简化为:计算机视觉中常把一次乘法和加法合在一起,所以可以去掉前原创 2022-07-05 17:46:20 · 1500 阅读 · 0 评论 -
分割常用损失函数
交叉熵损失公式:其中表示真实标签,表表示预测结果。优点:交叉熵Loss可以用在大多数语义分割场景中。缺点:对于只分割前景和背景的时候,当前景像素的数量远远小于背景像素的数量时,即y=0的数量远远大于y=1的数量,损失函数中y=0的成分就会占据主导,使得模型严重偏向背景,导致效果不好。(该缺点对二分类不友好。eg:医学图像分割)加权交叉熵损失公式:公式:特点:基本等价于二分类情况下的交叉熵,通产接sigmoid激活函数的输出。源自目标检测方向,是对标准交叉熵的一种改进,主要解决难易样本数量不平衡的问题。当正负原创 2022-07-05 16:15:53 · 7056 阅读 · 0 评论 -
浅层与深层、局部与全局、低级与高级特征的辨析
浅层网络更注重于细节信息深层网络更注重于语义信息浅层网络:一般感受野较小,能够利用更多的细粒度特征信息,而且此时特征图每个像素点对应的感受野重叠区域还很小,这就保证了网络能够捕获更多细节。深层网络:随着下采样或卷积次数增加,感受野逐渐增加,感受野之间重叠区域也不断增加,此时的像素点代表的信息是一个区域的信息,获得的是这块区域或相邻区域之间的特征信息,相对不够细粒度,但语义信息丰富。低级特征来源于浅层网络,富含空间信息,空间信息的分辨率比较高。高级特征来源于深层网络,富含语义信息,高语义化的特征分辨率比较低。原创 2022-07-05 14:57:12 · 7416 阅读 · 3 评论 -
Bottom-Up and Top-Down
top-down:在模式识别中使用了上下文信息(机器的处理方式)举例:当你看到一张字迹潦草难以辨认的手写文本时,你可以利用整个文本来辅助你理解其中含义,而不是每个字单独辨认。正因为有了周围字体的上下文信息,大脑可以去感知和理解文本里的意思。bottom-up:以数据为主要驱动(更像人类的思维方式)举例:一个人在花园看到一朵花,有关于花朵的所有视觉信息都从视网膜上通过视神经传递到大脑,大脑分析后得到图像从而判断出这是一朵花,以数据驱动,不需要上下文信息,即使这朵花插在头发上,画在图画里,大脑都可以分析出这是一原创 2022-07-05 14:39:03 · 718 阅读 · 0 评论 -
损失函数、代价函数和目标函数的区别
目录一、概念二、常见的代价函数1.平方误差损失函数2.Logit损失函数(Logistic 回归)3.Hinge损失函数(SVM)4. 指数损失函数5.感知机损失函数(L1 margin cost)损失函数(Loss Function )是定义在单个样本上的,算的是一个样本的误差。代价函数(Cost Function )是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。目标函数(Object Function)定义为:最终需要优化的函数。等于经验风险+结构风险(也就是Cost Functi原创 2022-07-04 16:00:44 · 715 阅读 · 0 评论 -
One-hot编码
目录One-hot编码概念One-hot编码的优缺点One-Hot 编码,又称一位有效编码。其方法是使用 N 位状态寄存器来对 N 个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。 举个栗子:按照 N位状态寄存器 来 对N个状态 进行编码的原理,处理后应该是这样的性别特征:["男","女"] (这里只有两个特征,原创 2022-07-01 16:37:39 · 4547 阅读 · 0 评论 -
常见的数据增强方式
详见:Pytorch基础学习(第二章-Pytorch数据处理)_Billie使劲学的博客-优快云博客_pytorch 数据集处理原创 2022-07-01 12:49:44 · 242 阅读 · 0 评论 -
padding、空洞对图片分辨率大小的影响
这里有一个问题:假设输入图像的分辨率为H×W,卷积核为k×k,stride为1,问若要保持卷积前后分辨率大小不变,padding应该设为多少?先给出答案:padding = (k-1)// 2那这个答案是怎么来的呢?我们知道卷积后图片分辨率大小的计算公式我们使,则得出感受野及卷积核的计算公式如下所示:我们将上图三个空洞率分别1,2,4的卷积核大小及感受野大小计算一下(绿色部分为感受野大小,红点为卷积核大小):左图(rate = 1):中图(rate = 2):右图(rate = 4):标准卷积图片分辨率计算原创 2022-06-30 16:16:58 · 2878 阅读 · 0 评论 -
常用的激活函数(Sigmoid、Tanh、ReLU等)
目录一、激活函数定义二、梯度消失与梯度爆炸 1.什么是梯度消失与梯度爆炸2.梯度消失的根本原因3.如何解决梯度消失与梯度爆炸问题 三、常用激活函数1.Sigmoid2.Tanh3.ReLU4.Leaky ReLU5.ELU6.softmax7.Swish 激活函数 (Activation functions) 对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到神经网络中。在下图中,输入的 inputs 通过加权,求和后,还被作用了一个函数f,这原创 2022-06-29 15:34:59 · 22679 阅读 · 0 评论 -
BN的作用原理(BN、LN、IN和GN)
目录为什么引入BN?BN的作用原理BN的作用 BN的不足BN、LN、IN和GN之间的区别参考为加速网络的训练,在图像预处理时,我们就后对图像进行标准化操作,即image normalization,是的每张图片都能服从u均值σ标准差的分布。但是当图片输如到神经网络后,每经过一次卷积,数据就不会再服从该分布,这种现象叫做ICS(Internal Covariate Shift,内部协变量偏移),该现象会使输入分布变化,导致模型的训练困难,对深度神经网络影响极大,如左图所示,数据分布不统一,深层网络就需要去适应原创 2022-06-28 13:16:48 · 2541 阅读 · 0 评论