当使用形状[3075200512]和类型float on分配张量时,OOM:为什么?

2024-10-03 02:33:07 发布

您现在位置:Python中文网/ 问答频道 /正文

This is the picture using command gpustat -i

And This is the picture using method device_lib.list_local_devicesMy model

我正在通过创建一个灰度图像来使用CNN模型(使用keras)进行实验。 我不得不尝试使用512*512的图像大小,但我得到了一个内存溢出错误。 我不能再减小图像大小了,如果我看一下gpustat,它是32GB,但我不知道为什么会出现内存错误。我不知道在哪里以及如何找到和增加可分配的gpu内存

以下是我迄今为止所做的尝试

1.减少一层神经元的数量 2.使用较小的批量(当前批量5) 3.增加要使用的最大池大小 4.增加步幅 5.辍学者 6.config=tf.ConfigProto() config.gpu\u options.allow\u growth=True 7.config=tf.ConfigProto() config.gpu\u options.per\u进程\u gpu\u内存\u分数 8.strategy=tf.distribute.MirroredStrategy() 9镜像_策略=tf.distribute.MirroredStrategy(设备=[“/GPU:0”,“/XLA_GPU:1”])

我已经尝试了以上所有方法,但都不起作用。如果您知道如何修复,请回答。 无法减小图像大小。(这就是我实验的目的) 上面说GPU内存是32GB,但是如果你告诉我为什么在不是32GB的时候会发生错误,我会非常感激


Tags: 内存模型图像configgputf错误批量
1条回答
网友
1楼 · 发布于 2024-10-03 02:33:07

简短的回答。停止使用Flatten,并将其更改为GlobalAveragePooling2DGlobalMaxPooling2D

答案很长。您尝试的是使用64*64*800作为完全连接层的输入大小,这太大了。现代CNN模型都不再使用Flatten,而是用GlobalAveragePooling2D代替,因为它还保留了CNN的可变大小功能

相关问题 更多 >