我购买了 Colab pro 来训练我的 CNN 模型,当我尝试仅使用 4k 图像训练模型时,训练会立即开始......但是当我尝试使用 30k 图像训练模型时,训练不会甚至开始。 .我什至等了1个小时,但模型从未开始训练,它在第一个时期本身就卡住了....我的代码没有任何问题,我仔细检查了它....图像显示了我卡住的地方即使在我的模型训练的第一个时期也有 30k 图像
我使用此生成器修复了大数据集问题...我使用了下面的代码
train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
validation_split=0.2) # set validation split
train_generator = train_datagen.flow_from_directory(
data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical',
subset='training') # set as training data
validation_generator = train_datagen.flow_from_directory(
data_dir, # same directory as training data
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical',
subset='validation') # set as validation data
history=model.fit_generator(
train_generator,
steps_per_epoch = train_generator.samples // batch_size,
validation_data = validation_generator,
validation_steps = validation_generator.samples // batch_size,
epochs = epochs)
批量处理对于训练大型数据集是一个好主意。延迟是由于数据集中的数据量较大造成的。下面是一个很好的例子。 (注意每个时期的步骤如何划分数据)。根据您的数据仔细选择批量大小。
batch_size = 1000
history = model.fit_generator(
train_generator,
steps_per_epoch=train_generator.samples//train_generator.batch_size,
epochs=5,
validation_data=validation_generator, validation_steps=validation_generator.samples//validation_generator.batch_size,
verbose=1)
当您想要在大量图像上拟合模型时,您无法传递整个图像数据库,您必须使用仅将当前批次传递给模型的生成器,请考虑编写一个或使用 TFRecords。这是谷歌实验室的一个很好的例子:
https://codelabs.developers.google.com/codelabs/keras-flowers-tpu/#4
实际上,我面临着同样的问题,但对我来说,其他笔记本(0.1,0.0001 学习率,25 个时期)已经训练成功。但是 0.01 的已经停留在纪元 1 了。
如果您找到了解决方案,请标记