小编Mot*_*iss的帖子

为什么 tensorflow 消耗这么多内存?

  • 我有一个简单的 CNN(4 个 conv-pool-lrelu 层和 2 个完全连接的层)。
  • 我只在 CPU 上使用 TensorFlow(没有 GPU)。
  • 我有~6GB 的可用内存。
  • 我的批次由 56 张 640x640 像素 ( < 100 MB ) 的图像组成。

并且 TensorFlow 消耗的内存超过可用内存(显然导致程序崩溃)。

我的问题是:为什么 TensorFlow 需要这么多内存来运行我的网络?我不明白是什么占用了这么多空间(也许缓存数据几次以优化卷积计算?保存所有隐藏输出用于反向传播?)。有没有办法防止 TensorFlow 消耗这么多内存?

旁注:

  • 我无法减少批处理的大小,我正在尝试进行一些多实例学习,因此我需要在一次运行中计算所有补丁。
  • 我正在使用 AdamOptimizer
  • 我所有的卷积都是 5x5 窗口,1x1 步长,具有(从第一个到最后一个)32、64、128 和 256 个特征。我正在使用泄漏 ReLU 和 2x2 最大池化。FC 层由 64 个和 3 个神经元组成。
  • 使用 Ubuntu 16.4 / Python 3.6.4 / TensorFlow 1.6.0

python memory tensorflow convolutional-neural-network

1
推荐指数
1
解决办法
1295
查看次数