【nn.Conv3d】三维卷积参数量与运算量

这篇具有很好参考价值的文章主要介绍了【nn.Conv3d】三维卷积参数量与运算量。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3d卷积过程举例

输入:一个长度为7帧的RGB视频,单帧通道数为3,视频的宽高为60×40,1个视频故bs=1 -->> (1, 3, 7, 60, 40)
3d卷积:nn.Conv3d(3, 5, (4, 7, 7), stride=1, padding=0)
3代表输入特征图通道数,5代表输出特征图通道数,4和7分别代表3d卷积的通道数和宽高。(此外stride和padding也可以设定为 (a,b,b) 的形式,但为了简化说明仅设定空间维度的卷积步长为1,时间维度卷积步长默认为1)
输出:(1, 5, 4, 54, 34),帧数维度增加为4,通道数增加为5,宽高为54和34

3d卷积过程对应下图

3d卷积中参数量为:7×7×4×3×5 = 2940(下面2945为5个偏置)
3d卷积中原算量(乘法次数)为:7×7×4×3×34×54×4×5 = 21,591,360
【nn.Conv3d】三维卷积参数量与运算量

卷积参数量计算:

import torch
import torch.nn as nn
from torch import autograd
from torchsummary import summary


class NET(nn.Module):
    def __init__(self):
        super(NET, self).__init__()
        self.conv3d_1 = nn.Conv3d(3, 5, (4, 7, 7), stride=1, padding=0)
    def forward(self, x):
        out = self.conv3d_1(x)
        return out


model = NET()
input = autograd.Variable(torch.randn(1, 3, 7, 60, 40))
output = model(input)

print(output.size())

summary(model, (3, 7, 60, 40), batch_size=1, device="cpu")

最终输出:

torch.Size([1, 5, 4, 54, 34])
----------------------------------------------------------------
        Layer (type)               Output Shape         Param #
================================================================
            Conv3d-1          [1, 5, 4, 54, 34]           2,945
================================================================
Total params: 2,945
Trainable params: 2,945
Non-trainable params: 0
----------------------------------------------------------------
Input size (MB): 0.19
Forward/backward pass size (MB): 0.28
Params size (MB): 0.01
Estimated Total Size (MB): 0.48
----------------------------------------------------------------

我的理解和我想说的:

conv2d对应的卷积核其实是三维的,因为卷积核自身尺寸的宽高即两个维度,待卷积特征图的深度方向也是一个维度,所以相当于有c_out个k×k×c_in的“三维”卷积在特征图输入特征图中滑动。但是滑动仅限于平面两个方向。
conv3d的卷积核按理来说应该是四维,但我理解不了那么高的维度空间,重点是卷积核可移动的维度多了一个时间维度。

以上仅是个人理解可能和论坛中其他资料有出入,欢迎大家批评指正。文章来源地址https://www.toymoban.com/news/detail-503038.html

到了这里,关于【nn.Conv3d】三维卷积参数量与运算量的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一维卷积神经网络理解(torch.nn.Conv1d)

    in_channels : (int)输入数据的通道数,即对某条训练数据来说由多少组向量表示。例如对于由一维向量表示的一条数据来说,通道数为1;对于文本数据来说,一个句子是由m个单词组成,那么通道数就可以是m out_channels : (int)卷积产生的通道数,可以理解为卷积核的个数 kernel_siz

    2023年04月08日
    浏览(45)
  • 【知识点】nn.Conv2d参数设置

    reference   in_channels   这个很好理解,就是输入的四维张量[N, C, H, W]中的C了,即输入张量的channels数。这个形参是确定权重等可学习参数的shape所必需的。 out_channels   也很好理解,即期望的四维输出张量的channels数。 kernel_size   卷积核的大小,一般我们会使用5x5、3x3这

    2024年02月12日
    浏览(36)
  • 反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释

    传统的卷积通常是将大图片卷积成一张小图片,而反卷积就是反过来,将一张小图片变成大图片 。 但这有什么用呢?其实有用,例如,在生成网络(GAN)中,我们是给网络一个向量,然后生成一张图片 所以我们需要想办法把这个向量一直扩,最终扩到图片的的大小。 在了解反

    2024年02月02日
    浏览(45)
  • 在树莓派上实现numpy的conv2d卷积神经网络做图像分类,加载pytorch的模型参数,推理mnist手写数字识别,并使用多进程加速

    这几天又在玩树莓派,先是搞了个物联网,又在尝试在树莓派上搞一些简单的神经网络,这次搞得是卷积识别mnist手写数字识别 训练代码在电脑上,cpu就能训练,很快的: 然后需要自己在dataset里导出一些图片:我保存在了mnist_pi文件夹下,“_”后面的是标签,主要是在pc端导

    2024年02月07日
    浏览(35)
  • nn.Conv2d详解

    nn.Conv2d  是 PyTorch 中的一个卷积层,用于实现二维卷积操作。其主要参数有: in_channels :表示输入图像的通道数,也就是输入特征图的深度。 out_channels :表示输出特征图的通道数,也就是卷积核的个数。 kernel_size :表示卷积核的大小;可以是一个整数,表示正方形卷积核的

    2024年02月05日
    浏览(44)
  • 【PyTorch】nn.Conv2d函数详解

    CONV2D官方链接 in_channels:输入的通道数,RGB 图像的输入通道数为 3 out_channels:输出的通道数 kernel_size:卷积核的大小,一般我们会使用 5x5、3x3 这种左右两个数相同的卷积核,因此这种情况只需要写 kernel_size = 5这样的就行了。如果左右两个数不同,比如3x5的卷积核,那么写作

    2024年01月22日
    浏览(40)
  • pytorch之nn.Conv1d详解

    1、Conv1d 定义 class torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True) 自然语言处理中一个句子序列,一维的,所以使用Conv1d,此时卷积核(没有batch_size,参数是共享的)除去chanel,也是一维的。  2、参数  in_channels(int) – 输入信号的通道。在

    2024年02月16日
    浏览(45)
  • pytorch中nn.Conv1d功能介绍

            在使用Conv1d函数时,pytorch默认你的数据是一维的,比如一句话“深度学习”可以用一个一维数组 [\\\'深\\\', \\\'度\\\', \\\'学\\\', \\\'习\\\'] 表示,这个数据就是一维的。图片是二维数据,它有长宽两个维度。         因此在使用 Conv1d 函数时,输入是一个三位数组,三个维度分别表

    2024年02月10日
    浏览(46)
  • pytorch中 nn.Conv2d的简单用法

    参数介绍 : in_channels :卷积层输入通道数 out_channels :卷积层输出通道数 kernel_size :卷积层的卷积核大小 padding :填充长度 stride :卷积核移动的步长 dilation :是否采用空洞卷积 groups :是否采用分组卷积 bias :是否添加偏置参数 padding_mode : padding 的模式 如果输入大小为:

    2024年02月11日
    浏览(43)
  • CVPR 2023 | Point-NN:​首次实现0参数量、0训练的3D点云分析

    点击下方 卡片 ,关注“ CVer ”公众号 AI/CV重磅干货,第一时间送达 点击进入— 【3D点云】微信技术交流群 不引入任何可学习参数或训练,我们是否可以直接实现3D点云的分类、分割和检测? 为此,本文提出了一个用于3D点云分析的非参数网络,Point-NN,它仅由纯不可学习的

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包