Я пытаюсь использовать MLP для классификации изображений в Керасе. Мои коды:
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Dropout, Flatten
from keras.preprocessing.image import ImageDataGenerator
# Prepare data generators for train and test
SIZE = 32
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
validation_split=0.2)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'train',
target_size=(SIZE, SIZE),
class_mode='categorical',
batch_size=32,
subset='training')
val_generator = train_datagen.flow_from_directory(
'train',
target_size=(SIZE, SIZE),
class_mode='categorical',
batch_size=32,
subset='validation')
test_generator = test_datagen.flow_from_directory(
'test',
target_size=(SIZE, SIZE),
class_mode='categorical',
batch_size=32)
model_mlp = Sequential()
model_mlp.add(Flatten(input_shape=(32,32, 3)))
model_mlp.add(Dense(256, activation='relu'))
model_mlp.add(Dropout(0.5))
model_mlp.add(Dense(128, activation='relu'))
model_mlp.add(Dropout(0.5))
model_mlp.add(Dense(68, activation='softmax'))
# Compile
model_mlp.compile(optimizer='rmsprop', # other choices: adam or SGD
loss='categorical_crossentropy',
metrics=['accuracy'])
print(model_mlp.summary())
history = model_mlp.fit_generator(
train_generator,
steps_per_epoch=100,
epochs=100,
validation_data=val_generator,
validation_steps=100)
# Showing
show(history, model_mlp)
Можно ли использовать слой Flatten
в качестве входных данных для многослойной модели персептрона, чтобы преобразовать изображение 32 * 32 * 3 в вектор, как указано выше? Спасибо
Есть проблемы с моими кодами? потому что accuracy
меньше 5%, что слишком мало.