【发布时间】:2021-07-12 07:04:16
【问题描述】:
我正在尝试在我的 CNN 培训中使用生成器,但出于某种原因。 但是,当我尝试运行 model.predict_evaluator() 时,每次执行它(我在 Jupyter Notebook 中工作)时,都会给出不同的结果!相同的数据(存储在文件夹中),相同的模型(我只是重新运行相同的单元格)
这个块工作正常,每次我重新运行它时,它都会给出相同的指标
test_generator = test_datagen.flow_from_directory(
'keras_data/test',
batch_size = 1,
class_mode='categorical')
loss, acc = model.evaluate(test_generator, verbose=1)
print(loss,acc)
但是,当我运行这个单元格时,它每次都会给出不同的结果
ytest = test_generator.classes
yhat = np.argmax(model.predict_generator(test_generator),axis=1)
from sklearn.metrics import confusion_matrix
m = confusion_matrix(ytest,yhat)
print(m)
这没有任何意义!对正在发生的事情有任何想法吗?
编辑:这是我创建生成器的方式,以防万一出现问题
train_datagen = ImageDataGenerator(
preprocessing_function=preprocess_input,
horizontal_flip=True)
test_datagen = ImageDataGenerator(preprocessing_function=preprocess_input)
train_generator = train_datagen.flow_from_directory(
'keras_data/train',
batch_size=1,
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
'keras_data/val',
batch_size=1,
class_mode='categorical')
【问题讨论】:
-
ytest和yhat的形状是什么?
-
@ML_Engine 相同,(62,) & (62,)。我在不使用生成器的情况下运行相同的脚本,它运行良好。我不明白为什么 model.predict_generator 在使用相同的模型和测试数据时会提供不同的结果...
-
为测试生成器设置
shuffle = False。 -
@Frightera 这成功了!非常感谢!!!
标签: python tensorflow keras conv-neural-network generator