python - 在 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
然后,出现一个弹出窗口并告诉我会话崩溃了!有人可以帮忙吗??
解决方案
Google colab 为您的数据和模型提供了非常有限的 ~11 Gb 内存。从细节来看,很明显这是一个内存问题,与模型本身无关。
您可以尝试减少数据集,以免内存耗尽,也可以添加数据处理管道以获得更好的外观。
推荐阅读
- c# - 无法加载文件或程序集“MySql.Data”参数不正确
- android - 已安装硬件加速,但 Visual Studio for Mac 找不到它。我该如何进行?
- python - 消息:元素无法通过键盘访问
- python - TypeError: __init__() 采用 1 个位置参数,但给出了 2 个(“GET /%3Cint:pk%3E.pk HTTP/1.1”500 61744)
- javascript - Android 上的 RN 可访问性 - TalkBack 如何通过 View 读取的顺序
- java - 如何解码交易的输入数据?
- mapr - 无法访问 MapR
- python - 为什么“sort_values”不能正常工作?
- reactjs - 在反应选择中排序
- reporting-services - SSRS 矩阵到 Excel 导出创建附加行