You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于CNN的脑损伤预测模型训练遇ResourceExhausted错误求解决方案

解决CNN训练时的ResourceExhausted(显存不足)错误

你的问题核心是输入图像尺寸过大+模型参数过多,导致显存被占满,内核崩溃。以下是具体解决方法:

1. 大幅缩小图像尺寸

当前target_size=(1000, 800)的彩色图像,单张就占10008003=240万像素,batch_size=32时一次性加载7680万像素的数据,显存直接过载。

修改生成器的target_size,比如减半到(250, 200),甚至更小的(125, 100):

train_generator = train_datagen.flow_from_dataframe(
    dataframe=train_df,
    x_col='Image_Path',
    y_col='Label',
    target_size=(250, 200),  # 缩小尺寸
    batch_size=32,
    class_mode='binary')

test_generator = test_datagen.flow_from_dataframe(
    dataframe=test_df,
    x_col='Image_Path',
    y_col='Label',
    target_size=(250, 200),  # 同步修改
    batch_size=32,
    class_mode='binary')

同时记得同步修改模型的input_shape为对应尺寸,比如(250, 200, 3)。

2. 降低batch_size

减少每次加载的样本数量,比如从32降到16、8甚至4:

train_generator = train_datagen.flow_from_dataframe(
    ...
    batch_size=8,  # 减小batch_size
    ...)

3. 简化模型结构

当前模型的参数规模对于小数据集(仅233个样本)来说过于庞大,可通过以下方式精简:

  • 减少卷积核数量:把Conv2D的32/64/128改成16/32/64
  • 用GlobalAveragePooling2D替代Flatten:避免把所有特征图展平成巨量参数,而是取每个特征图的平均值,大幅降低维度
  • 减少全连接层的神经元数量:把256改成128甚至64

示例精简后的模型:

model = Sequential([
    Conv2D(16, (3, 3), activation='relu', input_shape=(250, 200, 3)),
    MaxPooling2D(2, 2),
    Conv2D(32, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    tf.keras.layers.GlobalAveragePooling2D(),  # 替换Flatten
    Dense(128, activation='relu'),
    Dropout(0.5),
    Dense(1, activation='sigmoid')
])

4. 开启混合精度训练

让TensorFlow自动用半精度(float16)进行计算,显存占用直接减半,且几乎不影响模型精度:

# 在导入TensorFlow后加入
from tensorflow.keras.mixed_precision import set_global_policy
set_global_policy('mixed_float16')

# 模型最后一层保持float32输出,避免数值精度问题
model = Sequential([
    ...
    Dense(1, activation='sigmoid', dtype='float32')
])

5. 显存优化配置(针对GPU)

让GPU按需分配显存,而非一次性占满所有显存:

# 在代码开头加入
import tensorflow as tf
physical_devices = tf.config.list_physical_devices('GPU')
if physical_devices:
    tf.config.experimental.set_memory_growth(physical_devices[0], True)

建议组合方案

优先尝试缩小图像尺寸+降低batch_size,这两个操作见效最快;如果还是不行,再加上精简模型或混合精度训练。

内容的提问来源于stack exchange,提问作者Rishi Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:23:27