我正在尝试构建具有8个隐藏层的CNN
,并在具有Keras
后端的Tensorflow
中对其进行编码。执行时,我收到一个未知错误:'PngStream' object has no attribute 'chunk_eXIf'
。
我尝试在Google上搜索相同的错误。仅显示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!我都拥有.jpg。
谢谢
答案 0 :(得分:0)
有一个nice-script,您可以通过它控制内部过程。这意味着,您可以定义自己的每次迭代中生成数据的方式,以及从目录中流出数据的方式。
在此脚本中,作者从 .npy 文件中加载了数据,而您需要读取可由 matplotlib , CV 完成的图像strong>或其他软件包。根据您的选择使用它。然后添加要用于增强的功能,例如旋转,缩放,剪切等。