卷积模型的Memory, Params, Flop是如何计算的?

文章目录

  • 图片中的卷积的memory, params, flop是怎么计算的呢?
    • Memory
    • Params
    • Flop
    • 池化层

卷积模型的Memory, Params, Flop是如何计算的?_第1张图片

图片中的卷积的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大。
    卷积模型的Memory, Params, Flop是如何计算的?_第2张图片

卷积模型的Memory, Params, Flop是如何计算的?_第3张图片

你可能感兴趣的:(人工智能)