【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
卷积参数量计算:
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】三维卷积参数量与运算量相关推荐
- 常规-分组-深度分离-分组深度分离卷积-参数量-计算量-dilation-python实现
不同的卷积操作 本文所用样本 一般的卷积(常规的) 分组卷积 深度分离卷积 逐通道卷积(depthwise conv) 逐点卷积 (pointwise conv) 分组深度分离卷积 上面卷积总结 卷积 ...
- 卷积层计算量(FLOPS)和参数量的计算
1.卷积参数量的计算,若卷积层的输入featuremap的维度为Cin×Hin×Win,卷积核的大小为K1×K2, padding=P1×P2, stride=S1×S2,卷积核(filter)的数量 ...
- Conv2d中的groups参数(分组卷积)怎么理解? 【分组卷积可以减少参数量、且不容易过拟合(类似正则化)】
关于Conv2d的用法先看以下链接:Conv2d_马鹏森的博客-CSDN博客 注意:首先需要知道的是groups的值必须能整除in_channels和out_channels 前置知识:卷积参数量的计 ...
- 卷积神经网络的参数量和计算量
<卷积神经网络的参数量和计算量> 对于在端部署的模型来说,模型的参数量以及计算量是锱铢必较的,使用什么样的激活函数,会有多大的计算成本.对于模型的压缩量化等都是模型的参数量和计算量的准 ...
- 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 ICLR 2021...
导读 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机制替 ...
- 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 | ICLR 2021
还没开源 本文是微软&加大圣地亚哥分校的研究员在动态卷积方面的一次突破性的探索,针对现有动态卷积(如CondConv.DY-Conv)存在的参数量大.联合优化困难问题,提出了一种动态通道融合机 ...
- 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升|ICLR 2021
本文首发于极市平台公众号,作者Happy.转载需获得授权并标明出处. paper: https://arxiv.org/abs/2103.08756 code: https://github.com/ ...
- 【深度学习】参数量、模型大小、显存
对于一个深度学习神经网络来说,其通常包含很多卷积层,用于不断提取目标的特征,或对目标进行最终定位或者分类. 1 数据存储精度与存储空间 在深度学习神经网络中,最常见的数据格式是float32,占4个字 ...
- group convolution (分组卷积)的计算量详解、卷积计算量特征图大小,池化特征图大小、深度通道deep-wise 卷积
group convolution (分组卷积)的计算量详解.卷积计算量特征图大小,池化特征图大小.深度通道deep-wise 卷积 提示:最近忙着各种提前批的笔试面试,所以没太多空刷题了都,先复盘一 ...
最新文章
- 程序员都想,却不敢做的事?我来!
- RxJava 常用总结以及原理理解
- 写Java程序要体现面向对象
- mysql检查备份数据脚本并在zabbix上告警
- tf.data.Dataset.from_tensor_slices() 详解
- 如何利用全站加速,提升网站性能和用户体验?
- C程序设计语言现代方法09:函数
- 【吴恩达课后编程作业pytorch实现】Keras入门与残差网络的搭建【1】
- DotNet Framework 小技巧
- oracle监听器启动停止,Oracle 10g 监听器启动后停止的解决办法
- 【翻译】Species distribution modeling 2 数据准备
- CentOS7中的firewall 和 iptables
- 360浏览器不弹出java窗口_360浏览器不弹出新窗口怎么办
- pytorch搭建卷积神经网络【第三课_自己搭建对抗神经网络】
- word树状分支图_word绘制树形图
- 2019双十一淘宝天猫刷喵币 不用ROOT,执行javascript脚本
- 箭头函数与普通函数,以及使用场景
- 如果你狂按F2,F12,DEL也进不了BIOS怎么办?
- 优化网站如何看待纯文本外链的作用
- HX711称重模块的使用