文章目录
- 图片中的卷积的memory, params, flop是怎么计算的呢?
- Memory
- Params
- Flop
- 池化层
图片中的卷积的memory, params, flop是怎么计算的呢?
Memory
内存:存储每一层输出的元素 = C * H * W = 64 * 56 * 56 = 200704 个元素
有200704个元素,每个元素4个字节(假如说32-bit 浮点数哈)
KB = 输出元素的个数 * 每个元素的大小 / 1024
= 200704 * 4 / 1024
= 784
Params
权重的形状 = c_out * (c_in * k * k) = 64 * 3 * 11 * 11
偏差 = c_out = 64
权重的数量 = 权重的形状 + output的偏差 = 64 * 3 * 11 * 11 + 64 = 23296
Flop
浮点运算的数量(乘法 + 加法)= 每一层输出的元素个数 * 每一个元素的运算量 = (c_out * H * W) * (c_in * K * K) = (64 * 56 * 56) * (3 * 11 * 11) = 72855552
池化层
池化层起到缩小(downsample) H / W 的作用.
他没有可学习的参数
来看一下AlexNet
- 大部分的计算量都在卷积层(一个一个的点乘)
- 全连接层的参数量是最大的
- 前几层的卷积层的output(h,w比较大)比较大,占的memory大。