精华内容
下载资源
问答
  • 在卷积神经网络的最后,往往会出现一两层全连接层,全连接一般会把卷积输出的二维特征图转化成一维的一个向量,这是怎么来的呢?目的何在呢?

    正如上一篇文章所述,CNN的最后一般是用于分类是一两个全连接层,对于前面池化层输出的二维特征图是怎么转化成一维的一个向量的呢?

    从上图的结构中可以看到,最后两层是两个矩形,也就是一维向量,以MNIST手写数据集为例,上层输出的特征图(Feature Map)为14*14*64大小,经过一个全连接层(这里第一个全连接层的神经元设置为1024个)之后,变成了1*1024的向量。

    为什么维数降低了呢?别忘了全连接层的作用在于分类,所以最后需要进行各个类别的概率计算,也就是将该测试样本属于某一类别的可能性计算出来。也没有什么神秘之处,只要对每一张输入的特征图,用一个和图像一样大小的核卷积,这样整幅图就变成了一个数了,其实就是有64*1024个14*14的卷积核卷积出来的,如果厚度是64就是那64个核卷积完了之后相加即可,这样就能把一张图高度浓缩成一个数了。这也就是为什么经过全连接层之后变成一维向量的原因了。

    说起卷积核,我们来具体了解一下卷积核。在CNN中,卷积层的卷积核具有长、宽、深三个维度。卷积核本质上就是权重矩阵。

    卷积核的长、宽都是人为指定的,长 X 宽也被称为卷积核的尺寸,常用的尺寸为3X3,5X5等;卷积核的深度与当前图像的深度(feather map的张数)相同,所以指定卷积核时,只需指定其长和宽 两个参数。例如,在原始图像层 (输入层),如果图像是灰度图像,其feather map数量为1(MNIST为什么是28*28*1的原因,MNIST数据集中的图像都是灰度图),则卷积核的深度也就是1;如果图像是grb图像,其feather map数量为3(有3个色彩通道),则卷积核的深度也就是3。

    其实,这也是和全连接神经网络一样的地方,正是CNN基于权重共享的理念,减少了很多参数,可以看出,全连接的参数实在是太多了,这张图中就有14*14*64*1024个参数,而上面的卷积和池化过程最多也不过28*28*32,所以在后来看到的算法应用方面很多都规避了全连接层,目前主流的一个方法是全局平均值。也就是最后那一层的feature map(最后一层卷积的输出结果),直接求平均值。有多少种分类就训练多少层,这十个数字就是对应的概率或者叫置信度。MNIST数据集可以通过tensorflow框架中的TensorBoard进行可视化,如下图所示。

    CNN中的卷积层与全连接层都是计算点乘,所以全连接层和卷积层可以相互转换。卷积层转换成全连接层的过程就是将权值补0,增大矩阵的过程。正是基于卷积神经网络的共享理念,在转换之后会产生许多等值参数。当然,全连接层也可以变成卷积层。

    展开全文
  • 最后的全连接层还没有了解。 参考解释一下全连接层&CNN中全连接层是什么样的_GoodShot的专栏-CSDN博客 全连接层一般会把卷积输出的二位特征图转化成一维的一个向量。为了方便后面的分类和回归。 全连接:输入...

      之前学习CNN的时候只记录了卷积层、激励层、池化层。最后的全连接层还没有了解。

    参考解释一下全连接层&CNN中全连接层是什么样的_GoodShot的专栏-CSDN博客

    全连接层一般会把卷积输出的二位特征图转化成一维的一个向量。为了方便后面的分类和回归。

    全连接:输入的神经元和输出的神经元都要连接起来。

    输入和输出是通过卷积核连接的,也就是w权重。

    展开全文
  • 全连接层调参tricks

    2021-05-13 16:55:00
    我们做深度学习时往往要结合多种神经网络来构建模型,这种模型构建方式称之为混合神经网络模型,不管是CNN、RNN、BERT、RoBERTa还是混合神经网络模型,最后的最后一定要接一个全连接层来学习提取到的特征。全连接层...

    混合神经网络中全连接层的一些技巧

    我们做深度学习时往往要结合多种神经网络来构建模型,这种模型构建方式称之为混合神经网络模型,不管是CNN、RNN、BERT、RoBERTa还是混合神经网络模型,最后的最后一定要接一个全连接层来学习提取到的特征并转换为我们输出的维度(此处不讨论实现自注意力机制的全连接和Transformer中的全连接层)。全连接层的设置将最大化的挖掘模型的性能,怎么设置全连接层成了一个重点和难点。
    结合自身经验,以下是个人认为的tricks:

    1. 批归一化:nn.BatchNorm1d(dim)
      批归一化操作是为了将输入中所有特征约束在(0~1)之间,防止强特征数值过大导致忽略弱特征,不过视具体情况而定吧,有的时候输入本身就有强弱之分,这时你归一化反而消除了强特征,多试试。

    2. 隐藏层层数:视情况而定,和模型的复杂性成反比。
      我们都知道全连接层一般越多越好,但是必须有非线性激活函数和Dropout,否则再多的线性层也等价于一层,但是实际上层数越多,模型要学习的东西就越复杂,这个时候模型难拟合或者过拟合,尤其是对于复杂模型来说,全连接层往往不需要过深,设置1-2层即可。

    3. 神经元个数:第一层适当增加,后续逐层递减。
      根据一些论文,有如下tricks:
      1、隐藏单元的数量不应该超过输入层中单元的两倍[1]
      2、隐藏单元的大小应该介于输入单元和输出单元之间[2]
      3、神经元的数量应捕获输入数据集方差的70~90%[3]
      根据我的实践,第一层适当增加比如100个神经元会取得不错的效果,后续则逐层递减,最后一层就是我们要输出的特征个数。

    4. 激活函数:RELU、GELU、ELU。
      传统的激活函数Sigmoid、Tanh把输入控制在(0,1)、(-1,1)之间,容易产生梯度消失和梯度爆炸问题,所以往往要结合RELU:max(0,x)及其变种来防止这个问题,而GELU是预训练模型BERT[4]采用的激活函数,是一种更好更快的激活函数。
      其形式:
      G E L U ( x ) = 0.5 x ( 1 + t a n h [ 2 / π ( x + 0.044715 x 3 ) ] ) GELU(x)=0.5x(1+tanh[\sqrt{2/π}(x+0.044715x^3)]) GELU(x)=0.5x(1+tanh[2/π (x+0.044715x3)])
      其代码:

    def gelu(input_tensor):
       cdf = 0.5 * (1.0 + tf.erf(input_tensor / tf.sqrt(2.0)))
       return input_tesnsor*cdf
    
    1. Dropout:0.1~0.5
      Dropout最早由Hinton[5]提出,用于防止过拟合,一般为0.5,但是Transformer[6]中使用的是0.1,根据经验,这个也和模型的复杂度成反比,太大模型难以拟合,太小过拟合,视情况而定。
    2. 权重衰减和学习率衰减:AdamW、get_linear_schedule_with_warmup
      学习率是一个非常重要的参数,他决定了模型的上限,学习率一般采用预热的方式,即线性地先增后减[7]:
      在这里插入图片描述
      最大学习率根据 Learning Rate Finder 来确定,最小值则可以取最大值的十分之一。

    [1] M. J. A. Berry and G. S. Linoff, Data Mining Techniques: For Marketing, Sales, and Customer Support, New York: John Wiley & Sons, 1997.
    [2] A. Blum, Neural Networks in C++, New York: Wiley, 1992.
    [3] Z. Boger and H. Guterman, “Knowledge extraction from artificial neural network models,” in Systems, Man, and Cybernetics, 1997. Computational Cybernetics and Simulation., 1997 IEEE International Conference, Orlando, FL, 1997.
    [4] Devlin J, Chang M-W, Lee K, Toutanova K. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. arXiv preprint, arXiv:1810.04805 [cs.CL] 2018.
    [5] Hinton G E, Srivastava N, Krizhevsky A, et al. Improving neural networks by preventing co-adaptation of feature detectors. arXiv preprint, arXiv:1207.0580 [cs.NE] 2012
    [6] Vaswani A, Attention Is All You Need, arXiv preprint, arXiv : 1706.03762 [cs.CL] 2017.
    [7] Leslie N. Smith. A disciplined approach to neural network hyper-parameters: Part 1 – learning rate, batch size, momentum, and weight decay. arXiv preprint, arXiv : 1803.09820[cs.LG] 2018.

    展开全文
  • 我们以VGG-16为例,来探讨一下如何计算卷积层、全连接层的参数量、计算量。为了简单、直观地理解,以下讨论中我们都会忽略偏置项,实践中必须考虑偏置项。【卷积层的参数量】什么是卷积层的参数?卷积层的基本原理...

    我们以VGG-16为例,来探讨一下如何计算卷积层、全连接层的参数量、计算量。为了简单、直观地理解,以下讨论中我们都会忽略偏置项,实践中必须考虑偏置项。

    【卷积层的参数量】

    什么是卷积层的参数?

    卷积层的基本原理就是图像的二维卷积,即将一个二维卷积模板先翻转(旋转180°),再以步长stride进行滑动,滑动一次则进行一次模板内的对应相乘求和作为卷积后的值。

    那谁是参数呢?图像本身有参数吗?怎么可能呢。

    那答案只有一个:filter。

    如上图所示,就是一个

    equation?tex=3%5Ctimes3 的卷积核,它的参数就是9个。

    如果有多个通道呢?这简单啊,就用单通道卷积核的参数量乘以通道数呗。

    这仅仅是一个filter的参数量,卷积层有若干个filter啊?

    (重点,重点,重点)

    计算公式:参数量=(filter size * 前一层特征图的通道数 )* 当前层filter数量

    VGG-16为例,Conv1-1,输入

    equation?tex=224%5Ctimes224%5Ctimes3 ,64个

    equation?tex=3%5Ctimes3 filter,输出feature map

    equation?tex=224%5Ctimes224%5Ctimes64

    Conv1-1的参数量为

    equation?tex=3%5Ctimes3%5Ctimes3%5Ctimes64%3D1728

    Conv2-1,输入

    equation?tex=112%5Ctimes112%5Ctimes64 ,128个

    equation?tex=3%5Ctimes3 filter,输出feature map

    equation?tex=112%5Ctimes112%5Ctimes128

    Conv2-1的参数量

    equation?tex=3%5Ctimes3%5Ctimes64%5Ctimes128%3D73728

    同理,可以计算其它卷积层的参数量。感兴趣的同学可以自己动手算一下。

    【全连接层的参数量】

    上面已经说过卷积层的参数量计算方法了,那如何计算全连接层的参数量?其实和卷积层参数量的计算方法是一样的。

    VGG-16最后一次卷积得到的feature map为

    equation?tex=7%5Ctimes7%5Ctimes512 ,全连接层是将feature map展开成一维向量

    equation?tex=1%5Ctimes4096 。实际上,我们就是用4096个

    equation?tex=7%5Ctimes7%5Ctimes512 的filter去做卷积(可以理解为是一个卷积层)。

    我们就可以计算第一个FC的参数量

    equation?tex=7%5Ctimes7%5Ctimes512%5Ctimes4096%3D102760448

    1亿啊,这个数字好大的。这也是为什么说:全连接层参数冗余。全连接层参数就可占整个网络参数80%左右,好吓人的。

    【卷积层的计算量】

    一次卷积的计算量,如何计算呢?

    以VGG-16为例,Conv1-1,输入

    equation?tex=224%5Ctimes224%5Ctimes3 ,64个

    equation?tex=3%5Ctimes3 filter,输出feature map

    equation?tex=224%5Ctimes224%5Ctimes64

    feature map中的每一个像素点,都是64个

    equation?tex=3%5Ctimes3 filter 共同作用于原图计算一次得到的,所以它的计算量为

    equation?tex=3%5Ctimes3%5Ctimes64%3D576

    已经知道单个像素的计算量,那乘以feature map所有像素,就是一次卷积的计算量:

    equation?tex=224%5Ctimes224%5Ctimes64%5Ctimes3%5Ctimes3%5Ctimes64

    (重点,重点,重点)

    计算公式:计算量 = 输出的feature map * 当前层filter

    这仅仅是单个样本前向传播计算量,实际计算量还应乘以batch size。

    【全连接层的计算量】

    全连接层的计算量,如何计算呢?其实和卷积层计算量的计算方法是一样的。

    VGG-16最后一次卷积得到的feature map为

    equation?tex=7%5Ctimes7%5Ctimes512 ,全连接层是将feature map展开成一维向量

    equation?tex=1%5Ctimes4096 。则FC层的计算量为

    equation?tex=7%5Ctimes7%5Ctimes512%5Ctimes1%5Ctimes4096%3D102760448

    通过以上讨论可以发现:我们需要减少网络参数时主要针对全连接层;进行计算优化时,重点放在卷积层。

    【CNN未来的发展趋势】

    1.小--模型有效且参数少

    2.快--运行速度快

    3.准--与大模型有相当的准确率

    展开全文
  • 举一个例子读第一个卷积层各个权值%coded by Dr.Chen Yuin_map = size(cnn.layers{2,1}.k{1,1},2);kernel_size = 5;%param1 = zeros(kernel_size,kernel_size,);fp=fopen('E:est.mif','w');fprintf(fp,'DEPTH = %d;'...
  • CNN中各个的作用

    2021-01-22 17:50:32
    权值共享指同一特征图中的神经元用一组相同的连接强度与前一局部连接,可以减少网络训练参数,上述一组相同的连接强度即为一个特征提取器,在运算的过程中变现为一个卷积核,卷积核数值先随机初始化,最后由网络...
  • 为了提升 CNN网络性能,全连接层每个神经元的激励函数一般采用ReLU函数。最后一层全连接层的输出值被softmax逻辑回归(softmax regression)分类,这层也被称作softmax层。 ...
  • 典型的卷积神经网络:卷积层、下采样池化层、全连接层; 卷积层 1)卷积操作对输入图像进行降维和特征抽取 2)卷积运算是线性操作,而神经网络要拟合的是非线性的函数,因此和前全连接网络类似,我们需要加上激活...
  • 随着神经网络的发展,各种各样的模型都被研究出来,卷积、Transformer也是计算机视觉中国常用的模型,而最近清华大学发表了一篇survey,研究结果或许表明全连接层才是最适合视觉的模型,并将迎来新的AI范式转换!...
  • 作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)...前面介绍的浅层神经网络以及用神经元搭建的网络都是全连接神经网络,那么什么是全连接神经神经网络呢?如下图所示: 全连接(FC)网络结构是最基本的神经...
  • stride=1, padding=1) #(16, 14,14) self.fc1 = nn.Linear(16*7*7, num_classes) #全连接是7*7, 所以conv2后面还有一pooling def forward(self, x): x = F.relu(self.conv1(x)) #(28,28) x = self.pool(x) #(14,...
  • 一般情况下,有保安负荷的用户应用()电源供电。产业结构的调整,关键是要发展有创新能力的新的()部门。市场失灵只会造成经济效益的损失。()纯锆英石耐火制品是以氧化锆为主晶相,简称锆英石耐火制品,是含锆质耐火...
  • 在吴恩达的深度学习的卷积神经网络课程中,对于目标识别介绍了一种划窗方法,在该方法的实现中使用卷积层替代最后的全连接(FC)例如,在常规的CNN中,最后的部分是FC,由于其参数与输入数据的大小(H和W)有关,...
  •    反向传播算法是用来计算神经网络(NN)的可训练参数的偏导数的算法。在神经网络的训练中,对于一个参数(例如权重)的更新,往往采用下面的式子。 wi,j=wi,j−α∑k∈B∂Jk∂wi,j. w_{i,j}=w_{i,j}-\alpha \sum...
  • 全连接层到底什么用?我来谈三点。 (1)全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层...
  • 卷积神经网络(CNN

    千次阅读 2020-12-20 04:51:28
    卷积神经网络(CNN)1.1二维卷积层卷积神经网络是含有卷积层的神经网络,均使用最常见的二维卷积层,它有高和宽两个空间维度,常用来处理图像数据。1.1.1二维互相关运算在二维卷积层中,一个二维输入数组和一个二维...
  • 我在CNN工作,目的是从一组心脏MRI图像中预测两种不同的容积(收缩压和舒张压)。在我做的第一件事是实现两个独立的“顺序”CNN,每个人预测一个音量。在首先定义模型:def get_model():dim_img = 64model = ...
  • 来源:新智元编辑:LRS导读:随着神经网络的发展,各种各样的模型都被研究出来,卷积、Transformer也是计算机视觉中国常用的模型,而最近清华大学发表了一篇survey,研究结果或许表...
  • 神经网络:全连接层

    千次阅读 2021-02-06 17:22:36
    全连接层全连接层一般会放在网络的最后,作用是用来综合所有信息。对于cnn它提取特征的范围是全图的,直接把图像降维成一堆序列。 卷积层是一种局部连接,它所能提取的特征的范围,取决于卷积核的感受野,当...
  • 全连接层与 GAP

    2021-08-01 20:22:36
    全连接层 全连接层一般会放在网络的最后,作用是用来综合所有信息。先把卷积层生成的图像降维成一维向量,然后全连接层把一维向量转化成指定个数的单元值。 如果说卷积层、池化层和激活函数层等操作是将原始数据...
  • 卷积神经网络三类主体层的理解(重点在全连接层)三个部分每个部分的作用1.卷积层2.池化层(下采样池化层)3.全连接层(fully connected)(用于分类任务,在分割和检测上不适用)参考: 三个部分 ①卷积层(conv)...
  • pytorch写cnn的麻烦之处是cnn到第一个全连接层的参数不明确。可以手动计算,但太麻烦,不建议这做。下面通过代码自己计算出来参数个数。 问题:下面的的第一个全连接层的输入神经元个数是多少呢? ...
  • 全连接层nn.Linear

    2021-04-01 18:32:58
    如上图所示,全连接层定义的是线上的权重,in_feature即输入的embedding长度n(输入节点数),out_feature即输出的embedding长度N(输出节点数),如上图 而输入往往不只有一个embedding,一般是[batch_size, n],输出为...
  • 一个经典的CNN网络结构一般包含输入层(Input layer)、卷积层(convolutional layer)、池化层(pooling layer)和输出层(全连接层+softmax layer)。 输入层: 网络的输入,以图像为例,一般代表一张图片的像素...
  • cnn已经提取到了特征,我们怎么将这个特征转化成输出结果呢,比如识别是什么动物,特征有尾巴,头,四条腿等,cnn已经提取出这些特征,但是我们需要输出[0,1,0....],.index0是猫,index1是狗...,因此全连接层就是这...
  • 之前在看论文和看代码的时候,我经常看到把神经网络的中间结果输入到全连接层。但是在我的印象中全连接层就是类似于BP神经网络的样子,于是我就很疑惑把一个三维或者是二维的矩阵输入一个BP神经网络里面到底是什么...
  • 1.怎样将全连接层转换为卷积层? 首先,我们需要了解全连接层和卷积层之间有啥区别。 卷积层与全连接层 卷积层的特点:稀疏连接,权值共享 全连接层的特点:每个神经元都和上一层的所有神经元相连接 两者的共同...
  • 原文转载于作者博客:http://blog.csdn.net/cxmscb/article/details/71023576一、CNN的引入在人工的全连接神经网络中,每相邻两之间的每个神经元之间都是有边相连的。当输入的特征维度变得很高时,这时全连接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,535
精华内容 19,014
关键字:

cnn全连接层