x_test和y_test来自tf.keras.预处理.图像数据集来自目录

mwg9r5ms  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(142)

如何从下面的代码中获取x_test和y_test

test_generator = tf.keras.preprocessing.image_dataset_from_directory(
   data_dir2, labels ='inferred', label_mode='categorical',
    #validation_split=0.2,
    #subset="validation",
    #labels='inferred',
    seed=123,
    image_size=(img_height, img_width),
    batch_size=64)
siv3szwd

siv3szwd1#

根据文档image_dataset_from_directory-function -它可能返回元组(images, labels),因此您可以尝试使用for-loop来创建包含XY的列表
因为它返回一些EagerTensor中的值,所以我使用append()来移动到普通列表中。

X = []
Y = []

for images, labels in test_generator:
    for image in images:
        X.append(image)                    # append tensor
        #X.append(image.numpy())           # append numpy.array
        #X.append(image.numpy().tolist())  # append list
    for label in labels:
        Y.append(image)                    # append tensor
        #Y.append(image.numpy())           # append numpy.array
        #Y.append(image.numpy().tolist())  # append list

如果使用label_mode='int',则会得到Y = [ 1, 0, 2 ]
如果使用label_mode='categorical',则会得到Y = [ [0, 1, 0], [1, 0, 0], [0, 0, 1] ]
如果需要包含类名的字符串(并且使用label_mode='int'):

Y = [test_generator.class_names[x] for x in Y]

相关问题