- from tensorflow.keras.datasets import fashion_mnist
- from tensorflow.keras.optimizers import Adam
- import numpy as np
- from tensorflow.keras.layers import Conv2D, Flatten, Dense, AvgPool2D, GlobalAveragePooling2D
- from tensorflow import keras
- from tensorflow.keras import Sequential
- from tensorflow.keras.applications.resnet import ResNet50
- import matplotlib.pyplot as plt
- from tensorflow.keras.preprocessing.image import ImageDataGenerator
- def load_train(path):
- labels = pd.read_csv(path+'labels.csv')
- train_datagen = ImageDataGenerator(rescale=1/255,
- validation_split=0.25)
- train_gen_flow = train_datagen.flow_from_dataframe(
- dataframe=labels,
- directory=path+'final_files/',
- x_col='file_name',
- y_col='real_age',
- target_size=(224, 224),
- batch_size=32,
- class_mode='raw',
- subset='training',
- seed=12345)
- return train_gen_flow
- def load_test(path):
- labels = pd.read_csv(path+'labels.csv')
- test_datagen = ImageDataGenerator(rescale=1/255,
- validation_split=0.25)
- test_gen_flow = test_datagen.flow_from_dataframe(
- dataframe=labels,
- directory=path+'final_files/',
- x_col='file_name',
- y_col='real_age',
- target_size=(224, 224),
- batch_size=32,
- class_mode='raw',
- subset='validation',
- seed=12345)
- return test_gen_flow
- def create_model(input_shape):
- model = Sequential()
- model.add(Conv2D(filters=6, kernel_size=(5, 5), padding='same',
- activation="relu", input_shape=input_shape))
- model.add(Conv2D(filters=16, kernel_size=(5, 5),
- activation="relu"))
- model.add(Flatten())
- model.add(Dense(1, activation='relu'))
- opt = Adam(lr=0.0007)
- model.compile(loss='mean_squared_error', optimizer=opt, metrics=['mae'])
- return model
- def train_model(model, train_data, test_data, batch_size=None, epochs=2,
- steps_per_epoch=None, validation_steps=None):
- model.fit(train_data, validation_data=test_data, verbose=2, epochs=epochs,
- batch_size=batch_size,
- steps_per_epoch=steps_per_epoch,
- validation_steps=validation_steps)
- return model