【发布时间】:2019-01-03 00:27:01
【问题描述】:
我有一些按文件夹排列的训练图像、一些验证图像和一些测试图像。我正在使用图像生成器,因为没有。图片数量不够。我正在使用此代码:
height=150
width=150
channels=3
batch_size=32
seed=1337
# Training generator
train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(train_dir,target_size=(height,width),batch_size=batch_size,seed=seed,class_mode='categorical')
# Test generator
test_datagen = ImageDataGenerator(rescale=1./255)
test_generator = test_datagen.flow_from_directory(test_dir,target_size=(height,width),batch_size=batch_size,seed=seed,class_mode='categorical')
并获得输出:
找到属于 5 个类别的 723 张图片。
找到属于 5 个类别的 144 张图片。
这是我的模型架构:
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(150, 150, 3)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
# the model so far outputs 3D feature maps (height, width, features)
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(5))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
这是.fit_generator()的代码:
history = model.fit_generator(
train_generator,
steps_per_epoch=2000 // 64,
epochs=5,
validation_data=test_generator,
validation_steps=800 // 64)
在5 epochs 之后,我得到了70% 的accuracy,但不幸的是val_acc 和val_loss 仍然是0.00000e+00,我不太能弄明白。
我还有一个包含 20 张图片的文件夹,可以预测。如何在它们上使用.predict() 功能?我没有给出标签的.csv 文件。只有训练图像在单独的文件夹中给出,其名称基本上是图像的类。
【问题讨论】:
-
您能否也将调用发布到
fit方法? -
完成,请检查
-
我无法在您的代码中发现任何错误。唯一可能出错的是
test_dir路径或训练目录和测试目录中的目录名称可能不同,或者训练和测试图像非常不同。我没有想到其他任何事情。 -
yaa 相同,即使我什至无法理解。但如果路径方向错误,它就无法检测到属于 5 个类别的 144 张图像。无论如何,你能告诉我预测新图像的代码是什么吗?在我
fit_generator()之后,我如何使用我的model来预测新图像? -
不,我的意思是您可能已将路径设置为另一个也包含图像的目录。对于使用生成器的预测,您可以简单地使用
predict_generator函数。
标签: python image-processing keras deep-learning conv-neural-network