model.evaluate测试集格式
利用tf.data加载和处理图片教程中详细地介绍了如何将原始图片格式转变为模型训练输入所需格式,并未介绍模型测试所需的格式。
由代码可知,最终应用于模型训练的数据集是ds。
model.fit(ds, epochs=15,steps_per_epoch=26)
应用测试集对模型进行评估是至关重要的一部分,测试集的数据结构应该和训练集一样。
根据上图的流程,对测试图片,标签处理,得到image_labels_ds,在下一步骤略有不同
训练集得到ds
BATCH_SIZE = 32
ds = image_label_ds.shuffle(buffer_size=image_count)
ds = ds.repeat()
ds = ds.batch(BATCH_SIZE)
ds = ds.prefetch(buffer_size=AUTOTUNE)
ds
测试集得到t_ds
BATCH_SIZE = 32
t_ds = image_label_ds.shuffle(buffer_size=image_count)
t_ds = t_ds.batch(BATCH_SIZE)
t_ds = t_ds.prefetch(buffer_size=AUTOTUNE)
t_ds
模型测试
test_loss, test_acc = model.evaluate(t_ds,verbose=2)
可以注意到,相比训练集,测试集的数据处理少了以下步骤
t_ds = t_ds.repeat()
否则当运行以下程序时会显示错误
ValueError: When providing an infinite dataset, you must specify the number of steps to run (if you did not intend to create an infinite dataset, make sure to not call repeat()
on the dataset).
test_loss, test_acc = model.evaluate(t_ds,verbose=2)