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

Python 当使用形状[3075200512]和类型float on分配张量时,OOM:为什么?,python,tensorflow,gpu,Python,Tensorflow,Gpu,我正在通过创建一个灰度图像来使用CNN模型(使用keras)进行实验。 我不得不尝试使用512*512的图像大小,但我得到了一个内存溢出错误。 我不能再减小图像大小了,如果我看一下gpustat,它是32GB,但我不知道为什么会出现内存错误。我不知道在哪里以及如何找到和增加可分配的gpu内存 以下是我迄今为止所做的尝试 1.减少一层神经元的数量 2.使用较小的批量(当前批量5) 3.增加要使用的最大池大小 4.增加步幅 5.辍学者 6.config=tf.ConfigProto() config

我正在通过创建一个灰度图像来使用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时会发生错误,我会非常感激。

简短回答。停止使用
Flatten
并将其更改为
GlobalAveragePooling2D
globalExpooling2D


答案很长。您尝试的是使用
64*64*800
作为完全连接层的输入大小,该层太大了。现代CNN模型都不再使用
展平
,取而代之的是
全球平均池2D
,因为它还保留了CNN的可变大小功能。

标题是打字错误吗?3075200从哪里来?@FrankYellin这只是输入错误消息。3075200是我的型号:)因为它在单独的服务器上运行,所以我无法复制和粘贴它,我通常使用标准尺寸,如224*224用于ResNet或299*299用于接收。如果您的数据是普通图像,您只想对其进行分类,那么我建议使用预先制作的模型,如ResNet,而不是输入尺寸。800*800没有输入尺寸大,通常我在对象检测任务中使用比输入尺寸大的尺寸。您的体系结构也需要改变
批量大小
,如果您提供1-2个图像,800*800不是很大,但可能4个是GPU在培训中可以容纳的最大值第一层的512内核也太多了。通常在那个阶段是64或32。并在每次下采样后获得更宽(更多内核)。