我训练了模型之后。然后我在评估步骤中感到困惑。它显示了多种结果。 首先,我的火车数据集和测试数据集来自:
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 =”,则显示各种结果。这个“步骤”是什么意思?而我该如何选择合适的呢?
答案 0 :(得分:0)
在documentation中,它表示:
个步骤:从中得出的步骤总数(一批样品) 发电机停止之前。序列的可选:如果未指定,将 使用len(generator)作为许多步骤。
您的测试生成器与每个生成器一样,每次您下次调用时都会生成新的一批数据。在您的情况下,由于batch_size
为64,因此一个步骤对应于64个测试示例。但是您的测试数据集可能还不止这些。 Keras
提供了此功能,因此您可以选择对部分测试数据进行测试,或者选择是否测试数据很大并且可能不适合内存(因此您逐渐进行预测)。
选择不同的步长值时看到的结果略有不同的原因是因为您没有在相同的测试数据上评估模型