深度学习面试的时候,如何回答1x1卷积的作用

news/2024/11/14 23:41:07/文章来源:https://www.cnblogs.com/dongdongcan/p/18547165

11月了,秋招已经开始了。不知最近有没有同学在投简历面试呢?

回想起几年前我面试某大厂的时候,被问到了很多深度学习相关的知识,那时的我懂的不多,可以说是被面试官360度无死角蹂躏。

那次面试,印象最深的是问了很多与卷积相关的问题,导致我后来工作一段时间看到卷积就时不时的去查些资料,害怕自己又理解错了。

今天就介绍一个我曾经被问到的问题,那就是:在卷积神经网络中,1x1的卷积都有什么作用?

在卷积神经网络中,1x1的卷积有什么作用呢?

大概有以下几个作用。

第一是可以实现输出feature map(特征图)的升维和降维第二个是可以减少模型中的参数量,从而减少计算量,提升模型的推理性能除此之外,就是使用1x1的卷积可以增加网络的深度,从而提升模型的非线性表达能力。

1x1的卷积是如何实现升维和降维的

这里说的1x1的卷积实现升维和降维的功能,指的是 feature map 通道维度的改变,也即特征维度的改变。

这是因为1x1的卷积,卷积核长宽尺寸都是 1,在计算的过程中,不存在长、宽方向像素之间的融合计算(乘累加计算),而仅仅存在通道之间的融合计算。

因此,在这种情况下,1x1的卷积所能改变的仅仅是通道数。

而从卷积算法上可以看出,卷积核的个数就是卷积输出的通道数。因此如果想让输出特征图的通道数增大,就要使用更多数量的卷积核来做卷积,从而实现特征维度的升或者降。

1x1的卷积是如何减少模型参数的

减少参数量可以这么理解:在输出相同特征图的前提下,将一个普通的卷积,替换成一个1x1的卷积加上另一个卷积,先进行降维,然后计算,如此一来整体的计算量要比普通卷积少。

举个例子,如上图所示。假设一个卷积的输入通道是128,输出通道是32,如果不使用1x1的卷积,那么整个卷积的乘累加计算量是:28x28x128x3x3x32 = 28901376

而如果使用1x1的卷积先降维处理,然后在降维之后的特征图上进行一个卷积计算,那么整体的乘累加计算量为:128x28x28x16 + 28x28x16x3x3x32 = 5218304

两者对比,后者比前者减少了80%的计算量。

如何理解1x1卷积可以提升模型的非线性表达能力

神经网络模拟的就是一个非线性系统,之所以在卷积层后面增加非线性层,比如Relu层,其实就是这个道理。

而1x1的卷积可以使得在完成相同卷积功能的前提下,网络的层数变得更深(如上面的例子,一个普通卷积变成了2层卷积)。

网络层数的加深,就会导致更多非线性层数的增加,从而使得整个神经网络模型的非线性表达能力更强。

1x1的卷积还有其他哪些优势吗

1x1的卷积还可以增加通道之间的融合程度。

由于1x1卷积不存在长宽方向的像素融合,所有的计算都是通道之间的交叉计算,因此,可以更好的完成通道间的融合,而通道代表的是特征,因此可以更好的实现特征融合这一点,和全连接类似(因为1x1的卷积就可以表示为全连接)。

总结:如果在面试过程中被问到关于1x1的卷积问题,把上面的几点回答出来,这个问题基本就可以了,不知道有没有人被问道过这个问题呢?

最后,祝各位在秋招中表现出色,都能拿到满意的offer~

我是一名 AI 攻城狮,如果你也想学习 AI ,欢迎你关注我的公众号,会有非常多好玩的AI技术分享~

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

day4-Scrum

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/作业要求 需求&原型改进、系统设计、Alpha任务分配计划、测试计划团队项目仓库 https://github.com/bitpurleclude/GDUT-Goofish/issues团队成员 李嘉锐 车峤锐 于海洋 林进光 黄健 钟启…

GPU编程

来源:https://worktile.com/kb/p/2155928gpu编程有什么用? 图形处理单元(GPU)编程具有多种用途,主要包括:1、加速大规模计算任务、2、图形和视频渲染、3、深度学习和机器学习。GPU编程在深度学习和机器学习领域尤为重要。它允许数据科学家和研究人员利用GPU的并行处理能力…

Objects

概述 Objects 是一个工具类, 提供了一些方法去完成一些功能. Objects 类中的常见的成员方法:图1 Objects 类中的常见的成员方法equals 方法 程序示例: Javabean 类: public class Student {private String name;private int age;public Student() {}public Student(String name…

项目冲刺-3

一、昨日已完成的任务 学习有关springboot,vue等前后端知识,明确要开发的功能,初步搭好底层框架,做完了登录注册功能。 今日计划完成的任务 完善数据库和底层框架,学习有关知识,继续尝试做功能接口。 工作中遇到的困难 成员的前后端基础较差,需要花大量时间入门,目前做…

BigInteger

对象一旦创建, 内部记录的值是不能发生改变的.程序示例: public class demo1 {public static void main(String[] args) {/** public BigInteger(int num, Random rnd) 获取随机大整数, 范围: [0~ 2 的 num 次方 -1]* public BigInteger(String val) 获取指定的大整数* public …

Cuda 驱动安装

Cuda 驱动的安装方法。Author: ACatSmiling Since: 2024-11-13CUDA(Compute Unified Device Architecture):是 NVIDIA 推出的一种并行计算平台和编程模型,它允许开发者利用 NVIDIA GPU(图形处理器)的强大计算能力进行通用计算,而不仅仅局限于图形处理。简单来说,CUDA 提…

[RoarCTF 2019]Easy Java 1

[RoarCTF 2019]Easy Java 1 打开实例发现登录框,尝试万能密码admin or 1=1#后无果注意到登录框下有个help,点击发现文件读取显示文件notfound,文件未找到,怀疑是请求方法问题,尝试POST请求发现能成功下载,确定这道题为任意文件下载 打开help.docx,显示看来文件不在这里,…

【linux日志】web日志分析

WEB正确日志格式分析#日志统计举例[root@master ~]# cat /etc/httpd/logs/access_log |awk {print $1}#对IP排序[root@master ~]# cat /etc/httpd/logs/access_log |awk {print $1}|sort#打印每一个重复出现IP的次数,[root@master ~]# cat /etc/httpd/logs/access_log |awk {p…

SpringBoot配置多数据源实战

SpringBoot配置多数据源实战@目录SpringBoot配置多数据源实战需求来源:简单粗暴3步使用步骤:思路讲解:目录结构:使用注意点: SpringBoot配置多数据源实战 需求来源: 当相关业务场景想实现同时操作2个甚至多个不同数据库表的时候,就需要配置多个数据源。简单粗暴3步使用步…

HTTP 协议学习笔记

HTTP 协议学习笔记 带新手走进神秘的HTTP协议 - 超超boy - 博客园 HTTP 首部字段详细介绍 - 超超boy - 博客园 《白帽子讲 web 安全(第二版)》HTTP 默认的端口号为 80,HTTPS 的端口号为 443。HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。 可以使用 Coo…

自主研发RPA,基于uiautomatorviewer的自动化代码生成器,一键生成Java代码和Cucumber描述文件

介绍 基于UI Automator进行二次开发,让你不懂开发也能编写自动化测试代码, 一边生成代码一边Debug,毫不费力写出完美的自动化测试代码 。该工具集成了Tomcat使得添加新的功能的时候使用HTML+API进行开发,降低了开发难度;集成了Derby数据库,测试用例持久化到数据库。 软件…

关于NVIDIA Jetson AGX Xavier刷机过程记录

刷机记录,再刷机忘记了回来看看~主机电脑安装ubuntu20.04虚拟机,NVIDIA sdkmanager,主机端连上路由器提供的wifi。再将Jetson接上电源,但不开机。拿出附带的typec——USB数据线,typec端连上图中的typec口,USB连上主机电脑。找出一根网线,一端连接Jetson,另一端连接步骤…