Spaces:
Sleeping
Sleeping
from keras.models import Sequential | |
from keras.layers import Dense, Dropout, Flatten | |
from keras.layers import Conv2D | |
from keras.layers import MaxPooling2D | |
from keras.optimizers import Adam | |
from keras.preprocessing.image import ImageDataGenerator | |
train_dir = 'data/train' | |
val_dir = 'data/test' | |
train_datagen = ImageDataGenerator(rescale=1./255) | |
val_datagen = ImageDataGenerator(rescale=1./255) | |
train_generator = train_datagen.flow_from_directory( | |
train_dir, | |
target_size = (48,48), | |
batch_size = 64, | |
color_mode = "grayscale", | |
class_mode = 'categorical' | |
) | |
val_generator = val_datagen.flow_from_directory( | |
val_dir, | |
target_size = (48,48), | |
batch_size = 64, | |
color_mode = "grayscale", | |
class_mode = 'categorical' | |
) | |
emotion_model = Sequential() | |
emotion_model.add(Conv2D(32, kernel_size=(3,3), activation='relu', input_shape = (48,48,1))) | |
emotion_model.add(Conv2D(64, kernel_size=(3,3), activation='relu')) | |
emotion_model.add(MaxPooling2D(pool_size=(2,2))) | |
emotion_model.add(Dropout(0.25)) | |
emotion_model.add(Conv2D(128, kernel_size=(3,3), activation='relu')) | |
emotion_model.add(MaxPooling2D(pool_size=(2,2))) | |
emotion_model.add(Conv2D(128, kernel_size=(3,3), activation='relu')) | |
emotion_model.add(MaxPooling2D(pool_size=(2,2))) | |
emotion_model.add(Dropout(0.25)) | |
emotion_model.add(Flatten()) | |
emotion_model.add(Dense(1024, activation='relu')) | |
emotion_model.add(Dropout(0.5)) | |
emotion_model.add(Dense(7, activation='softmax')) | |
emotion_model.compile(loss='categorical_crossentropy',optimizer=Adam(lr=0.0001, decay=1e-6),metrics=['accuracy']) | |
emotion_model_info = emotion_model.fit_generator( | |
train_generator, | |
steps_per_epoch = 28709 // 64, | |
epochs=75, | |
validation_data = val_generator, | |
validation_steps = 7178 // 64 | |
) | |
emotion_model.save_weights('model.h5') | |