首页 文章

Keras图像数据生成器显示标签

提问于
浏览
2

我正在使用ImageDataGenerator来增强我的图像 . 我需要从发电机获取y标签 .

示例:我有10个训练图像,7个是标签0,3个是标签1.我想将训练集大小增加到100 .

total_training_images = 100 total_val_images = 50

model.fit_generator(
    train_generator,
    steps_per_epoch= total_training_images // batch_size,
    epochs=epochs,
    validation_data=validation_generator,
    validation_steps= total_val_images // batch_size)

根据我的理解,这为每个时期的100个训练图像训练模型,每个图像根据我的数据生成器以某种方式或另一个增强,然后在50个图像上进行验证 .

如果我做 train_generator.classes ,我得到一个输出[0,0,0,0,0,0,0,1,1,1] . 这对应于标签0的7张图像和标签1的3张图像 .

对于这些新的100张图片,我如何获得y标签?这是否意味着当我将此增加到100张图像时,我的新 train_generator 标签是相同的,但重复了10次?基本上 np.append(train_generator.classes) 10次?

我正在关注本教程,如果有帮助:https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

2 回答

  • 1

    标签生成与图像一起热编码 . 希望这有帮助!

    training_set.class_indices
    
    from keras.preprocessing import image
    import matplotlib.pyplot as plt
    
    x,y = train_generator.next()
    for i in range(0,3):
        image = x[i]
        label = y[i]
        print (label)
        plt.imshow(image)
        plt.show()
    
  • 3

    基于你对发电机的看法,是的 .

    它将为每个增强图像复制相同的标签 . (否则模型不能正常训练) .

    检查生成器输出内容的一种简单方法是获得它产生的结果:

    X,Y = train_generator.next() #or next(train_generator)
    

    请记住,这会将发电机置于产生第二个元素的位置,而不是第一个元素 . (这将使fit方法从第二个元素开始) .

相关问题