【深度学习】各种卷积—卷积、反卷积、空洞卷积、可分离卷积、分组卷积
在全连接神经网络中,每个神经元都和上一层的所有神经元彼此连接,这会导致网络的参数量非常大,难以实现复杂数据的处理。为了改善这种情况,卷积神经网络应运而生。
一、卷积
在信号处理中,卷积被定义为一个函数经过翻转和移动后与另一个函数的乘积的积分。
那卷积具体卷了什么呢?我们用f函数表示进食,g函数表示消化。如果我们不考虑消化的话,如果想求14点的时候我们胃里面剩什么,只需要将f(t)在0点到14点求积分。但现在问题是,我们的胃是一直消化的。
假如,我们在12点的时候吃进去一碗米饭,而在14点的时候消化的已经剩一半了,这时候我们就需要用到消化函数g(t)。
g(t)代表消化曲线,最大值为1,在12点吃进去一碗米饭,在14点米饭还剩 f (12)·g (14 - 12),即 f (x)·g (t - x) 。那么14点之前吃进去的食物就可以进行求积分 .
从上述来看,我们可以把卷积理解为,一个系统的输入不稳定(在某时刻吃的东西多少不一定)、输出稳定(衰减/变化都符合g(t)函数),用卷积求系统存量。
2D卷积
在图像卷积中,过滤函数是不经过翻转的。卷积便是看很多像素点对某一个像素点如何产生的影响。2D卷积指的是在卷积操作过程中,卷积核只有两个维度——宽和高。卷积核与输入矩阵中对齐的区域,如下图灰色框所示。在对齐的区域里,输入矩阵与卷积核对应位置的元素值相乘,所有乘积再相加,得到一个标量值,为输出区域(0,0)位置的数值。接着卷积核向右平移,平移的距离由步长stride决定(stride为1,则向右平移一步),重复以上计算。
执行卷积的目的是从输入中提取有用的特征。在图像处理中,执行卷积操作有不同的过滤函数可供选择,每一种都有助于从输入图像中提取不同的方面或特征,如水平/垂直/对角边等。类似地,卷积神经网络通过卷积在训练期间使用自动学习权重的函数来提取特征。所有这些提取出来的特征,之后会被组合在一起做出决策。同时,卷积操作还具有权重共享(weights sharing)和平移不变性(translation invariant),可以考虑像素空间的关系。
一个输入图像在连续经过几次卷积操作之后,输出的图像就变得很小了。当输出尺寸变成1x1的时候,就无法进行卷积运算了,这样的话我们难以构建较深的神经网络。况且,在某些场景当中,例如图像分割,我们并不希望图像每次在经过特征提取之后都变小。此外,卷积运算并没有充分利用边缘处的信息,边缘处的像素点只会参与一次卷积运算,影响一个输出结果;但中间区域的像素点会参与多次卷积运算,影响多个输出结果。而填充操作padding就会解决这些问题,当padding=1时,图像周围会填充1个像素,例如一个5x5的图像经过填充后会变成7x7的图像。
卷积计算后的图像输出尺寸大小计算公式如下:
多通道卷积(空间卷积)
在2D卷积的例子中,输入时单通道的二维数据。而对于实际的图片,输入数据往往是多通道的,比如RGB三通道的。多通道的卷积操作与单通道的类似,只是在构造卷积核时需要注意卷积核的通道个数要与输入数据通道数相同。而对于卷积层而言,也是如此,一个卷积层往往也是多个通道组成的,每个通道描述一个方面的特征。
生成一个输出通道,就需要将每一个卷积核应用到前一层的输出通道上,这是一个卷积核级别的操作过程。对所有的卷积核都重复这个过程以生成多通道,之后,这些通道组合在一起共同形成一个单输出通道。设输入层是一个 5 x 5 x 3 矩阵,它有 3 个通道。过滤器则是一个 3 x 3 x 3 矩阵。首先,过滤器中的每个卷积核都应用到输入层的 3 个通道,执行 3 次卷积后得到了尺寸为 3 x 3 的 3 个通道。如下图所示:
之后,这 3 个通道都合并到一起(元素级别的加法)组成了一个大小为 3 x 3 x 1 的单通道。这个通道是输入层(5 x 5 x 3 矩阵)使用了过滤器(3 x 3 x 3 矩阵)后得到的结果。
同样,我们也可以将这个过程视作将一个 3D 过滤器矩阵滑动通过输入层,这个输入层和过滤器的深度都是相同的,即通道数=卷积核数。这个 3D 过滤器仅沿着 2 个方向(图像的高和宽)移动,这也是为什么 3D 过滤器即使通常用于处理 3D 体积数据,但这样的操作还是被称为 2D 卷积。假设,输入图像和卷积核的通道数为3,卷积核尺寸为3x3x3(宽x高x通道数),这时候将一个3D过滤器矩阵对图像沿着高和宽作卷积,通道数为1的卷积核是进行9个像素点的计算,而通道数为3的卷积核是进行27个像素点的计算。
多卷积核卷积
在实际神经网络中,每一层都会有多个卷积核参与运算。每个卷积核分别于输入卷积得到一个单通道的输出,最后多个单通道的输出拼在一起得到多通道输出。
单个卷积核只能提取单一特征,要想利用卷积核提取更多的特征,需要增加卷积核数量。r如果需要提取100个特征,卷积层需要100个卷积核,假设卷积核大小为4,则共需要4*100个参数。
如何进行多通道图的多核卷积呢? 对多通道图进行一个核一个核地卷积,最后生成n个特征图,将这些特征图拼接在一起最终可以得到2x2xn的特征图。
3D卷积
上一节中最后一张图虽然实现了空间卷积,但是本质上它还是2D卷积。而在 3D 卷积与2D卷积相比,多了一个时间的维度。而且3D卷积的过滤器深度要比输入层深度小,即卷积核大小<通道大小。这样做的结果是,3D 过滤器可以沿着所有 3 个方向移动,即高、宽及图像通道。
每个位置经过元素级别的乘法和算法都得出一个数值。由于过滤器滑动通过 3D 空间,输出的数值同样也以 3D 空间的形式呈现,最终输出一个 3D 数据。如下图所示:
1x1卷积
1x1卷积核通常会拿来对输入数据的通道做约简,每个1x1卷积核想当于在输入数据的通道上做一个降维(经过一个神经元个数为1的全连接层),从而相当于大幅度降低了特征图的数量,但不影响特征图的结构。1x1卷积表面上好像只是feature map每个值乘了一个数,但实际上不仅仅如此,由于会经过激活层,所以实际上是进行了非线性映射,其次就是可以改变feature 的channel数目。
经过大小为 1 x 1 x D 的过滤器的 1 x 1 卷积,输出通道的维度为 H x W x 1。如果我们执行 N 次这样的 1 x 1 卷积,然后将这些结果结合起来,我们能得到一个维度为 H x W x N 的输出层。在执行计算昂贵的 3 x 3 卷积和 5 x 5 卷积前,往往会使用 1 x 1 卷积来减少计算量。此外,它们也可以利用调整后的线性激活函数来实现双重用途。
二、 反卷积(转置卷积 Transposed Convolutions)
卷积不会增大输入的高和宽,通常要么不变、要么减半。但是在语义分割这种任务上,仅仅使用卷积无法进行像素级的输出,这时候就可以用到转置卷积来增大输入高和宽。反卷积是卷积的逆操作。
在反卷积进行的时候,也需要滑动操作。将输入图像上的0、1、2、3分别与卷积核进行相乘操作,得到结果后在与输出图像相同尺寸的框图上进行滑动,最终将这些结果进行相加。
为什么反卷积又叫做转置卷积呢?对于一个卷积操作,可以构造一个V使得卷积等价于矩阵乘法
,其中
是
对应的向量版本。转置卷积则是将卷积操作
等价于
,如果
的尺寸为1xm,
的尺寸为1xn,则
的尺寸为mxn。如果卷积将输入从
变成了
,同样超参数的转置卷积则从
变成了
,卷积一般是做下采样,转置卷积通常用作上采样。需要注意的是,虽然转置卷积可以增加特征图的空间尺寸,但是它不等同于传统意义上的上采样或者插值,因为它引入了非线性,转置卷积层在增加特征图尺寸的同时,通过学习卷积核的权重,能够保留或增加信息内容。
转置卷积也是一种卷积。当填充为0,步幅为1时,将输入填充k-1(k是核窗口),将核矩阵上下、左右翻转,然后做正常卷积(填充0、步幅1),可以得到结果等价于转置卷积。
当填充为p,步幅为1时,将输入填充k-p-1(k是核窗口),将核矩阵上下、左右翻转,然后做正常卷积(填充0、步幅1),可以得到结果等价于转置卷积。
当填充为p,步幅为s时,在行和列之间插入s-1行或列,将输入填充k-p-1(k是核窗口),将核矩阵上下、左右翻转,然后做正常卷积(填充0、步幅1),可以得到结果等价于转置卷积。
转置卷积输出特征图尺寸计算公式如下:
三、 分组卷积(Group convolution)
Group convolution 分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。
在传统的 2D 卷积中,通过应用 128 个过滤器(每个过滤器的大小为 3 x 3 x 3),大小为 7 x 7 x 3 的输入层被转换为大小为 5 x 5 x 128 的输出层。针对通用情况,可概括为通过应用 Dout 个卷积核(每个卷积核的大小为 h x w x Din),可将大小为 Hin x Win x Din 的输入层转换为大小为 Hout x Wout x Dout 的输出层。
而在分组卷积中,过滤器被拆分为不同的组,每一个组都负责具有一定深度的传统 2D 卷积的工作。一个过滤器被拆分为 2 个过滤器组的分组卷积。在每个过滤器组中,其深度仅为名义上的 2D 卷积的一半(Din / 2),而每个过滤器组都包含 Dout /2 个过滤器。第一个过滤器组(红色)对输入层的前半部分做卷积([:, :, 0:Din/2]),第二个过滤器组(蓝色)对输入层的后半部分做卷积([:, :, Din/2:Din])。最终,每个过滤器组都输出了 Dout/2 个通道。整体上,两个组输出的通道数为 2 x Dout/2 = Dout。之后,我们再将这些通道堆叠到输出层中,输出层就有了 Dout 个通道。
四、扩张卷积(空洞卷积 Dilated Convolutions)
空洞卷积又叫扩张卷积,是一种特殊的卷积运算。与标准卷积不同的是,在卷积核尺寸、步长、填充之外,又引入另一个卷积层的参数——扩张率(膨胀率)。膨胀率定义了内核中值之间的间距。扩张速率为2的3x3内核将具有与5x5内核相同的视野,而只使用9个参数。 使用5x5内核并删除每个间隔的行和列,如下图所示:
为什么要增加采样间隔呢?空洞卷积最初被提出时,是为了解决图像分割中一些特定的问题,特别是语义分割。图像分割做的是像素级的预测,模型需要精确地预测出图像中地每个像素所属的类别,这就需要模型具有较大的感受野,以便捕捉到图像中上下文信息。同时,图像分割需要保持高分辨率的输出,传统的神经网络需要经过卷积层和池化层降低图像分辨率,然后再经过上采样操作还原输入尺寸,这个过程增大了感受野但也会导致细节丢失。空洞卷积便可缓解这个问题,增大感受野的同时,保持特征图的尺寸不变,通过膨胀率卷积核可以在不增加参数数量和计算量的条件下覆盖更大的感受野,这样网络就可以捕捉到图像中的长距离依赖关系,同时又可以保持较高的空间分辨率。
直观上,空洞卷积通过在卷积核部分之间插入空间让卷积核“膨胀”。这个增加的参数 (空洞率)表明了我们想要将卷积核放宽到多大。当 膨胀率为1,2,4 时的卷积核大小,其中当膨胀率为1时,空洞卷积就变成了一个标准的卷积。
在图像中,3 x 3 的红点表明经过卷积后的输出图像的像素是 3 x 3。虽然三次空洞卷积都得出了相同维度的输出图像,但是模型观察到的感受野是不同的。膨胀率为1时,感受野为 3 x 3;膨胀率为2时,感受野是 7 x 7;膨胀率为3时,感受野增至 15x15。伴随这些操作的参数数量本质上是相同的,不需要增加参数运算成本就能观察大的感受野。因此,空洞卷积常被用以低成本地增加输出单元上的感受野,同时还不需要增加卷积核大小,当多个空洞卷积一个接一个堆叠在一起时,这样是有效的。
五、可分离卷积
空间可分离卷积(separable convolution)
空间可分离卷积就是再空间维度对卷积核进行拆分,将一个标准卷积核拆为一个个小卷积核,最终一个标准的卷积运算可以转换为多个顺序执行的卷积运算。
例如,一个矩阵A可以拆分为B和C的外积。那么,用A作为卷积核对图像作卷积就等价于先用B作为卷积核对图像作卷积,然后再用C作为卷积核对图像作卷积。
一般而言,在一个可分离卷积中,我们可以将内核操作拆分成多个步骤。我们用y = conv(x,k)表示卷积,其中y是输出图像,x是输入图像,k是内核。这一步很简单。接下来,我们假设k可以由下面这个等式计算得出:k = k1.dot(k2)。这将使它成为一个可分离的卷积,因为我们可以通过对k1和k2做2个一维卷积来取得相同的结果,而不是用k做二维卷积。
以通常用于图像处理的Sobel内核为例。你可以通过乘以向量[1,0,-1]和[1,2,1] .T获得相同的内核。在执行相同的操作时,你只需要6个而不是9个参数。(如下所示,其实有点类似矩阵的分解,在线性系统的时候学过类似的)
比起卷积,空间可分离卷积要执行的矩阵乘法运算也更少。假设我们现在在 m x m 卷积核、卷积步长=1 、填充=0 的 N x N 图像上做卷积。传统的卷积需要进行 (N-2) x (N-2) x m x m 次乘法运算,而空间可分离卷积只需要进行 N x (N-2) x m + (N-2) x (N-2) x m = (2N-2) x (N-2) x m 次乘法运算。空间可分离卷积与标准的卷积的计算成本之比为:
深度可分离卷积(depthwise separable convolution)
深度可分离卷积和空间可分离卷积类似,也是将标准卷积运算拆分为多个卷积运算,深度维度指的是通道维度,深度可分离卷积是在通道维度上对标准卷积进行拆分处理。一个大小为 w x h x c的输入,经过co个wk x hk x c的卷积核进行标准卷积运算,假设得到大小为a x b x co的输出,整个运算过程中的运算量等于wk x hk x c x co。
同样大小的输入和输出,换做深度可分离卷积是如何做的呢?首先,对输入逐通道卷积,分别提取输入的每个通道上的特征。
但此时,各通道上的特征是独立的,还没有得到融合因此需要逐点卷积,使用一个1 x 1 x c的卷积核对深度卷积得到的特征图进行卷积运算,可以得到一个1 x a x b的输出,此时的输出已经融合了c个通道的输出。
如果用co个1 x 1 x c的卷积核对特征图进行卷积运算,此时的输出特征图变为a x b x co。整个过程的参数量为 wk x hk x 1 x c + 1 x 1 x c x co, 大大缩减了计算量和参数量。
参考资料:
7.5多通道多卷积核_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1q34y1V7p4/?spm_id_from=333.337.search-card.all.click&vd_source=0dc0c2075537732f2b9a894b24578eed各种卷积层的理解(深度可分离卷积、分组卷积、扩张卷积、反卷积)_分层卷积-CSDN博客
https://blog.csdn.net/gwplovekimi/article/details/89890510【深度学习 搞笑教程】22 卷积运算过程(单通道 多通道 多卷积核)| 草履虫都能听懂 零基础入门 | 持续更新_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1de411H7s8/?spm_id_from=333.337.search-card.all.click&vd_source=0dc0c2075537732f2b9a894b24578eed卷积神经网络原理 - 12 - 有趣的1x1卷积核_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1Q5411d7hz?spm_id_from=333.788.videopod.sections&vd_source=0dc0c2075537732f2b9a894b24578eed【深度学习 搞笑教程】26 反卷积 空洞卷积 可分离卷积 | 草履虫都能听懂 零基础入门 | 持续更新_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV19x4y1E7yA/?spm_id_from=333.337.search-card.all.click&vd_source=0dc0c2075537732f2b9a894b24578eed47 转置卷积【动手学深度学习v2】_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV17o4y1X7Jn/?spm_id_from=333.337.search-card.all.click&vd_source=0dc0c2075537732f2b9a894b24578eed
相关文章:
【深度学习】各种卷积—卷积、反卷积、空洞卷积、可分离卷积、分组卷积
在全连接神经网络中,每个神经元都和上一层的所有神经元彼此连接,这会导致网络的参数量非常大,难以实现复杂数据的处理。为了改善这种情况,卷积神经网络应运而生。 一、卷积 在信号处理中,卷积被定义为一个函数经过翻转…...
pytorch 融合 fuse 学习笔记
目录 fuse_lora 作用是什么 fuse_modules源码解读 fuse_lora 作用是什么 在深度学习模型微调场景下(与 LoRA 相关) 参数融合功能 在使用 LoRA(Low - Rank Adaptation)对预训练模型进行微调后,fuse_lora函数的主要作…...
41 基于单片机的小车行走加温湿度检测系统
目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采样DHT11温湿度传感器检测温湿度,滑动变阻器连接数码转换器模拟电量采集传感器, 电机采样L298N驱动,各项参数通过LCD1602显示&#x…...
GitLab: You cannot create a branch with a SHA-1 or SHA-256 branch name
最近在迁移git库,把代码从gerrit迁移到gitlab,有几个库报错如下: GitLab: You cannot create a branch with a SHA-1 or SHA-256 branch name ! [remote rejected] refs/users/73/373/edit-95276/1 -> refs/users/73/373/edit-95276/1 (p…...
YOLOv9改进,YOLOv9引入TransNeXt中的ConvolutionalGLU模块,CVPR2024,二次创新RepNCSPELAN4结构
摘要 由于残差连接中的深度退化效应,许多依赖堆叠层进行信息交换的高效视觉Transformer模型往往无法形成足够的信息混合,导致视觉感知不自然。为了解决这个问题,作者提出了一种聚合注意力(Aggregated Attention),这是一种基于仿生设计的token混合器,模拟了生物的中央凹…...
TorchMoji使用教程/环境配置(2024)
TorchMoji使用教程/环境配置(2024) TorchMoji简介 这是一个基于pytorch库,用于将文本分类成不同的多种emoji表情的库,适用于文本的情感分析 配置流程 从Anaconda官网根据提示安装conda git拉取TorchMoji git clone https://gi…...
uniapp运行时,同步资源失败,未得到同步资源的授权,请停止运行后重新运行,并注意手机上的授权提示。
遇到自定义基座调试时安装无效或无反应?本文教你用 ADB 工具快速解决:打开 USB 调试,连接设备,找到应用包名,一键卸载问题包,清理干净后重新运行调试基座,轻松搞定! 问题场景&#…...
uniapp中父组件调用子组件方法
实现过程(setup语法糖形式下) 在子组件完成方法逻辑,并封装。在子组件中使用defineExpose暴露子组件的该方法。在父组件完成子组件ref的绑定。通过ref调用子组件暴露的方法。 子组件示例 <template> </template><script se…...
腾讯云 AI 代码助手:单元测试应用实践
引言 在软件开发这一充满创造性的领域中,开发人员不仅要构建功能强大的软件,还要确保这些软件的稳定性和可靠性。然而,开发过程中并非所有任务都能激发创造力,有些甚至是重复且乏味的。其中,编写单元测试无疑是最令人…...
ArcGIS栅格影像裁剪工具
1、前言 在最近的栅格转矢量处理过程中,发现二值化栅格规模太大,3601*3601,并且其中的面元太过细碎,通过arcgis直接栅格转面有将近几十万的要素,拿这样的栅格数据直接运行代码,发现速度很慢还难以执行出来结…...
VueWordCloud标签云初实现
文章目录 VueWordCloud学习总结安装初使用在组件中注册该组件简单使用项目中实现最终实现效果 VueWordCloud学习总结 本次小组官网的项目中自己要负责标签模块,想要实现一个标签云的效果,搜索了很多,发现vue有一个VueWordCloud库,…...
AI数据分析工具(二)
豆包-免费 优点 强大的数据处理能力: 豆包能够与Excel无缝集成,支持多种数据类型的导入,包括文本、数字、日期等,使得数据整理和分析变得更加便捷。豆包提供了丰富的数据处理功能,如数据去重、填充缺失值、转换格式等…...
sizeof和strlen区分,(好多例子)
sizeof算字节大小 带\0 strlen算字符串长度 \0之前...
求100之内的素数-多语言
目录 C 语言实现 方法 1: 使用 for 循环 方法 2: 使用埃拉托斯特尼筛法 方法 3: 使用自定义判断素数 Python 实现 方法 1: 使用自定义函数判断素数 方法 2: 使用埃拉托斯特尼筛法(Sieve of Eratosthenes) 方法 3: 使用递归方法 Java 实现 方法…...
0.shell 脚本执行方式
1.脚本格式要求 🥑脚本以 #!/bin/bash 开头 🥦 脚本要有可执行权限 2.执行脚本的两种方式 🥬 方式1:赋予x执行权限 🥒 方式2: sh执行 ...
Web实时通信@microsoft/signalr
概要说明 signalr 是微软对 websocket技术的封装; build() 与后端signalR服务建立链接;使用 on 方法监听后端定义的函数;ps:由后端发起,后端向前端发送数据使用 invoke 主动触发后端的函数;ps:由前端发起&a…...
智截违规,稳保安全 | 聚铭视频专网违规外联治理系统新品正式发布
“千里之堤,毁于蚁穴”。 违规外联作为网络安全的一大隐患, 加强防护已刻不容缓。 这一次, 我们带着全新的解决方案来了 ——聚铭视频专网违规外联治理系统, 重磅登场!...
博弈论算法详解与Python实现
目录 博弈论算法详解与Python实现第一部分:博弈论简介与算法概述1.1 博弈论概述1.2 博弈论算法概述第二部分:纳什均衡算法2.1 纳什均衡的定义2.2 纳什均衡算法的实现2.2.1 算法思路2.2.2 Python实现2.2.3 设计模式分析第三部分:囚徒困境问题的博弈论算法3.1 囚徒困境的定义3…...
Python学习笔记之IP监控及告警
一、需求说明 作为一名运维工程师,监控系统必不可少。不过我们的监控系统往往都是部署在内网的,如果互联网出口故障,监控系统即使发现了问题,也会告警不出来,这个时候我们就需要补充监控措施,增加从外到内的…...
2024/11/30 RocketMQ本机安装与SpringBoot整合
目录 一、RocketMQ简介 1.1、核心概念 1.2、应用场景 1.3、架构设计 2、RocketMQ Server安装 3、RocketMQ可视化控制台安装与使用 4、SpringBoot整合RocketMQ实现消息发送和接收 4.1、添加maven依赖 4.2、yaml配置 4.3、生产者 4.4、消费者 4.5、接口 4.6、接口测试 一、R…...
解决“磁盘已插上,但Windows系统无法识别“问题
电脑上有2块硬盘,一块是500GB的固态硬盘,另一块是1000GB的机械硬盘,按下开机键,发现500G的固态硬盘识别了,但1000GB的机械硬盘却无法识别。后面为了描述方便,将"500GB的固态硬盘"称为X盘…...
解决vue3,动态添加路由,刷新页面出现白屏或者404
解决vue3,动态添加路由,刷新页面出现白屏或者404 1.解决出现刷新页面,出现404的情况 1.问题的出现 在做毕设的时候,在权限路由得到时候,我问通过router**.**addRoute(item)的方式,在路由守卫动态添加路由…...
大数据新视界 -- 大数据大厂之 Hive 数据质量监控:实时监测异常数据(下)(18/ 30)
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
可视化建模以及UML期末复习篇----相关软件安装
作为一个过来人,我的建议是别过来。 一、可视化建模 <1>定义: 官方:一种使用图形符号来表示系统结构和行为的建模技术。 我:其实说白了就是把工作流程用图形画出来。懂不? <2>作用: 提高理解和分析复杂系统的能力。促…...
Flask项目入门—request以及Response
导入 request(请求)以及Response(响应)通过flask导入,如下: from flask import Blueprint, request, render_template, \jsonify, make_response, Response, redirect, url_for, abort requestÿ…...
【VUE3】【Naive UI】<n-button> 标签
【VUE3】【Naive UI】<n-button> 标签 **type**- 定义按钮的类型,这会影响按钮的颜色和样式。**size**- 设置按钮的大小。**disabled**- 布尔值,控制按钮是否处于禁用状态。**loading**- 布尔值,表示按钮是否处于加载状…...
接口测试工具:reqable
背景 在众多接口测试工具中挑选出一个比较好用的接口测试工具。使用过很多工具,如Postman、Apifox、ApiPost等,基本上是同类产品,一般主要使用到的功能就是API接口和cURL,其他的功能目前还暂未使用到。 对比 性能方面ÿ…...
autoware.universe源码略读(3.20)--perception:radar_tracks_msgs_converter
autoware.universe源码略读3.20--perception:radar_tracks_msgs_converter Overviewradar_tracks_msgs_converter_node Overview 这里看起来是非常简单的一个模块,作用就是把radar_msgs/msg/RadarTracks类型的消息数据转换到autoware_auto_perception_msgs/msg/Tra…...
【论文阅读】Multi-level Semantic Feature Augmentation for One-shot Learning
用于单样本学习的多层语义特征增强 引用:Chen, Zitian, et al. “Multi-level semantic feature augmentation for one-shot learning.” IEEE Transactions on Image Processing 28.9 (2019): 4594-4605. 论文地址:下载地址 论文代码:https:…...
说说Elasticsearch查询语句如何提升权重?
大家好,我是锋哥。今天分享关于【说说Elasticsearch查询语句如何提升权重?】面试题。希望对大家有帮助; 说说Elasticsearch查询语句如何提升权重? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中&…...
jeecgbootvue2重新整理数组数据或者添加合并数组并遍历背景图片或者背景颜色
想要实现处理后端返回数据并处理,添加已有静态数据并遍历快捷菜单背景图 遍历数组并使用代码 需要注意: 1、静态数组的图片url需要的格式为 require(../../assets/b.png) 2、设置遍历背景图的代码必须是: :style"{ background-image: url( item…...
Vue-常用指令-02
目录 Vue常用指令 实操 v-bind、v-model v-bind v-model 总结 v-on 总结 编辑 v-if、v-show v-if v-show 总结 v-for 总结 综合案例 编辑 Vue常用指令 Vue指令:在HTML文件或者HTML标签中涉及的带有v-..的指令都是Vue的指令。不同指令不同含义不同作用。v-…...
ESLint 配置文件全解析:格式、层叠与扩展(3)
配置文件系统处于一个更新期,存在两套配置文件系统,旧的配置文件系统适用于 v9.0.0 之前的版本,而新的配置文件系统适用于 v9.0.0之后的版本,但是目前还处于 v8.x.x 的大版本。 配置文件格式 在 ESLint 中,支持如下格…...
曲面单值化定理
曲面单值化定理(Uniformization Theorem)是复分析、几何和拓扑学中的一个重要结果。它为紧致黎曼曲面提供了标准化的几何结构,是研究复几何和代数几何的基础。以下是对曲面单值化定理的详细介绍以及其应用场景。 曲面单值化定理的陈述 基本版…...
数据预处理方法—数据增强、数据平衡
1.数据增强 1.1 原理 通过对数据进行变换增加数据的多样性,提高模型泛化能力,常用于图像和文本处理任务。 1.2 核心公式 例如:图像旋转: 其中,R()是旋转矩阵,是旋转角度。 1.3 Python案例 下面是一个…...
从扩散模型开始的生成模型范式演变--SDE
SDE是在分数生成模型的基础上,将加噪过程扩展时连续、无限状态,使得扩散模型的正向、逆向过程通过SDE表示。在前文讲解DDPM后,本文主要讲解SDE扩散模型原理。本文内容主要来自B站Up主deep_thoughts分享视频Score Diffusion Model分数扩散模型…...
基于Java Springboot 协同过滤算法音乐推荐系统
一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue2、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA 数据库&#x…...
【NLP高频面题 - LLM架构篇】旋转位置编码RoPE相对正弦位置编码有哪些优势?
【NLP高频面题 - LLM架构篇】旋转位置编码RoPE相对正弦位置编码有哪些优势? 重要性:⭐⭐⭐ 💯 NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练…...
win10中使用ffmpeg的filter滤镜
1 给视频加文字水印 1.1 添加播放时间 ffmpeg -i input.mp4 -vf "drawtextfontfileC\\:/Windows/fonts/consola.ttf:fontsize30:fontcolorwhite:timecode00\:00\:00\:00:rate25:textTCR\::boxcolor0x000000AA:box1:x20:y20" -y output.mp4 在视频的x20:y20位置添加t…...
shell编程7,bash解释器的 for循环+while循环
声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...
Flutter 1.2:flutter配置gradle环境
1、在android的模块中进行gradle环境配置 ①在 gradle-wrapper.properties文件中将url配置为阿里云镜像,因为gradle的服务器在国外,国内下载非常慢,也可在官网进行下载 gradle版本下载 gradle版本匹配 阿里云镜像gradle下载 可以通过复制链…...
LVS 负载均衡面试题及参考答案
目录 什么是 LVS 负载均衡?它的主要作用是什么? 为什么要使用 LVS 进行负载均衡? LVS 有哪些组成部分? 简述 LVS 的架构。 LVS 中有哪两种典型的架构?请简要说明它们的特点。 LVS 的工作原理是怎样的?简述 LVS 的工作原理。 解释 LVS 中的虚拟服务器(VS)概念。 …...
GaussDB(类似PostgreSQL)常用命令和注意事项
文章目录 前言GaussDB(类似PostgreSQL)常用命令和注意事项1. 连接到GaussDB数据库2. 查看当前数据库中的所有Schema3. 进入指定的Schema4. 查看Schema下的表、序列、视图5. 查看Schema下所有的表6. 查看表结构7. 开始事务8. 查询表字段注释9. 注意事项&a…...
c语言编程1.17蓝桥杯历届试题-回文数字
题目描述 观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。 本题要求你找到一些5位或6位的十进制数字。满足如下要求: 该数字的各个数位之…...
MVC core 传值session
MVC Entity Framework MVC Core session 》》 需要添加 Session 服务 和 Session中间件 builder.Services.AddSession(); app.UseSession(); 》》》控制器中 public IActionResult Privacy(){HttpContext.Session.SetString("key", "123");return View(…...
六:安装服务-compute node
一:工具、环境准备-controller node 二:OpenStack环境准备-controller node 三:安装服务-controller node 四:工具、环境准备-compute node 五:OpenStack环境准备-compute node 六:安装服务-compute node 七…...
【050】基于51单片机计步器【Keil程序+报告+原理图】
☆、设计硬件组成:51单片机最小系统ADXL345三轴加速度传感器LCD1602液晶显示AT24C02存储芯片按键控制。 1、本设计采用STC89C51/52、AT89C51/52、AT89S51/52作为主控芯片,LCD1602实时显示; 2、设计采用ADXL345三轴加速度传感器实现对行走步…...
qt QGraphicsPolygonItem详解
1、概述 QGraphicsPolygonItem是Qt框架中QGraphicsItem的一个子类,它提供了一个可以添加到QGraphicsScene中的多边形项。通过QGraphicsPolygonItem,你可以定义和显示一个多边形,包括其填充颜色、边框样式等属性。QGraphicsPolygonItem支持各…...
OpenAI浅聊爬虫
前提 OpenAI越来越火,大有要干掉一片程序员的架势。在此,我们看看Sider(本文使用的OpenAI工具)对爬虫的看法。 爬虫的应用场景 爬虫技术(Web Scraping)有广泛的应用场景,以下是一些主要的应用…...
Java学习,ArrayList
ArrayList 是 Java 集合框架(Collections Framework)中的一个重要类,它实现了 List 接口。ArrayList 基于动态数组的数据结构,能够根据需要自动调整其大小。 关键特性 动态数组:ArrayList 底层使用数组来存储元素&…...