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

卷积参数量计算:

import torch
import torch.nn as nn
from torch import autograd
from torchsummary import summaryclass 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 outmodel = 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的卷积核按理来说应该是四维,但我理解不了那么高的维度空间,重点是卷积核可移动的维度多了一个时间维度。

以上仅是个人理解可能和论坛中其他资料有出入,欢迎大家批评指正。

【nn.Conv3d】三维卷积参数量与运算量相关推荐

  1. 常规-分组-深度分离-分组深度分离卷积-参数量-计算量-dilation-python实现

    不同的卷积操作 本文所用样本 一般的卷积(常规的) 分组卷积 深度分离卷积 逐通道卷积(depthwise conv) 逐点卷积 (pointwise conv) 分组深度分离卷积 上面卷积总结 卷积 ...

  2. 卷积层计算量(FLOPS)和参数量的计算

    1.卷积参数量的计算,若卷积层的输入featuremap的维度为Cin×Hin×Win,卷积核的大小为K1×K2, padding=P1×P2, stride=S1×S2,卷积核(filter)的数量 ...

  3. Conv2d中的groups参数(分组卷积)怎么理解? 【分组卷积可以减少参数量、且不容易过拟合(类似正则化)】

    关于Conv2d的用法先看以下链接:Conv2d_马鹏森的博客-CSDN博客 注意:首先需要知道的是groups的值必须能整除in_channels和out_channels 前置知识:卷积参数量的计 ...

  4. 卷积神经网络的参数量和计算量

    <卷积神经网络的参数量和计算量>   对于在端部署的模型来说,模型的参数量以及计算量是锱铢必较的,使用什么样的激活函数,会有多大的计算成本.对于模型的压缩量化等都是模型的参数量和计算量的准 ...

  5. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 ICLR 2021...

    导读 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机制替 ...

  6. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 | ICLR 2021

    还没开源 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机 ...

  7. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升|ICLR 2021

    本文首发于极市平台公众号,作者Happy.转载需获得授权并标明出处. paper: https://arxiv.org/abs/2103.08756 code: https://github.com/ ...

  8. 【深度学习】参数量、模型大小、显存

    对于一个深度学习神经网络来说,其通常包含很多卷积层,用于不断提取目标的特征,或对目标进行最终定位或者分类. 1 数据存储精度与存储空间 在深度学习神经网络中,最常见的数据格式是float32,占4个字 ...

  9. group convolution (分组卷积)的计算量详解、卷积计算量特征图大小,池化特征图大小、深度通道deep-wise 卷积

    group convolution (分组卷积)的计算量详解.卷积计算量特征图大小,池化特征图大小.深度通道deep-wise 卷积 提示:最近忙着各种提前批的笔试面试,所以没太多空刷题了都,先复盘一 ...

最新文章

  1. 程序员都想,却不敢做的事?我来!
  2. RxJava 常用总结以及原理理解
  3. 写Java程序要体现面向对象
  4. mysql检查备份数据脚本并在zabbix上告警
  5. tf.data.Dataset.from_tensor_slices() 详解
  6. 如何利用全站加速,提升网站性能和用户体验?
  7. C程序设计语言现代方法09:函数
  8. 【吴恩达课后编程作业pytorch实现】Keras入门与残差网络的搭建【1】
  9. DotNet Framework 小技巧
  10. oracle监听器启动停止,Oracle 10g 监听器启动后停止的解决办法
  11. 【翻译】Species distribution modeling 2 数据准备
  12. CentOS7中的firewall 和 iptables
  13. 360浏览器不弹出java窗口_360浏览器不弹出新窗口怎么办
  14. pytorch搭建卷积神经网络【第三课_自己搭建对抗神经网络】
  15. word树状分支图_word绘制树形图
  16. 2019双十一淘宝天猫刷喵币 不用ROOT,执行javascript脚本
  17. 箭头函数与普通函数,以及使用场景
  18. 如果你狂按F2,F12,DEL也进不了BIOS怎么办?
  19. 优化网站如何看待纯文本外链的作用
  20. HX711称重模块的使用

热门文章

  1. Linux - gzip使用
  2. Appender的几种实现方式
  3. 使用电脑的时候,发现麦克风不能录音了
  4. python 如何创建文件夹(新建文件夹)
  5. SOHO 企业网吧 路由器 智能QoS 3G MIFI
  6. numpy.reshape()函数
  7. 【Python 百练成钢】高精度加法、阶乘计算、矩阵幂运算、矩阵面积交
  8. Vlan和pvlan全面解析
  9. Oracle中 to_date()函数用法详解
  10. jsrun和runjs 哪家强?