CNN 的内存成本是多少?

数据挖掘 美国有线电视新闻网 卷积神经网络
2021-09-18 09:58:29

我最近在考虑 (a) 训练 CNN 和 (b) 使用 CNN 进行推理的内存成本。请注意,我不是在谈论存储(这只是参数的数量)。

给定的 CNN(例如 VGG-16 D)需要多少内存

  • (a) 培训(与 ADAM)
  • (b) 对单个图像的推断?

我的想法

基本上,我想确保我没有忘记这个问题。如果您有其他资料可以解释这种想法,请与我分享。

(a) 培训

对于使用 ADAM 进行训练,我现在假设我的 Mini-batch 大小为 BNwN是 CNN 的参数个数。那么单次训练过程的内存占用量(训练时我在任何时候需要的最大内存量)是:

  • 2w:将权重和权重更新保存在内存中
  • B 所有生成的特征图的大小(前向传递)
  • w:每个权重的梯度(反向传播)
  • w: 每个权重的学习率 (ADAM)

(b) 推论

在推理中,不需要存储层的特征图 i1 如果图层的特征图 i已经计算好了。所以推理时的内存占用是:

  • w: 该模型
  • 两个最昂贵的连续层(已经计算的一个,计算的净一个)
1个回答

总 RAM 将是 -批量大小 X RAM 来训练一个图像(因为反向传播发生在批次之后)

一张训练图像的 RAM -

A/ 4 字节 X 参数数量

B/考虑下采样和特征图数量的每一层的输入大小

(假设输入是200×300像素,第一层的特征图可能是100×150,第二层的特征图可以是50×75,第三层的特征图可以是25×38。第一个卷积层有100个特征地图,第一层占用 4 × 100 × 150 × 100 = 600 万字节 (6 MB)。第二层将占用 4 × 50 × 75 × 200 = 300 万字节 (3 MB)。

C/输入图像的大小