Keras 重新训练VGG 16的密集层时出现内存问题

Keras 重新训练VGG 16的密集层时出现内存问题,keras,deep-learning,theano,vgg-net,Keras,Deep Learning,Theano,Vgg Net,我想使用Keras和后端对VGG16的完全连接层进行再培训,以获得大灰度图像(1800x1800) 因此,我: 使用单个颜色通道创建新VGG,并加载原始VGG的权重 将trainable=False添加到所有卷积层(池和填充根据定义不可训练) 删除前两个密集层,只保留两个神经元的输出层 由于我使用1800x1800输入(别无选择),因此大幅增加最大池维度和步幅。尺寸下降得非常快,以匹配原始VGG尺寸 减少批处理大小以减少所需的内存 但当我开始训练时,我会面临一个CNMEM状态记忆不足错误。我

我想使用Keras和后端对VGG16的完全连接层进行再培训,以获得大灰度图像(1800x1800)

因此,我:

  • 使用单个颜色通道创建新VGG,并加载原始VGG的权重
  • 将trainable=False添加到所有卷积层(池和填充根据定义不可训练)
  • 删除前两个密集层,只保留两个神经元的输出层
  • 由于我使用1800x1800输入(别无选择),因此大幅增加最大池维度和步幅。尺寸下降得非常快,以匹配原始VGG尺寸
  • 减少批处理大小以减少所需的内存
但当我开始训练时,我会面临一个CNMEM状态记忆不足错误。我使用NVIDIA K40,所以我的内存为12Go


您知道如何修复它吗?

您应该包括model.summary()的输出,很可能该模型太大,无法装入VRAM。您可以尝试减少批处理大小,直到它适合RAM。该模型是典型的VGG,具有更小的密集层,因此最终比经典VGG更小。我已经将批大小减少到了可能的最小值。请尝试减少批大小,并确保输入的大小合理,如原始版本中的224x224VGG@Nain:批量大小已达到最小值,我无法处理较小的图像:-(