【问题标题】:Keras Predict_generator gives different results each time I execute itKeras Predict_generator 每次执行时都会给出不同的结果
【发布时间】: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


【解决方案1】:

Shuffle - 是否打乱数据 (default: True) 如果设置为False,则按字母数字顺序对数据进行排序。

来自 cmets

为测试生成器设置shuffle = False 已解决问题(转述自 Frightera)

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2016-04-12
    • 1970-01-01
    相关资源
    最近更新 更多