Mot*_*iss 1 python memory tensorflow convolutional-neural-network
并且 TensorFlow 消耗的内存超过可用内存(显然导致程序崩溃)。
我的问题是:为什么 TensorFlow 需要这么多内存来运行我的网络?我不明白是什么占用了这么多空间(也许缓存数据几次以优化卷积计算?保存所有隐藏输出用于反向传播?)。有没有办法防止 TensorFlow 消耗这么多内存?
旁注:
正如你所提到的:
我所有的卷积都是 5x5 窗口,1x1 步长,具有(从第一个到最后一个)32、64、128 和 256 个特征。我正在使用泄漏 ReLU 和 2x2 最大池化。FC 层由 64 个和 3 个神经元组成。
因此,网络的内存消耗如下:
Input: 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(可忽略不计)
Total for one image = ~ 358 MB
For batch of 56 image = 56 x 358 ~19.6 GB
这就是为什么您的网络无法在6 GB. 尝试一些higher stride或lower sized image将其调整到6 GB空间中。它应该工作。
您可以参考this以更好地理解内存消耗计算。
| 归档时间: |
|
| 查看次数: |
1295 次 |
| 最近记录: |