大家好,我正在使用TensorFlow和Keras训练模型,数据集是从https://www.microsoft.com/en-us/download/confirmation.aspx?id=54765下载的
这是一个zip文件夹,我将其拆分到以下目录中:
.
├── test
│ ├── Cat
│ └── Dog
└── train
├── Cat
└── Dog
Test.cat 和 test.dog 每个文件夹具有1000张jpg照片,并且train.cat和traing.dog每个文件夹具有11500张jpg照片。
负载正在使用以下代码:
batch_size = 16
# Data augmentation and preprocess
train_datagen = ImageDataGenerator(rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
validation_split=0.20) # set validation split
# Train dataset
train_generator = train_datagen.flow_from_directory(
'PetImages/train',
target_size=(244, 244),
batch_size=batch_size,
class_mode='binary',
subset='training') # set as training data
# Validation dataset
validation_generator = train_datagen.flow_from_directory(
'PetImages/train',
target_size=(244, 244),
batch_size=batch_size,
class_mode='binary',
subset='validation') # set as validation data
test_datagen = ImageDataGenerator(rescale=1./255)
# Test dataset
test_datagen = test_datagen.flow_from_directory(
'PetImages/test')
模型正在使用以下代码进行训练:
history = model.fit(train_generator,
validation_data=validation_generator,
epochs=5)
我得到了以下输入:
Epoch 1/5
1150/1150 [==============================] - ETA: 0s - loss: 0.0505 - accuracy: 0.9906
但当历元在这一点时,我得到以下错误:
无法识别的图像错误:无法识别映像文件0x7f9e185347d0处的IO对象
我怎样才能解决这个问题,以便完成培训?
谢谢
5条答案
按热度按时间jljoyd4f1#
尝试使用此功能检查图像格式是否正确。
vpfxa7rd2#
我不知道这是否仍然相关,但对于将来会遇到同样问题的人来说:
在此特定情况下,dog_cat数据集中有两个损坏的文件:
只要把它们去掉,它就会起作用。
wnavrhmk3#
我以前遇到过这个问题。所以我开发了一个python脚本来测试training和test目录中是否有有效的图像文件。文件扩展名必须是jpg,png,bmp或gif文件,所以它首先检查正确的扩展名。然后它尝试使用cv2读入图像。如果它没有输入有效的图像,则会创建异常。在每种情况下,错误的文件名都会被打印出来。在结束时,名为bad_list的列表包含错误文件路径列表。注意,目录必须命名为“test”和“train”
8wigbo564#
您的图像可能已损坏。在数据预处理步骤中,尝试使用Image.open()查看是否可以打开所有图像。
svmlkihl5#
而不是附加损坏的列表,我们可以只删除在每个示例的错误太...