gpt4 book ai didi

tensorflow - Keras fit 在第一个纪元结束时卡住

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

我目前正在尝试使用 Keras 微调 VGG16 网络。

我开始对猫狗数据集进行一些调整。

但是,在当前配置下,训练似乎在第一个 epoch 就被阻塞了

from keras import applications
from keras.preprocessing.image import ImageDataGenerator
from keras import optimizers
from keras.models import Sequential, Model
from keras.layers import Dropout, Flatten, Dense


img_width, img_height = 224, 224

train_data_dir = 'data/train'
validation_data_dir = 'data/validation'
nb_train_samples = 2000
nb_validation_samples = 800
epochs = 50
batch_size = 20


model = applications.VGG16(weights='imagenet', include_top=False , input_shape=(224,224,3))
print('Model loaded.')


top_model = Sequential()
top_model.add(Flatten(input_shape=model.output_shape[1:]))
top_model.add(Dense(256, activation='relu',name='newlayer'))
top_model.add(Dropout(0.5))
top_model.add(Dense(2, activation='softmax'))


model = Model(inputs= model.input, outputs= top_model(model.output))


for layer in model.layers[:19]:
layer.trainable = False


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

train_datagen = ImageDataGenerator(
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)

test_datagen = ImageDataGenerator(rescale=1. / 255)

train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
shuffle=True,
class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='categorical')


model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples// batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=nb_validation_samples)

最后的输出:

Epoch 1/50 99/100 [============================>.] - ETA: 0s - loss: 0.5174 - acc: 0.7581

我错过了什么吗?

最佳答案

随机播放

在我的例子中,我使用 shuffle='batch' 调用 fit(...)。从参数中删除此参数解决了问题。 (我认为这是一个 TensorFlow 错误,但我没有深入研究。)

验证

另一个考虑因素是验证是在纪元结束时执行的...如果您的验证数据没有被批处理,特别是如果您正在填充数据,那么您可能会对比大得多的数据执行验证您的训练批量大小填充到验证数据的最大样本长度。这可能是内存不足的问题。

关于tensorflow - Keras fit 在第一个纪元结束时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748413/

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