gpt4 book ai didi

python - 为什么当我尝试使用 fit_generator 训练 Keras 时,它会在第一个 epoch 停止?

转载 作者:行者123 更新时间:2023-12-04 00:29:29 25 4
gpt4 key购买 nike

我正在使用 Keras 微调现有的 VGG16 模型,并使用 fit_generator 来训练最后 4 层。这是我正在使用的相关代码:

# Create the model
model = models.Sequential()

# Add the vgg convolutional base model
model.add(vgg_conv)

# Add new layers
model.add(layers.Flatten())
model.add(layers.Dense(1024, activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(5, activation='softmax'))

# Show a summary of the model. Check the number of trainable params
model.summary()
from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(
rescale=1./255,
rotation_range=20,
width_shift_range=0.2,
height_shift_range=0.2,
horizontal_flip=True,
fill_mode='nearest')

validation_datagen = ImageDataGenerator(rescale=1./255)

#Change the batchsize according to the system RAM
train_batchsize = 100
val_batchsize = 10

train_dir='training_data/train'
validation_dir='training_data/validation'

train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(image_size1, image_size2),
batch_size=train_batchsize,
class_mode='categorical')

validation_generator = validation_datagen.flow_from_directory(
validation_dir,
target_size=(image_size1, image_size2),
batch_size=val_batchsize,
class_mode='categorical',
shuffle=False)

# Compile the model
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])

# Train the model
history = model.fit_generator(
train_generator,
steps_per_epoch=train_generator.samples/train_generator.batch_size,
epochs=30,
validation_data=validation_generator,
validation_steps=validation_generator.samples/validation_generator.batch_size,
verbose=1)

问题是当我运行我的脚本来训练模型时,它可以正常工作,直到实际训练开始。在这里,它卡在了 1/30 纪元。
Layer (type)                 Output Shape              Param #
=================================================================
vgg16 (Model) (None, 15, 20, 512) 14714688
_________________________________________________________________
flatten_1 (Flatten) (None, 153600) 0
_________________________________________________________________
dense_1 (Dense) (None, 1024) 157287424
_________________________________________________________________
dropout_1 (Dropout) (None, 1024) 0
_________________________________________________________________
dense_2 (Dense) (None, 5) 5125
=================================================================
Total params: 172,007,237
Trainable params: 164,371,973
Non-trainable params: 7,635,264
_________________________________________________________________
Found 1989 images belonging to 5 classes.
Found 819 images belonging to 5 classes.
Epoch 1/30

不幸的是,这不好。我在网上环顾四周,我相信问题出在使用 fit_generator 上。 Keras 中 fit_generator 的代码有些问题。然而,大多数遇到 epoch 问题的其他人最终会卡在后面的 epoch 上(例如,有人想运行 20 个 epochs,但它在 19/20 epoch 时停止了)。

我将如何解决这个问题?这是我第一次进行深度学习,所以我非常困惑,希望得到任何帮助。我只需要改用model.fit() 吗?

最佳答案

您必须通过有效的 整数 号码到fit_generator()steps_per_epochvalidation_steps参数。
所以你可以使用如下:

history = model.fit_generator(
train_generator,
steps_per_epoch=train_generator.samples//train_generator.batch_size,
epochs=30,
validation_data=validation_generator, validation_steps=validation_generator.samples//validation_generator.batch_size,
verbose=1)

第二个因素我可以看到你的模型有 165M可训练 参数 它具有巨大的内存消耗,特别是高 批量 .
您应该使用分辨率较低的图像,请注意,在许多情况下,我们可以使用它们获得更好的结果。

关于python - 为什么当我尝试使用 fit_generator 训练 Keras 时,它会在第一个 epoch 停止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53471855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com