0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度剖析卷积操作的维度计算

电子工程师 来源:今日头条 作者:数据学习DataLearn 2021-03-24 15:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

卷积操作的维度计算是定义神经网络结构的重要问题,在使用如PyTorch、Tensorflow深度学习框架搭建神经网络的时候,对每一层输入的维度和输出的维度都必须计算准确,否则容易出错,这里将详细说明相关的维度计算。

一、卷积操作的维度计算

卷积操作的维度计算是定义神经网络结构的重要问题,在使用如PyTorch、Tensorflow等深度学习框架搭建神经网络的时候,对每一层输入的维度和输出的维度都必须计算准确,否则容易出错,这里将详细说明相关的维度计算。

首先,我们看一下卷积操作涉及的东西,一个卷积操作需要定义卷积核的大小、输入图像的padding长度以及卷积操作的步长。以一个RGB图像输入为例,一个多卷积核操作的示意图如下:

使用两个卷积核扫描输入图像

这个例子的输入数据是一个三维数据,带有通道数,输入数据第三个维度是通道数,使用了两个卷积核(滤波器)扫描得到一个带有两个通道的图像(一个卷积核对一个三维的数据,即带多个通道的二维图像扫描可以得到一个二维单通道图像结果,要求卷积核也是三维,且通道数和输入数据通道数一样)。下面我们来描述具体计算。

假设输入数据大小是w × h,其中,w是宽度,h是高度。扫描的卷积核大小是f × f。padding的长度是p(padding),步长是s(stride)。那么经过卷积操作之后,输出的数据大小:

如果输入的数据是三维数据,即:w × h × c。其中,w是宽度,h是高度,c是通道数(对于RGB图像输入来说,这个值一般是3,在文本处理中,通常是不同embedding模型的个数,如采用腾讯训练的、谷歌训练的等)。这个时候的卷积核通常也是带通道的三维卷积核:f × f × c。

注意,一般来说,卷积核的通道数c和输入数据的通道数是一致的。因此,这个时候卷积之后的输出依然是一个二维数据,其大小为:

这里的维度做了向下取整,防止结果不是整数的情况。假如希望输出的也是带通道的结果,那么这时候就要使用多个卷积核来操作了,最终输出的数据维度是:

其中c'是卷积核的个数。

二、深度学习框架中Conv1d、Conv2d

在像PyTorch、Tensorflow中,都有类似Conv1d、Conv2d和Conv3d的操作。这也都和卷积操作的维度有关,里面的参数都要定义好。例如如下的卷积操作:

self.convs = nn.Sequential( nn.Conv1d(in_channels=32, out_channels=16, kernel_size=5, stride=1, padding=0), nn.BatchNorm1d(16), nn.ReLU(inplace=True) )

这里面的参数要定义好,否则容易出错。我们将分别介绍。

Conv1d是一维卷积操作,它要求输入的数据是三维的,即:N × C_in × L_in。

最终输出的参数也是三维的:N × C_out × L_out。

这里的N是mini batch size,C是通道数量,L是宽度。

这里的out_channels定义了将由几个卷积核来扫描,kernel_size则定义了每一个卷积核大小,都可以自己定义。最终,输出的min_batch_size不变,out_channels数量根据定义的参数来,而输出的width计算如下:

深度学习卷积操作的维度计算

这里的p是上面padding的参数值,f是kernel_size的值。类似的,如果使用Conv2D做卷积操作,那么输入就是四维的:N × C_in × H_in × W_in。

这里的N是min batch size,C_in是输入数据的通道数,H_in是输入数据的高度,W_in是输入数据的宽度。其输出也是四维的,根据定义的卷积核大小和数量得到的输出维度如下:N × C_out × H_out × W_out。其中,C_out是根据卷积核的数量定义的输出数据的通道数,因为一个卷积核只能扫描得到一个二维图。其中H_out 和 W_out的计算如下:

三、总结

卷积操作的输入和输出数据的维度在构建神经网络中很重要,也很容易出错。使用PyTorch或者Tensoflow构建卷积神经网络的时候一定要注意参数的设置,如果计算错误,下一层的输入与上一层的输出对不上那么很有可能失败。为了避免这种情况发生,可以先用小数据集测试,同时为了检测哪里出错可以在测试的时候把每一层的输出结果的维度(shape)打印出来,这样就更容易检测结果了。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    162

    文章

    8351

    浏览量

    184757
  • RGB
    RGB
    +关注

    关注

    4

    文章

    820

    浏览量

    61519
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18926
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自动驾驶中常提的卷积神经网络是个啥?

    在自动驾驶领域,经常会听到卷积神经网络技术。卷积神经网络,简称为CNN,是一种专门用来处理网格状数据(比如图像)的深度学习模型。CNN在图像处理中尤其常见,因为图像本身就可以看作是由像素排列成的二维网格。
    的头像 发表于 11-19 18:15 1830次阅读
    自动驾驶中常提的<b class='flag-5'>卷积</b>神经网络是个啥?

    Modbus协议的深度剖析

    Modbus协议作为工业自动化领域最广泛应用的通信协议之一,其简洁高效的特性使其在工业控制系统中占据重要地位。本文将从协议的发展历程、技术架构、通信模式、安全机制以及未来演进等多个维度进行全面剖析
    的头像 发表于 11-07 07:43 301次阅读
    Modbus协议的<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    CNN卷积神经网络设计原理及在MCU200T上仿真测试

    设计流程: 1、构建缓冲区 2、将卷积操作展开成乘加操作。 3、层层复用。 design file设计图 综合之后设计部分设计图 仿真测试结果 [/td][td=184][/td] [td=3,1,553]
    发表于 10-29 07:49

    卷积运算分析

    卷积运算的基础运算是乘加运算(MAC,Multiplication and Accumulation),本文设计了基本运算单元PE模块来实现MAC运算。对于卷积运算而言,一次性至少处理一个感受域规模
    发表于 10-28 07:31

    NMSIS库的使用

    的特征、增加非线性、降低维度和防止过拟合。卷积操作是用一个卷积核(或滤波器)在输入图像上滑动,与图像的局部区域做点积运算,得到一个输出矩阵(或特征图)。
    发表于 10-24 09:58

    CICC2033神经网络部署相关操作

    设定为 12。由于在 pooling 模块中可以进行量化操作,所以 q_bit 可以进行相关设计进行初步量化。为了保证计算精度,仅在 pooling 模块内进行部分量化,另外一部分在 RISC-V 主
    发表于 10-20 08:00

    GraniStudio : MC 协议深度剖析

    作为工业级零代码开发平台,其内置的 MC 协议客户端模块通过高度封装的可视化功能,将复杂的协议细节转化为 “拖拽式” 操作。本文将聚焦 MC 协议客户端的 机制设置、帧结构、通信规范及交互流程 ,结合 GraniStudio 的功能实现,展开技术细节的深度解析。 一、MC
    的头像 发表于 08-04 09:57 945次阅读
    GraniStudio : MC 协议<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    GraniStudio : TCP/IP(Socket)协议深度剖析

    (Socket)客户端与服务器模块,通过高度封装的可视化功能,将复杂的套接字通信逻辑转化为简单的 “拖拽式” 操作,为工业用户构建稳定、高效的网络通信系统提供了强大支撑。本文将从技术原理、功能实现、应用场景三个维度,深入解析 GraniStudio 中 TCP/IP(So
    的头像 发表于 08-03 22:20 896次阅读
    GraniStudio : TCP/IP(Socket)协议<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    大模型推理显存和计算量估计方法研究

    估算剪枝后的模型所需的显存大小。 三、计算量估计方法 基于模型结构的计算量估计 根据深度学习模型的层次结构和参数数量,可以估算模型在推理过程中的计算量。具体方法如下: (1)统计模型中
    发表于 07-03 19:43

    从接口到架构:工控一体机定制化的深度技术剖析

    工业场景需求的关键路径。本文将从接口设计、硬件架构、操作系统、通信协议及智能决策五个维度深度剖析工控一体机定制化的技术内核。 一、接口定制化:工业互联的“神经末梢” 工控一体机的接口
    的头像 发表于 06-17 16:47 392次阅读

    如何使用MATLAB实现一维时间卷积网络

    本文对一维卷积操作进行介绍,包括一维扩展卷积和一维因果卷积,以及 MATLAB 对一维卷积的支持情况。在最后通过一个实例演示如何在 MATL
    的头像 发表于 03-07 09:15 1666次阅读
    如何使用MATLAB实现一维时间<b class='flag-5'>卷积</b>网络

    BNC 连接器接线原理深度剖析

    在电子设备的信号连接领域,BNC 连接器作为一种射频同轴连接器,凭借其稳定的性能和便捷的操作,在通信、广播电视、测试测量等行业中占据着举足轻重的地位。深入了解 BNC 连接器的接线原理,对于正确
    的头像 发表于 02-28 08:45 920次阅读
    BNC 连接器接线原理<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    隔离型DCDC偏置电源供应技术深度剖析

    型DC/DC偏置电源供应的技术特点、拓扑结构、新一代解决方案及选择策略,为相关领域的设计师提供参考。 *附件:隔离型DCDC偏置电源供应技术深度剖析.pdf 2. 隔离型DC/DC偏置电源供应概述 隔离型DC/DC偏置电源供应是指能够跨越隔离屏障提供稳定电
    的头像 发表于 02-14 11:05 1830次阅读
    隔离型DCDC偏置电源供应技术<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    AI云端计算资源的多维度优势

    AI云端计算资源,作为AI技术与云计算深度融合的产物,在成本效益、性能优化、数据安全、灵活扩展以及创新加速等多个维度都具有显著优势。下面,AI部落小编带您探讨AI云端
    的头像 发表于 01-07 11:11 839次阅读

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    步长。 卷积计算过程 2.3.2 逐深度卷积深度卷积(Depthwise convolut
    发表于 12-19 14:33