gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:36:17 24 4
gpt4 key购买 nike

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

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

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

旁注:

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

最佳答案

正如您所提到的:

All my convolutions are 5x5 windows, 1x1 stride, with (from 1st one to last one) 32, 64, 128 and 256 features. I am using leaky ReLUs and 2x2 max pooling. FC layers are composed of 64 and 3 neurones.

因此,网络的内存消耗如下:

输入: 640x640x3 = 1200(以 KB 为单位)

C1: 636x636x32 = 12.5 MB(stride=1 有效)

P1: 635x635x32 = 12.3 MB(stride=1 有效)

C2: 631x631x64 = 24.3 MB

P2: 630x630x64 = 24.2 MB

C3: 626x626x128 = 47.83 MB

P3: 625x625x128 = 47.68 MB

C4: 621x621x256 = 94.15 MB

P4: 620x620x256 = 93.84 MB

FC1: 64 = 0.0625 KB(可忽略不计)

FC2: 3 = 0.003 KB(可忽略不计)

一张图片总计 = ~ 358 MB

批量 56 张图像 = 56 x 358 ~19.6 GB

这就是您的网络无法在 6 GB 上运行的原因。尝试使用一些较大步幅较小尺寸的图像将其调整为6 GB空间。它应该可以工作。

您可以引用this更好地理解内存消耗计算。

关于python - 为什么 tensorflow 消耗这么多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50093581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com