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 次 |
最近记录: |