机器学习入门(四):关于卷积运算量和参数数量的计算
2018-01-24 22:08
381 查看
卷积层的运算量公式
num(MAC)=I*J*M*N*K*L
I J 为卷积核大小
M N为卷积之后输出特征的大小
K表示输入通道个数
L表示输出通道个数(这里的通道数可以理解为单样本特征图的个数)
以lenet中的参数为示例:
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 20
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "pool1"
top: "conv2"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 50
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}输出通道数为50,对应公式中的L,卷积核尺寸为5,对应I和J,conv1层经过池化之后通道数应该不变,还是20,所以K为20,输出特征图的大小如何确定?1是查看之前的层,根据网络描述文件一步步的计算得到,2是查看训练的日志文件,在setup conv2层之后,会输出这一层的blob shape,第一维为batchsize,第二维为通道数,第三维第四维代表输入特征图大小M和N,因为这里计算的是单样本的运算量,所以和batchsize没有关系。
此时,MAC=5*5*8*8*50*20.
注意:输入通道数为K,输出通道数为L,那么卷积核个数为K*L。因为高维卷积计算是多个通道与多个卷积核分别进行二维计算,所以K个通道会需要K个卷积核,计算之后,合并也就是相加得到一个通道,又因为输出通道为L,所以需要K*L个卷积核。
然后就是如何求解参数数量?
其实很简单,就是卷积核个数乘以卷积核尺寸,para=I*J*K*L。
同理可以计算全连接。
num(MAC)=I*J*M*N*K*L
I J 为卷积核大小
M N为卷积之后输出特征的大小
K表示输入通道个数
L表示输出通道个数(这里的通道数可以理解为单样本特征图的个数)
以lenet中的参数为示例:
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 20
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "pool1"
top: "conv2"
param {
lr_mult: 1
}
param {
lr_mult: 2
}
convolution_param {
num_output: 50
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}输出通道数为50,对应公式中的L,卷积核尺寸为5,对应I和J,conv1层经过池化之后通道数应该不变,还是20,所以K为20,输出特征图的大小如何确定?1是查看之前的层,根据网络描述文件一步步的计算得到,2是查看训练的日志文件,在setup conv2层之后,会输出这一层的blob shape,第一维为batchsize,第二维为通道数,第三维第四维代表输入特征图大小M和N,因为这里计算的是单样本的运算量,所以和batchsize没有关系。
此时,MAC=5*5*8*8*50*20.
注意:输入通道数为K,输出通道数为L,那么卷积核个数为K*L。因为高维卷积计算是多个通道与多个卷积核分别进行二维计算,所以K个通道会需要K个卷积核,计算之后,合并也就是相加得到一个通道,又因为输出通道为L,所以需要K*L个卷积核。
然后就是如何求解参数数量?
其实很简单,就是卷积核个数乘以卷积核尺寸,para=I*J*K*L。
同理可以计算全连接。
相关文章推荐
- 卷积参数个数计算和卷积运算过程
- 机器学习之参数估计与矩阵运算基础
- 卷积算子计算方法(卷积运算)
- 值得收藏 | 关于机器学习,这可能是目前最全面最无痛的入门路径和资源!
- 卷积算子计算方法(卷积运算)
- 关于opencv直方图计算函数 calcHist()的channels参数的理解
- 人工智能、机器学习和认知计算入门指南
- 关于微博的正文的整个思维逻辑 (含有只有图片数量计算图片九宫格算法)
- 值得收藏 | 关于机器学习,这可能是目前最全面最无痛的入门路径和资源!
- 用可变参数函数计算指定数量的值的平均数
- 关于 Python 数据抓取、分析、挖掘、机器学习和Python 分布式计算内容分享
- [机器学习入门] 深度学习简介,GPU计算的原理,分布式机器学习原理
- 关于jquery计算页面元素数量
- CNN卷积各层的参数和链接个数的计算
- 值得收藏 | 关于机器学习,这可能是目前最全面最无痛的入门路径和资源!
- python机器学习 scikit learn svm 中关于svc函数的参数解释
- 四则运算问题扩充:1、题目避免重复;2、可定制(数量/打印方式);3、可以控制下列参数: 是否有乘除法、是否有括号、 数值范围、加减有无负数、除法有无余数、否支持分数 (真分数, 假分数, …)、是否支持小数 (精确到多少位)、打印中每行的间隔可调整;
- 卷积转换为矩阵运算中填充数的计算-GEMM
- 关于MATLAB入门的简单记录11 符号运算
- 值得收藏 | 关于机器学习,这可能是目前最全面最无痛的入门路径和资源!