【发布时间】:2020-07-18 06:27:37
【问题描述】:
当我收到此错误时,我正在尝试使用一些 512x512 图像执行 VGG16 的小变化:
tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[131072,4096]
这是我的model.summary()
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 512, 512, 64) 1792
_________________________________________________________________
conv2d_1 (Conv2D) (None, 512, 512, 64) 36928
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 256, 256, 64) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 256, 256, 128) 73856
_________________________________________________________________
conv2d_3 (Conv2D) (None, 256, 256, 128) 147584
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 128, 128, 128) 0
_________________________________________________________________
conv2d_4 (Conv2D) (None, 128, 128, 256) 295168
_________________________________________________________________
conv2d_5 (Conv2D) (None, 128, 128, 256) 590080
_________________________________________________________________
conv2d_6 (Conv2D) (None, 128, 128, 256) 590080
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 64, 64, 256) 0
_________________________________________________________________
conv2d_7 (Conv2D) (None, 64, 64, 512) 1180160
_________________________________________________________________
conv2d_8 (Conv2D) (None, 64, 64, 512) 2359808
_________________________________________________________________
conv2d_9 (Conv2D) (None, 64, 64, 32) 147488
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 32, 32, 32) 0
_________________________________________________________________
flatten (Flatten) (None, 32768) 0
_________________________________________________________________
dense (Dense) (None, 4096) 134221824
_________________________________________________________________
dense_1 (Dense) (None, 4096) 16781312
_________________________________________________________________
dense_2 (Dense) (None, 3) 12291
=================================================================
Total params: 156,438,371
Trainable params: 156,438,371
Non-trainable params: 0
这里奇怪的是错误信息中的shape[131072, 4096]。
在我的模型中,正如我们在model.summary() 中看到的那样,唯一的4096 位于最后,在Dense 层中,在flatten 层之后。但是 flatten 层会产生32768 神经元的输出。所以,这种情况下的错误应该是shape[32768, 4096]。我尝试写 2048 或 1024 而不是 4096。但错误总是出现在 shape[131072, 4096] 上,而且这个形状永远不会改变。
问题是:
-
shape[131072, 4096]来自哪里?不应该是shape[32768, 4096]吗? - 如何解决?
我读了一些有同样问题的问题,比如我们:
或
Error: OOM when allocating tensor with shape
但他们都没有解释为什么形状不正确。
【问题讨论】:
标签: tensorflow out-of-memory vgg-net