首页 > 解决方案 > 如何处理以下异常 - 'PngStream' 对象没有属性 'chunk_eXIf'

问题描述

我正在尝试CNN使用 8 个隐藏层构建一个并在后端进行相同的Keras编码Tensorflow。执行时出现未知错误:'PngStream' object has no attribute 'chunk_eXIf'.

我尝试在谷歌上搜索相同的错误。只显示了 3 个链接!它们都没有帮助。

#Importing
from keras.models import Sequential
from keras.layers import Convolution2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense

#classifier
classifier = Sequential()


#convolution layer-1
classifier.add(Convolution2D(32, 9, padding='same', input_shape = (128, 128, 3), activation = 'relu' ))
#maxpooling layer-1
classifier.add(MaxPooling2D(pool_size=(2, 2), strides=None))

#convolution layer-2
classifier.add(Convolution2D(64, 5, padding='same', activation = 'relu' ))
#maxpooling layer-2
classifier.add(MaxPooling2D(pool_size=(2, 2), strides=None))

#convolution layer-3
classifier.add(Convolution2D(64, 3, padding='same', activation = 'relu' ))
#maxpooling layer-3
classifier.add(MaxPooling2D(pool_size=(2, 2), strides=None))

classifier.add(Flatten())

#full connection
classifier.add(Dense(1028, activation = 'relu'))

classifier.add(Dense(4, activation = 'relu'))

#compiling
classifier.compile(optimizer='adam',
          loss='categorical_crossentropy',
          metrics=['accuracy'])

#preprocessing
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)

#loading images
training_set = train_datagen.flow_from_directory(
                                                   r'D:\ImageDataset\Training',
                                                    target_size=(128, 128),
                                                    batch_size=32,
                                                    class_mode='categorical')

#training begins here
classifier.fit_generator(
        training_set,
        steps_per_epoch=7594,
        epochs=5)
classifier.save('cnn_four_classes.h5')

因为我的训练数据中没有图像是 .png,所以所有 epoch 都应该正确运行!我有所有.jpg。

谢谢

标签: pythontensorflowkeraspython-imaging-libraryconv-neural-network

解决方案


有一个nice-script,您可以通过它来控制内部进程。这意味着,您可以定义自己在每次迭代中生成数据的方式,以及从目录中流动的数据。

在这个脚本中,作者从.npy文件中加载数据,而您需要读取可以通过matplotlibCV或其他包完成的图像。根据您的选择使用它。然后添加您想要用于增强的功能,例如旋转、缩放、剪切等。


推荐阅读