CNN中的卷积操作的参数数计算
2017-12-26 21:18
363 查看
之前一直以为卷积是二维的操作,而到今天才发现卷积其实是在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
_________________________________________________________________
举例:
假设输入的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卷积各层的参数和链接个数的计算
- [转]详细解释CNN卷积神经网络各层的参数和链接个数的计算
- CNN中的卷积操作
- 【深度学习-CNN】CNN中的参数与计算量
- 用sklearn和tensorflow做boston房价的回归计算的比较(2)--卷积神经网路CNN
- (Tensorflow之十一)cnn卷积神经网络LeNet-5模型以及卷积核的计算
- Faster rcnn test浮点运算次数(卷积实现过程,Faster rcnn总体结构和参数)
- 【深度学习-CNN】CNN中的参数与计算量
- 详细解释CNN卷积神经网络各层的参数和链接个数的计算
- CNN之卷积计算层
- Openblas加速三维矩阵卷积操作-增加num_output计算
- 【深度学习-CNN】CNN中的参数与计算量
- 详细解释CNN卷积神经网络各层的参数和链接个数的计算
- 【深度学习-CNN】CNN中的参数与计算量
- 深度学习算法实践11---卷积神经网络(CNN)之卷积操作
- 【深度学习-CNN】CNN中的参数与计算量
- cnn学习之卷积或者池化后输出的map的size计算
- 深度学习系列(十):从卷积计算到卷积神经网络CNN
- 利用fft2计算二维卷积 (Matlab常用图像操作)