对卷积和全连接之间关系的学习(1*1卷积与全连接层可以互换吗?)

news2024/11/14 16:31:15

1.对于卷积和全连接

首先我们看一张图,它是一张关于卷积的操作:

然后在看关于全连接的操作:

从上面两张图中可以看出卷积的过程和全连接的过程,我们利用粉色的卷积核在image上进行卷积,进行内积计算得到输出值3,如下图;那么在全连接中是如何实现的呢?

其实在全连接中相当于将6✖️6的image,也就是把6✖️6的36个pixel拉直成向量作为输入,在上图中的右边可以看到一个粉色的神经元里面的输出结果是3,它是通过一些线连接到刚才的向量上,这些线是带有权重的;当我们利用卷积核进行卷积的时候,此时卷积核考虑的9个与其重合的元素刚好对应刚才拉直的向量中编号为1,2,3,7,8,9,13,14,15的值(就是上图与彩色线相连的值),那么这些彩色线上的权重也刚好对应卷积核中的9个值,即([[1,-1,-1],[-1,1,-1],[-1,-1,1]]),但是要注意,全连接层中的一个神经元(比如粉色3)并不是只有彩色线连接,而是还有其他线连接并且也有权重,只是除掉彩色线其他线上的权重计算结果为0,并不影响最终神经元的输出。(这里只是我看到的解释,但是我有个疑问,难道彩色线上对应的不可以是其他权重吗?只要最终的输出一样就行啊。)

所以,相比之下,全连接中的一个神经元必须连接到36个神经元,但是卷积只需要连接9个输入,这是对于检测其中一个pattern来说的,所以这样就能看出卷积的参数要少于全连接;

2.卷积中的共享参数

当我们需要另一个个pattern,也就是卷积中我们按照步距为1进行移动时,比如图中的输出结果-1,可以看出对于卷积而言,卷积核不变,所以虽然关注不同的patterm权重参数依然不变,依然共享。但是对于全连接层来说,它就会有一组不同的权重,虽然途中彩色线的权重是和卷积核中的9个一样的,但是没画出来的线中的权重是与刚才粉色3那个神经元不一样的。即每一个神经元有自己独立的权重,这样一来又可以看出卷积的参数量大大少于全连接的参数了;

3.关于1*1卷积和全连接等价的问题

图中,卷积核有3个输入通道,2个输出通道, ( K 0 , 0 , K 0 , 1 , K 0 , 2 ) (K_{0,0}, K_{0,1}, K_{0,2}) (K0,0,K0,1,K0,2)对应输出的第一个通道的参数, ( K 1 , 0 , K 1 , 1 , K 1 , 2 ) (K_{1,0}, K_{1,1}, K_{1,2}) (K1,0,K1,1,K1,2)对应输出的第二个通道的参数。输出由输入的浅色部分与卷积核浅色部分逐一相乘,如下:

I 0 , i , j × K 0 , 0 + I 1 , i , j × K 0 , 1 + I 2 , i , j × K 0 , 2 I_{0, i, j} \times K_{0, 0} + I_{1, i, j} \times K_{0, 1} + I_{2, i, j} \times K_{0, 2} I0,i,j×K0,0+I1,i,j×K0,1+I2,i,j×K0,2

我们可以将 ( I 0 , i , j , I 1 , i , j , I 2 , i , j ) (I_{0, i, j}, I_{1, i, j}, I_{2, i, j}) (I0,i,j,I1,i,j,I2,i,j)等输入在不同通道上的向量理解成MLP网络中的特征,将 ( K 0 , 0 , K 0 , 1 , K 0 , 2 ) (K_{0, 0}, K_{0, 1}, K_{0, 2}) (K0,0,K0,1,K0,2)等理解成MLP网络中的权重参数,特征与权重逐一相乘,这与全连接层的运算几乎一致。那么,1x1卷积层可用来完成全连接层所需要完成的工作,但是参数量上卷积要比全连接少的多。

4.关于卷积替换全连接

在3中我们知道用1*1卷积在某些情况下能够替代全连接,并能减少参数量,那如果我们的卷积核大小不是1呢?还能够替代吗?

如上图所示我们对3*3大小通道数为3的特征图进行卷积操作,采用3个3✖️3大小通道为3的卷积核大小进行卷积,得到的3个输出;

可以对应于图中的全连接操作,其中每组相同颜色的线代表一组权重,不同颜色对应的权重不一样,故根据输出可以看出有三组不同的权重,每组颜色有9个,故总共3*9=27个

对于卷积而言我们使用3个不同的卷积核,也相当于三组不同的权重,权重数量是3*9=27个

所以我们可以发现,当卷积核大小与特征图大小一样时,全连接和卷积是可以相互替换的,并且参数量是一样的。(这里是个人想法,目前还不太明白到底对不对)

5.1*1卷积的作用

1.不改变图像空间结构
全连接层会破坏图像的空间结构,例如把维度拼接成一个一维数组, 而1* 1卷积层不会破坏图像的空间结构,保留图像局部特征,卷积具有空间位置不变性。

2、输入可以是任意尺寸
全连接层的输入尺寸是固定的,因为全连接层的参数个数取决于图像大小,需要预先设定好,而卷积层的输入尺寸是任意的,因为卷积核的参数个数与图像大小无关。

3、升降维+信息交互
一张448* 448* 100 的图片在20个卷积核上做1* 1的卷积,那么结果的大小为448* 448* 20。1* 1 卷积的作用是让网络根据需要能够更灵活地控制数据的通道数(即实现不同通道之间的信息交互),通过1* 1卷积,可以将不同分支的feature map通道数调整到需要的大小,也可以升维。

4、引入非线性
卷积层之后经过激活函数,1* 1的卷积在前一层的学习表示上加了非线性激活,提升网络的非线性;

原文链接:https://blog.csdn.net/qq_44832832/article/details/128665285

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736102.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调用GPU进行深度学习模型训练问题检查总结

1、电脑是否具有nvidia的GPU显卡。 2、安装的cuda版本是否超过显卡支持的最高版本。 在nvidia设置->帮助->系统信息->组件,可查看。 3、安装的pytorch是否为gpu版,即使在官网中复制的gpu版安装命令,安装得到的也有可能为cpu版。 建…

【监控系统】监控系统简介以及主流监控框架对比

互联网应用中离不开监控系统,那么为什么会有监控系统呢? 互联网公司产品通常是通过软件、网站、App或其他数字化方式提供服务的,这类产品在使用过程中可能会面临一系列风险和挑战。 比如网络故障或稳定性问题,由于网络故障、硬件…

外设资源共享须知

外设资源共享 具有相同ID的只能使用一个,无法同时使用。 例如当使能了SPIM0, 就不能用TWIM0,因为基地址相同,不能同时使用。此时建议使用TWIM1. 在sdk_config.h 中配置时需留意。

tecplot360 只显示指定phase的设定体积分数的区域

tecplot360 只显示指定phase的设定体积分数的区域 到数入据抽取切面设定显示体积分数范围 参考1: Tecplot中如何提取水线面(自由表面)并绘图 参考2: 两相流计算中,如何用Tecplot提取水相断面平均物理量? …

创建一个django项目详细说明

1.首先安装django pip install django 2.创建django项目 django-admin startproject myproject 输入命令后自动生成相关文件 manage.py文件:这是管理Django项目的重要命令行工具,它主要用于启动项目、创建应用和完成数据库的迁移等。settings.py文件&…

mongodb集群工作原理学习

mongodb集群 MongoDB集群有好几种方式:,主从模式,副本集模式和分片的模式 其中主从模式基本不再使用,大多是后面两种 副本集模式 副本集模式主要是用于实现服务的高可用性,类型Redis的哨兵模式. 它主要是的特点: 创建集群后会有主节点(primary)和从节点(secondary). 但从节点…

1765_Perl实现fileread功能

全部学习汇总: GreyZhang/perl_basic: some perl basic learning notes. (github.com) fileread是MATLAB中的一个函数,可以实现对一个文本文件的全文读取。读取后的内容返回给一个字符串量。在Python中也有类似的功能,不过MATLAB中的这个更能…

快速创建ES集群

win10 中docker 设置 快速创建集群 访问 官网 elasticsearch/docs/reference/setup/install/docker at main elastic/elasticsearch GitHub 负责上面2个文件,并修改,修改如下 .env文件 # Password for the elastic user (at least 6 characters) …

【私有云】网络虚拟化

前言 大家好,我是秋意零。 之前一直对 OpenStack 网络很陌生与神奇啊,不知道它是如何实现的,网络结构是怎样的。不过,今天介绍的是网络虚拟化,它在 OpenStack 中及云计算中是非常重要的概念,是理解 OpenS…

springboot整合websocket遇到的小问题

今天尝试了通过springboot整合websocket来初步学习使用websocket,然后发现启动的时候报错了,发这篇文章分享一下。 springboot整合websocket的步骤很简单: 第一步:创建一个springboot项目,在这里命名为websocket 在I…

day16 移除元素

题目描述 解题思路: 1.快慢指针,移除数组元素只能是下标操作;fast往前,不等于value的时候,赋给slow; 2.slow;返回的长度直接返回slow; int removeElement(int* nums, int numsSize, …

Rethinking the Role of Pre-ranking in Large-scale E-Commerce Searching system

来源: KDD’2023Taobao Search 文章目录 ASHASMOL训练样本训练目标蒸馏精排 总结 反思粗排在大规模电商搜索系统中的角色。 由于巨大的数据量以及对系统实时反馈的要求,一个典型的工业排序系统通常由这些模块组成:召回(matching&…

VTR编译问题

机器环境 vmware 16.0; ubuntu22.04.02; 问题描述 一、在build过程中会出现一些警告,但没有停止; 二、访问 **raw.githubsercontent.com/…/…**相关网站被拒绝,如下图: 之前在 /etc/hosts 仅仅是添加了raw.github…

JS数组解构赋值变量存在依赖关系

题目随便起的, 在刷力扣 41.缺失的第一个正数 这个题的时候,出现了解构赋值的问题, 对于[a,b] [1,2]和[b,a][2,1]按理说都是行的通的,和位置没有关系,本质上都是进行交换 可是当我在题目中 使用[nums[nums[i]-1], nu…

SpringMVC的高频面试题

2023最新版(持续更新) 一、SpringMVC的高频面试题1. SpringMVC的执行流程2. SpringMVC常见的注解有哪些? 一、SpringMVC的高频面试题 1. SpringMVC的执行流程 前置知识 视图阶段(JSP): 涉及到的重要组件:…

KubeSphere 社区双周报 | KubeSphere 多项更新 | 2023.06.23-07.06

KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.06.23-2023.…

管道设计专业版:Pipedata-Pro Crack

Pipedata-Pro 提高了管道设计的效率并减轻了查找管道信息的负担。它可以直观、轻松地检索最新的管道和设计数据。尺寸和重量单位可以设置为公制或美制单位。 Pipedata-Pro 于 1996 年由 Zeataline Projects 推出,现已遍布全球,Pipedata-Pro 管道表的映射…

怎么判断两个文档节点时候相同?判断两个DOM节点时候相等、相同的4种方法

方法1: document.querySelector(html) document.querySelector(html) //true 方法2:compareDocumentPosition document.querySelector(html).compareDocumentPosition(document.querySelector(html)) //0 返回0就代表相同 方法3:isEqualNode …

编译运行ContactDiscoveryService-Icelake

下载 git clone https://codeup.aliyun.com/6306306f95064d67d44656e5/lxr1907/ContactDiscoveryService-Icelake.git或github地址 git clone https://github.com/signalapp/ContactDiscoveryService-Icelake按照Readme安装 Building git submodule init git submodule update …

每次装完 homebrew,ohmyzsh 就会报错:Insecure completion-dependent directories detected:

参考:https://zhuanlan.zhihu.com/p/313037188 这是因为在big sur安装homebrew后,会在/usr/local/share/生成一个zsh文件夹,里面包含了 因此,zsh文件默认设置的权限是775,也就是group user有writer的权利,zsh认为这是…