相同的测试数据集在评估时产生不同的准确性



相同的测试数据集被输入到训练的模型中以执行评估时。每次返回的精度不同。原因是什么?有解决方案吗?

directory is shown as below ,each class has 200-300 images
dataset
|_ class1
|_ class2
|_ class3
......

代码如下所示

#import dataset
dataset_path = '<directory>'
DIR = pathlib.Path(dataset_path)
#validation set
validation_set = tf.keras.preprocessing.image_dataset_from_directory(
DIR,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(150, 150),
batch_size=32)

#test set
val_batches = tf.data.experimental.cardinality(validation_set)
test_set = validation_set.take(val_batches // 5)
validation_set = validation_set.skip(val_batches // 5)
#build model and train model
#......
#At the end of the training
#accuracy:0.9047  val_accuracy:0.8942
#evaluate model
loss, accuracy = model.evaluate(test_set)
#I run this line of code several times and each time it returns different accuracy 
#Says, the accuracies may range from 0.902 to 0.934

您的模型在哪里定义?如果您使用随机初始化来定义模型(即,您没有指定初始化(,并且每次启动脚本时都会创建模型,那么获得不同的精度是正常的。

初始化起着一定的作用:如果你从两个不同的初始化模型开始,经过训练后,你通常会得到两个相似但仍然不同的模型

你说得对,我成功地重现了你的结果。当您使用GPU时,问题仅出现,因为某些GPU操作不具有确定性。尝试设置:

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"

或者,如果您使用谷歌colab,Runtime>更改运行时类型>硬件加速器>无

最新更新