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

    文章

    8471

    浏览量

    186288
  • RGB
    RGB
    +关注

    关注

    4

    文章

    836

    浏览量

    62235
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深度剖析AD5122A/AD5142A数字电位器:特性、应用与操作指南

    深度剖析AD5122A/AD5142A数字电位器:特性、应用与操作指南 在电子设计领域,数字电位器凭借其高精度、可编程性和稳定性,成为众多应用场景中的关键组件。AD5122A/AD5142A作为一款
    的头像 发表于 04-16 17:05 363次阅读

    龙芯中科深度适配统信桌面操作系统V25

    2026年4月15日,统信软件正式发布统信桌面操作系统V25。作为国产操作系统里程碑式版本,该版本在智能化、高效性、可靠性三大维度实现系统性突破,标志着国产操作系统从“可用”全面迈向成
    的头像 发表于 04-16 15:54 263次阅读

    Renesas 3803 组(Spec.L)单芯片 8 位 CMOS 微计算深度剖析

    Renesas 3803 组(Spec.L)单芯片 8 位 CMOS 微计算深度剖析 一、公司与产品概述 在 2010 年 4 月 1 日,NEC 电子公司与瑞萨科技公司合并,瑞萨电子公司接管
    的头像 发表于 04-13 15:20 146次阅读

    MAX66240:深度安全认证芯片的技术剖析与应用探索

    MAX66240:深度安全认证芯片的技术剖析与应用探索 一、引言 在当今数字化时代,数据安全至关重要。无论是门禁系统、资产追踪,还是医疗设备等领域,都需要可靠的安全认证解决方案。Maxim
    的头像 发表于 04-03 15:20 120次阅读

    12 位高速 ADC:AD9634 深度剖析与应用指南

    12 位高速 ADC:AD9634 深度剖析与应用指南 在当今的电子设计领域,高速、高精度的模数转换器(ADC)对于实现高性能的信号处理至关重要。AD9634 作为一款 12 位、具备 170
    的头像 发表于 03-31 11:10 192次阅读

    MC协议的深度剖析

    在工业自动化和物联网领域,Modbus通信协议(简称MC协议)作为最古老的开放式通信标准之一,至今仍占据重要地位。本文将从技术原理、协议变体、应用场景及安全挑战四个维度,对Modbus协议进行深度解析,并结合现代工业环境探讨其演进方向。
    的头像 发表于 03-03 17:09 640次阅读
    MC协议的<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    CAN协议的深度剖析

    单元(ECU)之间的高效通信问题。本文将从技术原理、帧结构、错误处理机制、应用场景及未来发展趋势等方面,对CAN协议进行深度剖析
    的头像 发表于 03-03 17:08 742次阅读
    CAN协议的<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    OPC UA协议深度剖析

    。本文将从协议架构、核心技术、应用场景及未来发展趋势等维度进行全面剖析,帮助读者深入理解这一工业通信领域的核心标准。
    的头像 发表于 03-03 17:00 935次阅读

    串口协议的深度剖析

    串口通信协议作为电子设备间数据交互的基础技术,自20世纪60年代诞生以来,始终在工业控制、嵌入式系统和物联网等领域扮演着核心角色。本文将从技术原理、协议架构、应用场景及未来演进四个维度,对串口协议展开深度剖析
    的头像 发表于 03-02 17:32 1244次阅读

    Modbus协议的深度剖析

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

    CICC2033神经网络部署相关操作

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

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

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

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

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