gpt4 book ai didi

python - 使用 model.fit_generator 时 keras val 非常慢

转载 作者:太空狗 更新时间:2023-10-30 01:32:19 24 4
gpt4 key购买 nike

当我在 Keras 中使用我的数据集基于 Resnet-50 时(后端是 tensorflow),我觉得很奇怪,在每个纪元之后,val 都比 train 慢。我不知道为什么,是因为我的GPU没有足够的内存吗?我的 GPU 是 K2200,内存为 4 GB。我误解了段落的意思吗?

我有 35946 火车图片,所以我使用:

samples_per_epoch=35946,

我有8986 val pic所以我用:

 nb_val_samples=8986,

以下是我的部分代码:

train_datagen = ImageDataGenerator(
rescale=1./255,
featurewise_center=False, # set input mean to 0 over the dataset
samplewise_center=False, # set each sample mean to 0
featurewise_std_normalization=False, # divide inputs by std of the dataset
samplewise_std_normalization=False, # divide each input by its std
zca_whitening=False, # apply ZCA whitening
rotation_range=20, # randomly rotate images in the range (degrees, 0 to 180)
width_shift_range=0.1, # randomly shift images horizontally (fraction of total width)
height_shift_range=0.1, # randomly shift images vertically (fraction of total height)
horizontal_flip=True, # randomly flip images
vertical_flip=False,
zoom_range=0.1,
channel_shift_range=0.,
fill_mode='nearest',
cval=0.,

)
test_datagen = ImageDataGenerator(rescale=1. / 255)

train_generator = train_datagen.flow_from_directory(
'data/train',
batch_size=batch_size,
class_mode='categorical')

validation_generator = test_datagen.flow_from_directory(
'data/val',
batch_size=batch_size,
class_mode='categorical')
model.fit_generator(train_generator,
# steps_per_epoch=X_train.shape[0] // batch_size,
samples_per_epoch=35946,
epochs=epochs,
validation_data=validation_generator,
verbose=1,
nb_val_samples=8986,
callbacks=[earlyStopping,saveBestModel,tensorboard])

最佳答案

@Yanning 正如您在评论中提到的那样,第一个时期很慢,因为 ImageDataGenerator 正在将数据从磁盘读取到 RAM。这部分非常慢。将数据读入 RAM 后,只需将数据从 RAM 读取和传输到 GPU 即可。

因此,如果您的数据集不是很大并且可以放入您的 RAM,您可以尝试从所有数据集中创建一个 numpy 文件并在开始时读取这些数据。这将节省大量的磁盘寻道时间。

请查看这篇文章以比较不同操作所花费的时间:

Latency Numbers Every Programmer Should Know

延迟比较数字

Main memory reference                         100 nsRead 1 MB sequentially from memory        250,000 ns Read 1 MB sequentially from SSD         1,000,000 nsRead 1 MB sequentially from disk       20,000,000 ns

关于python - 使用 model.fit_generator 时 keras val 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43155510/

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