为什么我很困惑:
如果我在示例[A,B,C]上测试我的模型,它将获得一定的准确性.如果我在示例[C,B,A]上测试相同的模型,它应该获得相同的精度.换句话说,改组示例不应该改变我的模型的准确性.但这似乎发生在下面:
一步步:
这是我训练模型的地方:
model.fit_generator(batches, batches.nb_sample, nb_epoch=1, verbose=2,
validation_data=val_batches,
nb_val_samples=val_batches.nb_sample)
这是我测试模型的地方,而不是洗牌验证集:
gen = ImageDataGenerator()
results = []
for _ in range(3):
val_batches = gen.flow_from_directory(path+"valid", batch_size=batch_size*2,
target_size=target_size, shuffle=False)
result = model.evaluate_generator(val_batches, val_batches.nb_sample)
results.append(result)
结果如下(val_loss,val_acc):
[2.8174608421325682, 0.17300000002980231]
[2.8174608421325682, 0.17300000002980231]
[2.8174608421325682, 0.17300000002980231]
请注意,验证的准确性是相同的.
这是我测试模型的地方,带有一个混洗验证集:
results = []
for _ in range(3):
val_batches = gen.flow_from_directory(path+"valid", batch_size=batch_size*2,
target_size=target_size, shuffle=True)
result = model.evaluate_generator(val_batches, val_batches.nb_sample)
results.append(result)
结果如下(val_loss,val_acc):
[2.8174608802795409, 0.17299999999999999]
[2.8174608554840086, 0.1730000001192093]
[2.8174608268737793, 0.17300000059604645]
请注意,尽管验证集未更改且模型未更改,但验证精度仍然不一致.这是怎么回事?
注意:
我每次都在评估整个验证集.在评估模型之后,model.evaluate_generator返回等于val_batches.nb_sample的示例数,这是验证集中的示例数.