首页 > 解决方案 > 在 TimeDistributed CNN 模型的第一个纪元开始时,Google Colab 中的会话崩溃

问题描述

我正在处理 5 个类别的视频分类,并在Google Colab平台中使用TimeDistributed CNN模型。训练数据集包含80 个视频,每个视频包含75 帧。验证数据集包含20 个视频,每个视频包含75 帧。所以,我总共处理了100 个视频。我使用的批量大小是64。但是,在第一个 epoch 开始时,会话崩溃并且ram 使用率已满。我需要修改什么来避免这个问题?

model = tf.keras.models.Sequential([

    tf.keras.layers.TimeDistributed(Conv2D(64, (3,3), padding='same', activation='relu'),input_shape=(75,128, 128, 3)),
    tf.keras.layers.TimeDistributed(MaxPooling2D((2, 2))),
    tf.keras.layers.TimeDistributed(Conv2D(64, (3,3), padding='same', activation='relu')),
    tf.keras.layers.TimeDistributed(MaxPooling2D((2, 2))),
    tf.keras.layers.TimeDistributed(Conv2D(128, (3,3), padding='same', activation='relu')),
    tf.keras.layers.TimeDistributed(Conv2D(128, (3,3), padding='same', activation='relu')),
    tf.keras.layers.TimeDistributed(MaxPooling2D((2, 2))),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(5, activation='softmax')
])

from tensorflow.keras.optimizers import Adam

model.compile(loss='categorical_crossentropy',
              optimizer=Adam(lr=0.0001),
              metrics=['accuracy'])

history = model.fit_generator(
      train_generator,
      validation_data=validation_generator, 
      validation_steps=1500//64, 
      shuffle=False,    
      steps_per_epoch=8,  
      epochs=5,
      verbose=1)

我得到的信息:

WARNING:tensorflow:From <ipython-input-11-c79b34d1df07>:8: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
Instructions for updating:
Please use Model.fit, which supports generators.
Epoch 1/5

然后,出现一个弹出窗口并告诉我会话崩溃了!有人可以帮忙吗??

标签: pythontensorflowkerasgoogle-colaboratory

解决方案


Google colab 为您的数据和模型提供了非常有限的 ~11 Gb 内存。从细节来看,很明显这是一个内存问题,与模型本身无关。

您可以尝试减少数据集,以免内存耗尽,也可以添加数据处理管道以获得更好的外观。


推荐阅读