在我训练了一个模特之后。然后我在评估的过程中感到困惑。它显示出不同的结果。 首先,我的列车数据集和测试数据集来自:
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=”,它会显示不同的结果。这个“步骤”是什么意思?我该如何选择合适的呢?你知道吗
在documentation中,它说:
测试生成器和每个生成器一样,每次调用next时都会生成一批新的数据。在您的例子中,由于
batch_size
是64,一个步骤对应64个测试示例。但您的测试数据集可能不止这些。Keras
提供此功能,以便您可以选择对测试数据的子集进行测试,或者如果您的测试数据非常大并且可能无法放入内存(因此您可以一点一点地进行预测)。你知道吗当您选择不同的步长值时,您会看到略有不同的结果,这是因为您没有在相同的测试数据上评估您的模型
相关问题 更多 >
编程相关推荐