我不明白“步骤”在生成方法(keras)中是什么意思

2024-03-28 09:37:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在我训练了一个模特之后。然后我在评估的过程中感到困惑。它显示出不同的结果。 首先,我的列车数据集和测试数据集来自:

from keras.preprocessing.image import ImageDataGenerator
# create a data generator
datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)
# load and iterate training dataset
train_it = datagen.flow_from_directory(directory=train_path, target_size=(100, 100), color_mode="rgb",  class_mode='categorical', batch_size=64, subset='training')
# load and iterate test datas
test_it = datagen.flow_from_directory(directory=test_path, target_size=(100, 100), color_mode="rgb", class_mode='categorical', batch_size=64)

评估:

# evaluate model
loss = model.evaluate_generator(test_it, steps=24)
print('Accuracy: %.2f%%' % (loss[1]*100))

准确率:92.90%

# evaluate model
loss = model.evaluate_generator(test_it, steps=64)
print('Accuracy: %.2f%%' % (loss[1]*100))
'''

准确率:93.43%

batch_size= 100
# evaluate model
loss = model.evaluate_generator(test_it, steps= test_it.samples // batch_size)
print('Accuracy: %.2f%%' % (loss[1]*100))

准确率:93.28%

如果我更改“steps=”,它会显示不同的结果。这个“步骤”是什么意思?我该如何选择合适的呢?你知道吗


Tags: fromtestsizemodelmodebatchitsteps
1条回答
网友
1楼 · 发布于 2024-03-28 09:37:38

documentation中,它说:

steps: Total number of steps (batches of samples) to yield from generator before stopping. Optional for Sequence: if unspecified, will use the len(generator) as a number of steps.

测试生成器和每个生成器一样,每次调用next时都会生成一批新的数据。在您的例子中,由于batch_size是64,一个步骤对应64个测试示例。但您的测试数据集可能不止这些。Keras提供此功能,以便您可以选择对测试数据的子集进行测试,或者如果您的测试数据非常大并且可能无法放入内存(因此您可以一点一点地进行预测)。你知道吗

当您选择不同的步长值时,您会看到略有不同的结果,这是因为您没有在相同的测试数据上评估您的模型

  • 首先,您在测试生成器中得到24个批处理>;24*64个测试示例。你知道吗
  • 第二个例子是64*64个测试示例。你知道吗
  • 在最后一个例子中,你拿走了所有的东西(或者几乎是在测试样本的数量不是批量大小的倍数的情况下)。你知道吗

相关问题 更多 >