【问题标题】:Loading Actual Class Values and File Names加载实际的类值和文件名
【发布时间】:2021-04-10 04:19:09
【问题描述】:

我已经训练了一个基本的图像分类器,但在尝试评估结果时遇到了一个相当基本的问题。

我正在努力加载我的验证数据的实际值和每个图像的相应文件名,以便将它们与model.predict 值进行比较。

# -*- coding: utf-8 -*-
"""
Created on Sun Jan  3 21:21:02 2021

@author: Sam
"""

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_examples = 425
test_examples = 245
validation_examples = 245
img_height = img_width = 224
batch_size = 32
epochs = 100

model = keras.models.load_model('isic_model4/')

train_datagen = ImageDataGenerator(
    rescale = 1.0/255,
    rotation_range = 15,
    zoom_range = (0.95, 0.95),
    horizontal_flip = True,
    vertical_flip = True,
    data_format = "channels_last",
    dtype = tf.float32,
    )

validation_datagen = ImageDataGenerator(rescale=1.0/255, dtype=tf.float32)
test_datagen = ImageDataGenerator(rescale=1.0/255, dtype=tf.float32)

train_gen = train_datagen.flow_from_directory(
    "ClassifierData/Training/",
    target_size = (img_height, img_width),
    batch_size=batch_size,
    color_mode = "rgb",
    class_mode = "binary",
    shuffle = False,
    seed = 123,
    )

validation_gen = validation_datagen.flow_from_directory(
    "ClassifierData/Validation/",
    target_size = (img_height, img_width),
    batch_size=batch_size,
    color_mode = "rgb",
    class_mode = "binary",
    shuffle = False,
    seed = 123,
    )
    
test_gen = test_datagen.flow_from_directory(
    "ClassifierData/Test/",
    target_size = (img_height, img_width),
    batch_size=batch_size,
    color_mode = "rgb",
    class_mode = "binary",
    shuffle = False,
    seed = 123,
    )

METRICS = [
    keras.metrics.BinaryAccuracy(name="accuracy"),
    keras.metrics.Precision(name="precision"),
    keras.metrics.Recall(name="recall"),
    keras.metrics.AUC(name='auc'),
    ]

valpred1 = model.predict_classes(validation_gen)

【问题讨论】:

  • 您是否在 Jupyter Notebook 中执行此操作?你能添加目录结构吗?

标签: tensorflow machine-learning keras deep-learning classification


【解决方案1】:

您可以通过

获取validation_gen文件名和标签
filenames=validation_gen.filenames
labels=validation_gen.labels

如果您在 validation_gen.flow_from_directory 中设置 shuffle=False,生成器将按照文件名中的顺序将文件提供给 model.predict。您可以使用下面的代码生成预测并打印显示文件名的结果

file_names=valididation_gen.filenames
labels=valididation_gen.labels
preds=model.predict(valididation_gen)
print('{0:^3s}{1:^15s}{2:^11s}{3:^16s}{4:^7s}'.format ('i', 'File Name', 'True Class', 'Predicted Class','Error' ))
for i in range(len(preds)):
    p=np.argmax(preds[i])
    if p==labels[i]:
        error='No'
    else:
        error='Yes'
    print ('{0:^3s}{1:^15s}{2:^11s}{3:^16s}{4:^7s}'.format ( str(i), file_names[i], str(labels[i]), str(p), error ))

您将获得与此类似但具有您自己的文件名的打印输出

 i    File Name   True Class Predicted Class  Error 
 0 class0\001.jpg      0            0          No   
 1 class0\002.jpg      0            0          No   
 2 class0\003.jpg      0            0          No   
 3 class0\004.jpg      0            0          No   
 4 class0\005.jpg      0            0          No   
 5 class0\006.jpg      0            0          No   
 6 class0\007.jpg      0            0          No   
 7 class0\008.jpg      0            0          No   
 8 class0\009.jpg      0            0          No   
 9 class0\010.jpg      0            0          No   
10 class1\011.jpg      1            1          No   
11 class1\012.jpg      1            1          No   

【讨论】:

    猜你喜欢
    • 2018-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    相关资源
    最近更新 更多