CNN中的卷积操作的参数数计算
之前一直以为卷积是二维的操作,而到今天才发现卷积其实是在volume上的卷积。比如输入的数据是channels*height*width(3*10*10),我们定义一个核函数大小为3*3,则输出是8*8。实际核函数的参数量是3*3*channels,在本例子中就是3*3*3。
举例:
假设输入的tensor是3*10*10,定义一个大小为3*3的kernel,如果进行一个conv2d操作,输出的feature map是5的话,那么这个conv2d涉及的参数数是3*3*3*5+5=140个,输出大小5*8*8。其中3*3*3代表的是核参数,5代表的是bias数。
验证代码:
from keras.layers import Dense, Conv2D
from keras.models import Sequential
model = Sequential()
conv1 = Conv2D(5, 3, input_shape=(3, 10, 10))
model.add(conv1)
print(model.summary())
_________________________________________________________________
Layer (type) Output Shape Param #
=========================================================
conv2d_1 (Conv2D) (None, 5, 8, 8) 140
=========================================================
Total params: 140
Trainable params: 140
Non-trainable params: 0
_________________________________________________________________
3D卷积意思是指在多个channel的volume上进行convolution操作。比如:5个4*10*10(深度、高度、宽度)大小的volume组成的高维数组。假设核大小为2*2*2,stride为1,输出feature map的数量为4,那么参数数为2*2*2*channels(5)*output feature maps(4)+4=164。输出大小为4*3*9*9。其中第一个4对应的是feature map数,第二个3对应的是深度,第三个9对应的是高度,第四个9对应的是宽度。
验证代码:
from keras.layers import Conv3D
from keras.models import Sequential
model = Sequential()
conv1 = Conv3D(4, 2, input_shape=(5, 4, 10, 10))
model.add(conv1)
print(model.summary())
_________________________________________________________________
Layer (type) Output Shape Param #
=========================================================
conv3d_1 (Conv3D) (None, 4, 3, 9, 9) 164
=========================================================
Total params: 164
Trainable params: 164
Non-trainable params: 0
_________________________________________________________________
CNN中的卷积操作的参数数计算的更多相关文章
- (原)CNN中的卷积、1x1卷积及在pytorch中的验证
转载请注明处处: http://www.cnblogs.com/darkknightzh/p/9017854.html 参考网址: https://pytorch.org/docs/stable/nn ...
- CNN中各类卷积总结:残差、shuffle、空洞卷积、变形卷积核、可分离卷积等
CNN从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中 ...
- CNN中的卷积理解和实例
卷积操作是使用一个二维卷积核在在批处理的图片中进行扫描,具体的操作是在每一张图片上采用合适的窗口大小在图片的每一个通道上进行扫描. 权衡因素:在不同的通道和不同的卷积核之间进行权衡 在tensorfl ...
- [转]CNN 中千奇百怪的卷积方式大汇总
https://www.leiphone.com/news/201709/AzBc9Sg44fs57hyY.html 推荐另一篇很好的总结:变形卷积核.可分离卷积?卷积神经网络中十大拍案叫绝的操作. ...
- CNN神经网络之卷积操作
在看这两个函数之前,我们需要先了解一维卷积(conv1d)和二维卷积(conv2d),二维卷积是将一个特征图在width和height两个方向进行滑动窗口操作,对应位置进行相乘求和:而一维卷积则只是在 ...
- CNN中千奇百怪的卷积方式大汇总
1.原始版本 最早的卷积方式还没有任何骚套路,那就也没什么好说的了. 见下图,原始的conv操作可以看做一个2D版本的无隐层神经网络. 附上一个卷积详细流程: [TensorFlow]tf.nn.co ...
- CNN中1x1 卷积的处理过程及作用
参看:https://blog.csdn.net/ybdesire/article/details/80314925
- 由浅入深:CNN中卷积层与转置卷积层的关系
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由forrestlin发表于云+社区专栏 导语:转置卷积层(Transpose Convolution Layer)又称反卷积层或分数卷 ...
- CNN中卷积的意义
在传统的神经网络中,比如多层感知机(MLP),其输入通常是一个特征向量.需要人工设计特征,然后将用这些特征计算的值组成特征向量.在过去几十年的经验来看,人工找的特征并不总是好用.有时多了,有时少了,有 ...
随机推荐
- Velocity(4)——引入指令和#Parse 指令
#Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT.这两者之间有一些区别. #Include 被#Include引入的文件,其内容不 ...
- C#用panel实现子窗体的切换
今天编程的时候,遇到一个问题:在同一个窗体区域加载两个不同的窗体,每次只显示一个子窗体并能够对这两个子窗体做切换. 对于这个问题用panel控件是非常简单的,只要每次清空panel控件上的子窗体,然后 ...
- c#基础知识索引器
代码 ]); }} 在这里我们看到,无非是实现了一个泛型算法 等同于 Ontology List<string> lit=new List<string>(); lis. ...
- Java中Comparable和Comparator比较
1.Comparable 介绍 Comparable 是一个排序接口,如果一个类实现了该接口,说明该类本身是可以进行排序的.注意,除了基本数据类型(八大基本数据类型) 的数组或是List,其余类型的对 ...
- NULL字段对于UNIQUE INDEX失效
- FPGA时钟分频(转)
http://www.cnblogs.com/fpga/archive/2009/10/24/1589318.html 占空比为50%的分频 偶数分频比较简单 比如N分频,那么计数到N/2-1,然后时 ...
- 【爬虫】利用Scrapy抓取京东商品、豆瓣电影、技术问题
1.scrapy基本了解 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘, 信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取(更确切来说,网络抓 ...
- A computer hardware platform abstraction - part.1
intro Nowdays every electronic computer is based on Boole Algebra and Sequential Logic,So my post w ...
- Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)
故障是在所难免的,容器可能崩溃,Docker Host 可能宕机,不过幸运的是,Swarm 已经内置了 failover 策略. 创建 service 的时候,我们没有告诉 swarm 发生故障时该如 ...
- Ani动态光标格式解析
数据结构: Ani文件中的数据是按区段存放的,区段数据结构如下: 标识符(4字节ASCII),数据长度(一个DWORD),数据 按照此规则来看Ani文件,文件起始12字节可以理解为标准文件头,除数据长 ...