Memory management tensorflow';实现了什么样的反向传播?(内存问题)

Memory management tensorflow';实现了什么样的反向传播?(内存问题),memory-management,tensorflow,object-detection,tensorflow-gpu,Memory Management,Tensorflow,Object Detection,Tensorflow Gpu,我已经开始实现(基于VGG16的)。在学习的过程中,如果我试图在所有层上反向传播,我的记忆就会出现问题。但测试效果很好。(我有一个Gforce GTX 1060和6G ram) 我在想为什么会这样?TF保存是否需要为训练保存两次参数?这是因为激活。在正向传播期间,您只需要存储最后一层激活,因此内存使用与深度无关。要计算梯度,您需要存储所有层的激活,所以内存成本会随着网络的深度而增加 反向传播步骤中的内存问题可能会出现,因为: 每个反向传播步骤大约占用两倍的内存和时间 计算比前向传播步长更长的时间

我已经开始实现(基于VGG16的)。在学习的过程中,如果我试图在所有层上反向传播,我的记忆就会出现问题。但测试效果很好。(我有一个Gforce GTX 1060和6G ram)


我在想为什么会这样?TF保存是否需要为训练保存两次参数?

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


反向传播步骤中的内存问题可能会出现,因为:

每个反向传播步骤大约占用两倍的内存和时间 计算比前向传播步长更长的时间

摘自这张图,它还有一个很好的图表来解释它