keras 我的谷歌colab会话是崩溃,由于过量的RAM使用

63lcw9qa  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(506)

我用2403张1280x720 px的图像训练CNN。这是我正在运行的代码:

  1. from tensorflow.keras.preprocessing.image import ImageDataGenerator
  2. import tensorflow as tf
  3. from tensorflow import keras
  4. from tensorflow.keras.layers import Conv2D,MaxPooling2D,Activation,Dense,Flatten,Dropout
  5. model = keras.Sequential()
  6. model.add(Conv2D(32, (3, 3), input_shape=(1280,720,3)))
  7. model.add(Activation('relu'))
  8. model.add(MaxPooling2D(pool_size=(2, 2)))
  9. model.add(Conv2D(32, (3, 3)))
  10. model.add(Activation('relu'))
  11. model.add(MaxPooling2D(pool_size=(2, 2)))
  12. model.add(Conv2D(64, (3, 3)))
  13. model.add(Activation('relu'))
  14. model.add(MaxPooling2D(pool_size=(2, 2)))
  15. model.add(Flatten())
  16. model.add(Dense(64))
  17. model.add(Activation('relu'))
  18. model.add(Dropout(0.5))
  19. model.add(Dense(3))
  20. model.add(Activation('softmax'))
  21. model.compile(loss='categorical_crossentropy',
  22. optimizer='rmsprop',
  23. metrics=['accuracy'])
  24. train_datagen = ImageDataGenerator(
  25. rescale=1. / 255,
  26. shear_range=0.2,
  27. zoom_range=0.2,
  28. horizontal_flip=True)
  29. # this is the augmentation configuration we will use for testing:
  30. # only rescaling
  31. test_datagen = ImageDataGenerator(rescale=1. / 255)
  32. train_generator = train_datagen.flow_from_directory(
  33. '/gdrive/MyDrive/shot/training',
  34. target_size=(1280, 720),
  35. batch_size=640,
  36. class_mode='categorical')
  37. history = model.fit(
  38. train_generator,
  39. steps_per_epoch= 2403//640,
  40. epochs= 15,
  41. )

会话在第一个epoch之前崩溃。有什么方法可以减少RAM的使用吗?我还有其他选择吗?

nr7wwzry

nr7wwzry1#

看起来你有一个很大的批处理大小,它消耗了所有的RAM。所以我建议先尝试较小的批量大小,如32或64。此外,您的图像尺寸太大,您可以在实验开始时缩小它。

  1. train_generator = train_datagen.flow_from_directory(
  2. '/gdrive/MyDrive/shot/training',
  3. target_size=(256, 256), # -> Change the image size
  4. batch_size=32, # -> Reduce batch size
  5. class_mode='categorical'
  6. )
xwbd5t1u

xwbd5t1u2#

有多种可用的解决方案
1.订阅colab pro根据您的要求使用RAM。
1.减少批量,例如:batch_size=512,256,64,32,16,8(基于工作溶液)。
1.使用你的一小部分数据或样本,比如只训练几个样本或一大块数据,例如#将数据集分成小部分
train_data = train_data.sample(n=8000,random_state=12).copy()train_data = train_data.reset_index(drop=True)test_data = test_data.sample(n=2014,random_state=12).copy()test_data = test_data.reset_index(drop=True)
根据您的工作解决方案进行更改。
1.这一步不保证可能是工作或没有,所以请不要认真对待(一)。运行时->管理会话删除所有会话并再次打开文件,第二个步骤可能工作或不工作,但至少尝试一次(ii.)。运行时->断开连接并删除运行时,然后重新启动系统并重新加载colab页面有时RAM是分布在多个部分,所以按照这一步骤。这有时工作,有时不是它的工作,为我,这就是为什么我提到这里x1c 0d1x

相关问题