python - 使用测试数据集检查我的 Keras 模型的预测
问题描述
我想检查我的模型计算的预测是否正确。
我已经训练了我的模型并保存了它。我的数据集是使用 tf.keras.preprocessing.image_dataset_from_directory 创建的,如下所示:
ds_train = tf.keras.preprocessing.image_dataset_from_directory(
'data/',
labels = 'inferred',
label_mode = 'categorical',
color_mode = 'rgb',
batch_size = batch_size,
image_size = (img_height, img_width),
shuffle = True,
seed = 123,
validation_split = 0.1,
subset = 'training',
)
ds_validation = tf.keras.preprocessing.image_dataset_from_directory(
'data/',
labels = 'inferred',
label_mode = 'categorical',
color_mode = 'rgb',
batch_size = batch_size,
image_size = (img_height, img_width),
shuffle = True,
seed = 123,
validation_split = 0.1,
subset = 'validation',
)
由于我的模型正在运行并以 95.65% 的准确度进行评估:
Found 921 files belonging to 2 classes.
Using 829 files for training.
Found 921 files belonging to 2 classes.
Using 92 files for validation.
Epoch 1/5
104/104 - 12s - loss: 0.1335 - accuracy: 0.9867
Epoch 2/5
104/104 - 5s - loss: 0.1017 - accuracy: 0.9879
Epoch 3/5
104/104 - 5s - loss: 0.0207 - accuracy: 0.9952
Epoch 4/5
104/104 - 5s - loss: 0.0603 - accuracy: 0.9879
Epoch 5/5
104/104 - 5s - loss: 0.0127 - accuracy: 0.9964
12/12 - 0s - loss: 0.2097 - accuracy: 0.9565
我以与创建训练和验证数据集相同的方式创建了一个 test_dataset。
ds_test = tf.keras.preprocessing.image_dataset_from_directory(
'test/',
labels = 'inferred',
label_mode = 'categorical',
color_mode = 'rgb',
batch_size = batch_size,
image_size = (img_height, img_width),
shuffle = True,
seed = 123,
)
我知道想使用 model.predict() 预测整个 test_dataset。我的数据存储在子文件夹中,如下所示:
---test/
---label1/
---label2/
我设法恢复了所有图像的所有预测,但我无法检查预测是否正确。有没有办法将预测图像的标签存储在列表中?我想使用这样的东西:
for i in test_dataset :
list_labels = test_dataset.class_names(i)
predictions = model.predict(test_dataset)
predictions = np.argmax(predictions, axis=1)
所以我可以检查预测输出并将预测与标签联系起来。此外,我不知道为什么,但我无法使用 like (x_train, y_train) = mnist.load_data 获得标签:
# It is not working
(x_test, y_test) = test_dataset
解决方案
推荐阅读
- javascript - 如何动态声明本地数据
- javascript - 如何通过网页发送电子邮件
- docker - Docker节点级负载平衡不起作用
- javascript - 如何禁用按钮并显示输入标题
- arrays - 通过指针数组获取输入
- php - Laravel 123 中的数组推送
- reactjs - 将 React Markdown NPM 导入 Codepen 会返回空白页
- javascript - 深度优先搜索的深拷贝对象
- python - Django DRF在自定义装饰器中获取请求查询参数,应用于viewsets.ViewSet中的函数
- javascript - 无法将 Ajax 数据传递到 HTML 表中