【问题标题】:Error in model.fit_generator for training the dataset [duplicate]用于训练数据集的 model.fit_generator 出错 [重复]
【发布时间】:2020-09-01 12:21:10
【问题描述】:

我正在训练一个卷积神经网络来对特定语言(古吉拉特语)的 11 个不同字符的 11 个类别进行分类。以下是我的代码:

TRAINING_DIR = "/tmp/characters/train1_set/"

train_datagen = ImageDataGenerator(rescale=1./255,
                                   shear_range=0.2,
                                   zoom_range=0.2,
                                   horizontal_flip=True)

train_generator = train_datagen.flow_from_directory(TRAINING_DIR,
                                                    batch_size=64,
                                                    class_mode='categorical',
                                                    target_size=(64,64))

VALIDATION_DIR = "/tmp/characters/test1_test/"

validation_datagen = ImageDataGenerator(rescale=1./255)
validation_generator = validation_datagen.flow_from_directory(VALIDATION_DIR,
                                                              batch_size=64,
                                                              class_mode='categorical',
                                                              target_size=(64,64))

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3)),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Conv2D(32, (3, 3), activation='relu'),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Conv2D(32, (3, 3), activation='relu'),
    tf.keras.layers.MaxPooling2D(2, 2),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    
    tf.keras.layers.Dense(11, activation='softmax')
])

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])

history = model.fit_generator(train_generator,
                              steps_per_epoch = 8000,
                              epochs = 30, 
                              verbose = 1,  
                              validation_data=validation_generator)

但我收到以下错误:

UnidentifiedImageError                    Traceback (most recent call last)
<ipython-input-25-04de914ce972> in <module>()
      3                               epochs = 30,
      4                               verbose = 1,
----> 5                               validation_data=validation_generator)
      6 

11 frames
/usr/local/lib/python3.6/dist-packages/PIL/Image.py in open(fp, mode)
   2860         warnings.warn(message)
   2861     raise UnidentifiedImageError(
-> 2862         "cannot identify image file %r" % (filename if filename else fp)
   2863     )
   2864 

UnidentifiedImageError: cannot identify image file <_io.BytesIO object at 0x7f338ba64938>

请帮我解决问题!!!提前致谢。

【问题讨论】:

    标签: tensorflow keras deep-learning conv-neural-network


    【解决方案1】:

    ImageDataGenerator 试图读取的文件似乎不是图像或可能是缺陷图像。您可以使用Pillow 非常轻松地检测这些类型的缺陷。但是,此处显示的verify() 方法不会检测到截断的图像。你可以使用这样的东西-

    try:
      im = Image.load(filename)
      im.verify()
      im.close()
    except: 
      #exceptions
    

    【讨论】:

    • 我的所有图像都是 png 格式,并且当我运行上面的代码时会抛出错误文件的异常。如果我将它们转换为 jpg 格式,它会工作吗?!
    • 我不认为会这样做,图像本身可能会损坏
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2018-09-15
    • 2019-10-17
    • 2018-09-26
    • 2022-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多