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

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

    关注

    161

    文章

    7799

    浏览量

    178026
  • RGB
    RGB
    +关注

    关注

    4

    文章

    798

    浏览量

    58468
  • 卷积
    +关注

    关注

    0

    文章

    95

    浏览量

    18509
收藏 人收藏

    评论

    相关推荐

    卷积神经网络的基本原理与算法

    卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks
    的头像 发表于 11-15 14:47 454次阅读

    深度学习中反卷积的原理和应用

    深度学习的广阔领域中,反卷积(Deconvolution,也称作Transposed Convolution)作为一种重要的图像上采样技术,扮演着至关重要的角色。特别是在计算机视觉任务中,如图
    的头像 发表于 07-14 10:22 1612次阅读

    基于PyTorch的卷积核实例应用

    深度学习和计算机视觉领域,卷积操作是一种至关重要的技术,尤其在图像处理和特征提取方面发挥着核心作用。PyTorch作为当前最流行的深度学习
    的头像 发表于 07-11 15:19 452次阅读

    卷积神经网络的基本概念、原理及特点

    的基本概念、原理、特点以及在不同领域的应用情况。 一、卷积神经网络的基本概念 卷积神经网络是一种深度学习算法,它由多层卷积层和池化层堆叠而成。卷积
    的头像 发表于 07-11 14:38 1033次阅读

    卷积神经网络的卷积操作

    卷积神经网络(Convolutional Neural Network, CNN)中的卷积操作是其核心组成部分,对于图像识别、语音识别、自然语言处理等领域具有重要意义。本文将从卷积
    的头像 发表于 07-04 16:10 1287次阅读

    卷积神经网络实现示例

    分类。 1. 卷积神经网络的基本概念 1.1 卷积层(Convolutional Layer) 卷积层是CNN中的核心组件,用于提取图像特征。卷积层由多个
    的头像 发表于 07-03 10:51 434次阅读

    卷积神经网络的实现原理

    卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。本文将详细介绍卷积神经网络的实现原理、结构
    的头像 发表于 07-03 10:49 543次阅读

    卷积神经网络分类方法有哪些

    卷积神经网络(Convolutional Neural Networks,CNN)是一种深度学习模型,广泛应用于图像分类、目标检测、语义分割等计算机视觉任务。本文将详细介绍卷积神经网络
    的头像 发表于 07-03 09:40 456次阅读

    卷积神经网络计算过程和步骤

    卷积神经网络(Convolutional Neural Network, CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。本文将详细介绍卷积神经网络的计算
    的头像 发表于 07-03 09:36 561次阅读

    卷积神经网络的组成部分有哪些

    卷积层、池化层、激活函数、全连接层、损失函数、优化算法等,并探讨它们在CNN中的作用和应用。 卷积层(Convolutional Layer) 卷积层是CNN中的核心组成部分,它通过卷积
    的头像 发表于 07-03 09:31 982次阅读

    cnn卷积神经网络分类有哪些

    卷积神经网络概述 卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,由多层卷积层和池化层堆叠而成。CNN通过
    的头像 发表于 07-03 09:28 615次阅读

    卷积神经网络训练的是什么

    、训练过程以及应用场景。 1. 卷积神经网络的基本概念 1.1 卷积神经网络的定义 卷积神经网络是一种前馈深度学习模型,其核心思想是利用卷积
    的头像 发表于 07-03 09:15 403次阅读

    深度学习与卷积神经网络的应用

    随着人工智能技术的飞速发展,深度学习和卷积神经网络(Convolutional Neural Network, CNN)作为其中的重要分支,已经在多个领域取得了显著的应用成果。从图像识别、语音识别
    的头像 发表于 07-02 18:19 888次阅读

    卷积神经网络的基本结构及其功能

    。 引言 深度学习是机器学习的一个分支,它通过模拟人脑神经网络的结构和功能,实现对数据的自动学习和特征提取。卷积神经网络是深度学习中的一种重要模型,它通过卷积
    的头像 发表于 07-02 14:45 1580次阅读

    卷积神经网络在图像识别中的应用

    卷积操作 卷积神经网络的核心是卷积操作卷积操作
    的头像 发表于 07-02 14:28 1092次阅读