tensorflow的反向传播是如何实现的? (内存问题)

How is tensorflow's Back propagation implemented ? (Memory problems)

我已经开始实施 fast-rcnn in TF(基于 VGG16)。在进行学习时,如果我尝试在所有层上反向传播,就会遇到内存问题。但是测试效果很好。 (我有一个 Gforce GTX 1060 和 6G 内存)

我想知道怎么来的? TF保存是否需要保存两次参数用于训练?

这是因为激活。在前向传播过程中,您只需要存储最后一层激活,因此内存使用与深度无关。要计算梯度,您需要存储所有层的激活值,因此内存成本会随着网络深度的增加而增加。

反向传播步骤中的内存问题可能是因为:

Each back propagation step takes approximately twice the memory and compute time than the forward propagation step.

摘自此 video,其中还有一个很好的图表解释它。