首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CNN中神奇的1x1卷积

我们知道在CNN网络中,会有各种size的卷积层,比如常见的3x3,5x5等,卷积操作是卷积核在图像上滑动相乘求和的过程,起到对图像进行过滤特征提取的功能。...但是我们也会遇见1x1的卷积层,比如在GoogleNet中的Inception模块,如下图: ? 我们看到上图中有4个1x1的卷积,那么他们起着什么作用呢?为什么要这样做呢?...1x1卷积作用 增加非线性 1x1的卷积核的卷积过程相当于全链接层的计算过程,并且还加入了非线性激活函数,从而可以增加网络的非线性,使得网络可以表达更加复杂的特征。...我们从一个实例来看:假如前一层输入大小为28 x 28 x 192,输出大小为28 x 28 x 32,如下: 减少计算量: 不引入1x1卷积的卷积操作如下: ?...,引入1x1卷积后的计算量大约 是不引入的1/10。

2.2K10

【深度学习】CNN 中 1x1 卷积核的作用

最近研究 GoogLeNet 和 VGG 神经网络结构的时候,都看见了它们在某些层有采取 1x1 作为卷积核,起初的时候,对这个做法很是迷惑,这是因为之前接触过的教材的例子中最小的卷积核是 3x3...,那么,1x1 的卷积核有什么意义呢?...1、增加网络的深度 这个就比较好理解了,1x1 的卷积核虽小,但也是卷积核,加 1 层卷积,网络深度自然会增加。 其实问题往下挖掘,应该是增加网络深度有什么好处?为什么非要用 1x1 来增加深度呢?...我们知道,卷积后生成图片的尺寸受卷积核的大小和跨度影响,但如果卷积核是 1x1 ,跨度也是 1,那么生成后的图像大小就并没有变化。...我们可以直观地感受到卷积过程中:卷积后的的 featuremap 通道数是与卷积核的个数相同的 所以,如果输入图片通道是 3,卷积核的数量是 6 ,那么生成的 feature map 通道就是 6,这就是升维

1.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    由浅入深CNN中卷积层与转置卷积层的关系

    导语:转置卷积层(Transpose Convolution Layer)又称反卷积层或分数卷积层,在最近提出的卷积神经网络中越来越常见了,特别是在对抗生成神经网络(GAN)中,生成器网络中上采样部分就出现了转置卷积层...举个栗子,当我们在前馈神经网络中学习一个4*4的图片中是否有横折图案时,使用下图中4个训练数据进行训练,那么最终只会对5,6,9,a这四个节点的权重有所调节,然后如果出现如下图最后一张图片作为测试时,就会导致网络无法识别...转置卷积层 讲完卷积层后,我们来看CNN中另一个进行卷积操作的层次转置卷积层,有时我们也会称做反卷积层,因为他的过程就是正常卷积的逆向,但是也只是size上的逆向,内容上不一定,所以有些人会拒绝将两者混为一谈...,大的正方形中数字1只参与小正方形中数字1的计算,那么在转置卷积中,大正方形的1也只能由小正方形的1生成,这就是逆向的过程。...给出的动图,会发现右边和下边的填充区域我们并没有进行卷积运算,因为向下取整而忽略了,所以我们在转置卷积时需要将这部分加回来,因此,在PyTorch中convTranspose函数还有一个参数output_padding

    4K111

    pytorch中的卷积操作详解

    首先说下pytorch中的Tensor通道排列顺序是:[batch, channel, height, width] 我们常用的卷积(Conv2d)在pytorch中对应的函数是: torch.nn.Conv2d...N为非整数的情况(例如在alexnet,googlenet网络的第一层输出),再例如输入的矩阵 H=W=5,卷积核的F=2,S=2,Padding=1。...经计算我们得到的N =(5 – 2 + 2*1)/ 2 +1 = 3.5 此时在Pytorch中是如何处理呢,先直接告诉你结论:在卷积过程中会直接将最后一行以及最后一列给忽略掉,以保证N为整数,此时N...,就能得到我们的输出矩阵,需要注意的是pytorch中的卷积默认是带有bias的,所以计算卷积后需要加上bias偏量。...,在pytorch的卷积过程中,当通过N = (W − F + 2P ) / S + 1计算式得到的输出尺寸非整数时,会通过删除多余的行和列来保证卷积的输出尺寸为整数。

    60340

    PyTorch中Linear层的原理 | PyTorch系列(十六)

    文 |AI_study 原标题:PyTorch Callable Neural Networks - Deep earning In Python Linear 层是如何实现的 在上一篇文章中,我们学习了...当输入特征被一个Linear 层接收时,它们以一个 展平成一维张量的形式接收,然后乘以权重矩阵。这个矩阵乘法产生输出特征。 让我们看看代码中的一个例子。...二、使用PyTorch线性层进行转换 让我们看看如何创建一个PyTorch的 Linear 层来完成相同的操作。...我们将权重矩阵放在PyTorch LinearLayer类中,是由PyTorch创建。PyTorch LinearLayer类使用传递给构造函数的数字4和3来创建一个3 x 4的权重矩阵。...这个事实是一个重要的PyTorch概念,因为在我们的层和网络中,__call __()与forward()方法交互的方式是用的。 我们不直接调用forward()方法,而是调用对象实例。

    10.2K81

    pytorch自然语言处理之Pooling层的句子分类

    Pooling作为最简单的层其实也可以作为句子分类任务。Pooling有很多种,max_Pooling,avg_Pooling,min_Pooling等。...常用的还是max_Pooling:取同维度的最大值。 先看看流程图: ?...这里的Linear Layer后面应该经过一个Softmax的,可是由于交叉熵cross_entropy里隐含有Softmax,这里我就没有画了。 第一步搭建网络 ?...这里除了划线的和类的名字外,其他都是pytorch固定模板。__init__就是搭建网络的函数,forward是数据怎么在你刚搭建的网络中流动的写出来就行,注意数据矩阵的维数,要前后对上。...这里的Embeding层就是把现实客观特征转成电脑识别的特征,也就是特征向量化。 第二步读入数据并将数据数字化 数据是这个样子: ? 前面文本后面类别 ? 读取文本的类 ?

    789120

    PyTorch中手机相册图像的分类

    但是希望该模型仅输出数据集中具有的类数的预测(本例中为6)。因此仅用具有6个神经元的新线性层替换该模型中的最后一个线性层,输出6个类的预测。...初始卷积层中的滤镜学习简单,基本的特征,例如边缘,颜色和纹理;中间层的人可能会学习圆形和多边形等形状;而较深层的滤镜则可以学习更多复杂的图案,例如脸部或花瓣等。通过查看下面的图片,这将变得更加清晰。...可能不希望保留的是最后几个卷积和线性层中存在的滤波器。因此训练模型应该仅在最后几层(卷积层或线性层)上以较小的学习率在自定义数据集上微调模型。...还记得已经丢弃了预训练模型中的最后一个线性层,并添加了一个新神经元层,该神经元层数等于自定义数据集中的类数吗?...当这样做时,最后线性层的权重被随机初始化,一旦所有卷积层都经过训练(需要从输入图像中提取不同的特征),就需要适当地对其进行训练。

    1.7K20

    基于PyTorch的卷积神经网络经典BackBone(骨干网络)复现

    本次博客基于代码实战复现经典的Backbone结构,并基于PyTorch分享一些网络搭建技巧。 1.VGG 网络架构: VGG16网络由13层卷积层+3层全连接层构成。...更深的网络结构,相比于AlexNet只有5层卷积层,VGG系列加深了网络的深度,更深的结构有助于网络提取图像中更复杂的语义信息。...)的方法对不同卷积核提取的特征进行拼接 Inception基础的模块如图所示,使用3个不同尺寸的卷积核进行卷积运算,同时还包括一个最大池化,最后将这四个部分输出的结果进行通道拼接,传给下一层: 使用1x1...进一步减少了网络的参数: 2.2 PyTorch复现Inception v1: pytorch复现Inception基础模块 将卷积+激活函数作为一个基础的卷积组: 构造一个Inception模块:...基于此,FPN网络在特征提取的过程中融合了不同卷积层的特征,较好的改善了多尺度检测问题。

    1.4K40

    PyTorch +ResNet34实现 图像分类

    其中右图又称为“bottleneck design”,目的就是为了降低参数的数目,实际中,考虑计算的成本,对残差块做了计算优化,即将两个3x3的卷积层替换为1x1 + 3x3 + 1x1,如右图所示。...新结构中的中间3x3的卷积层首先在一个降维1x1卷积层下减少了计算,然后在另一个1x1的卷积层下做了还原,既保持了精度又减少了计算量。...第一个1x1的卷积把256维channel降到64维,然后在最后通过1x1卷积恢复,整体上用的参数数目:1x1x256x64 + 3x3x64x64 + 1x1x64x256 = 69632,而不使用bottleneck...33 x 3 = 99层,最后有个fc层(用于分类),所以1 + 99 + 1 = 101层,确实有101层网络;注:101层网络仅仅指卷积或者全连接层,而激活层或者Pooling层并没有计算在内;我们关注...训练与验证函数 训练函数将是 PyTorch 中的标准图像分类训练函数。进行前向传递,计算损失,反向传播梯度,并更新参数。 在每个 epoch 之后,该函数返回该 epoch 的损失和准确度。

    5K20

    Yolo目标检测算法综述

    YOLO将物体检测作为回归问题进行求解,速度比其他模型快。 背景误检率低。YOLO在训练和推理过程中能‘看到’整张图像的整体信息。 通用性强。YOLO对于艺术类作品中的物体检测同样适用。...YOLO 模型设计 YOLO检测网络包括24个卷积层和2个全连接层。...借鉴了GoogLeNet分类网络结构,不同的是,YOLO未使用inception module,而是使用1x1卷积层(此处1x1卷积层的存在是为了跨通道信息整合)+3x3卷积层简单替代。...除此之外还有一个更轻快的检测网络fast YOLO,它只有9个卷积层和2个全连接层。 YOLO 原理 若某个物体的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体。...TODO 模型修改:输出层使用 卷积层 替代YOLO的全连接层。是这样吗? 改进:YOLOv3 多尺度预测 (引入FPN)。

    88710

    轻松学Pytorch – 全局池化层详解

    全局池化 卷积神经网络可以解决回归跟分类问题,但是常见的卷积神经网络到最后都要通过全连接层实现分类,这个其实会导致很多时候神经元数目跟计算量在全连接层暴增,特别对一些回归要求比较高的网络往往会带来一些后遗症...所以陆陆续续有人提出了不同全连接层解决方案,最常见的两个就是把最后卷积层flatten改为全局最大/均值池化,对比一下这两种方式,图示如下: ?...但是pytorch中没有全局深度池化函数支持,这个是我在写一个程序时候才发现,后来经过一番折腾,在别人代码的基础上我改写 class DeepWise_Pool(torch.nn.MaxPool1d):...全局池化优点 关于使用GAP或者全局池化的好处,卷积神经网络在图像分类中,把卷积层作为特征提取,全链接层+softmax作为归回分类,这样方式会导致在全连接层输入神经元太多容易导致过拟合,所以Hinton...但是GAP是另外方式避免全连接层的处理,直接通过全局池化+softmax进行分类,它的优点是更加符合卷积层最后的处理,另外一个优点是GAP不会产生额外的参数,相比全连接层的处理方式,降低整个计算量,此外全局池化还部分保留来输入图像的空间结构信息

    4.5K20

    斯坦福NLP课程 | 第11讲 - NLP中的卷积神经网络

    PyTorch实现 [PyTorch实现] Pytorch中的实现:参数很好地对应前面讲到的细节 batch_size= 16 word_embed_size= 4 seq_len= 7 input...关于人、地点、数字、…… [用于句子分类的单层CNN] 一个卷积层和池化层的简单使用 词向量:\mathbf{x}_{i} \in \mathbb{R}^{k} 句子:\mathbf{x}_{1 :...,模型的训练会更加稳定 PyTorch:nn.BatchNorm1d 3.7 1x1卷积 [1 x 1 Convolutions] 1x1的卷积有作用吗?...1x1 卷积,即网络中的 Network-in-network (NiN) connections,是内核大小为1的卷积内核 1x1 卷积提供了一个跨通道的全连接的线性层 它可以用于从多个通道映射到更少的通道...1x1 卷积添加了额外的神经网络层,附加的参数很少 与全连接 (FC) 层不同——全连接(FC)层添加了大量的参数 3.8 CNN 应用:机器翻译 [CNN 应用:机器翻译] 最早成功的神经机器翻译之一

    90261

    Pytorch-多分类问题神经层和训练部分代码的构建

    本节使用交叉熵的知识来解决一个多分类问题。 本节所构建的神经网络不再是单层网络 ? 如图是一个十分类问题(十个输出)。...这里先建立三个线性层, import torch import torch.nn.functional as F # 先建立三个线性层结构 # 建立 784=>200=>200=>10的结构 w1...b2 = torch.randn(200, 200, requires_grad=True),\ torch.randn(200, requires_grad=True) # 每个层均具有...nn learning_rate = 1e-3 optimizer = optim.SGD([w1, b1, w2, b2, w3, b3], lr=learning_rate) # 这里优化器优化的目标是三种全连接层的变量...criteon = nn.CrossEntropyLoss() # 这里使用的是crossentropyloss 这里先要求掌握以上代码的书写 后续需会讲解数据读取、结果验证等其他部分代码。

    80220

    Pytorch-卷积神经网络的运算流程(中)

    而kernel中的3代表对input的x上的三个通道上均进行卷积运算。而multi-kernels中的16泛指包括了blur、edge等16个功能、3代表对每一个通道上的逐渐进行卷积运算。...这里要求可以从结果逆推出bias和kernel的参数值。 那么这种持续的叠加会输出什么结果呢,如下所示 ? 最初的小汽车经过多个卷积层后依次输出的结果如上,神经网络会从这上面提取到不同的特征结构。...这里一般认为第一层的feature map上得到的是一些低维的特征(整体模型、颜色、角度等),第二层的feature map上得到的是一些高维的特征(如棱形结构等),更高层的feature map上会得到一些更高维的特征...总而言之,通过不断地卷积,可以持续提取到不同的特征。 那么在pytorch中,是如何实现这种代码的编写?...# 这种神经网络结构的编写要用到nn.Conv2d # 该API意为进行2D的函数卷积层计算 import torch import torch.nn as nn layer = nn.Conv2d

    80310

    轻量级卷积神经网络的设计技巧

    在实际业务中,Retinanet仅需要检测证件,不涉及过多的类别物体的定位和分类,因此,我认为仅仅更换上述两个骨架网络来优化模型的性能是不够的,需要针对证件检测任务,专门设计一个更加轻量的卷积神经网络来提取...网络结构的碎片化会减少可并行计算 这些碎片化更多是指网络中的多路径连接,类似于short-cut,bottle neck等不同层特征融合,还有如FPN。...计算出网络各个层占有的MAC和参数量,将参数量和计算量“重”的卷积层替换成深度可分离卷积层,可以降低模型的参数量。...同样RELU没有必要每一个卷积后连接(需要实际训练考虑删减RELU)。 10. 善用1x1卷积 1x1卷积可以改变通道数,而不改变特征图的空间分辨率,参数量低,计算效率也高。...如使用kernel size=3,stride=1,padding=1,可以保证特征图的空间分辨率不变,1x1的卷积设置stride=1,padding=0达到相同的目的,而且1x1卷积运算的效率目前有很多底层算法支持

    1.3K10

    学界 | ECCV 2018 行为识别论文笔记之多纤维网络

    3D 输入,然后使用 3D 卷积网络进行处理,典型的如 C3D,I3D,ARTNet 等(当然也可以将光流作为 3D 网络的输入从而进一步提高效果)。...在该结构中,前后均为一个 1x1 的卷积进行降维和升维,中间则将通道进行分组,分别用几个 3x3 卷积核进行处理。这样的处理可以大大降低中间层的计算量,但是 1x1 卷积层依旧有很大的计算量。...该模块实际上是一个两层的 1x1 卷积,第一个卷积会将通道数量降低到 k 分之一,第二个卷积再升维,因此该模块的计算量是一层 1x1 卷积的 k/2 分之一。...不过,在文章中没看到作者具体设置的 k 值。 多纤维结构有效性的验证 接下来,作者通过在 ImageNet-1k 数据集上的图片分类实验来验证所提出的多纤维结构的有效性。...3D MF-Net 的模块结构和网络结构如下图所示: 可以看出,3D 和 2D 的多纤维模块结构基本一致,只是将卷积的维度升到了三维。为了降低计算量,两层卷积只有一层进行了时序上的卷积。

    1.3K10

    CNN模型之ShuffleNet

    Group convolution是将输入层的不同特征图进行分组,然后采用不同的卷积核再对各个组进行卷积,这样会降低卷积的计算量。...所以,实际上比如ResNeXt模型中1x1卷积基本上占据了93.4%的乘加运算。那么不如也对1x1卷积采用channel sparse connection,那样计算量就可以降下来了。...如图2-a所示,这是一个包含3层的残差单元:首先是1x1卷积,然后是3x3的depthwise convolution(DWConv,主要是为了降低计算量),这里的3x3卷积是瓶颈层(bottleneck...现在,进行如下的改进:将密集的1x1卷积替换成1x1的group convolution,不过在第一个1x1卷积之后增加了一个channle shuffle操作。...对于基本单元来说,其中瓶颈层,就是3x3卷积层的通道数为输出通道数的1/4,这和残差单元的设计理念是一样的。

    1.8K30
    领券