Advertisement
toropyga

05_RealAge

Sep 3rd, 2022
856
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. from tensorflow.keras.applications.resnet import ResNet50
  4. from tensorflow.keras.layers import Dense, GlobalAveragePooling2D
  5. from tensorflow.keras.models import Sequential
  6. from tensorflow.keras.preprocessing.image import ImageDataGenerator
  7. from tensorflow.keras.optimizers import Adam
  8. import pandas as pd
  9.  
  10. datagen = ImageDataGenerator(validation_split=0.2, rescale=1./255)
  11.  
  12. def load_train(path):
  13.     labels = pd.read_csv(path + 'labels.csv')
  14.     train_datagen_flow = datagen.flow_from_dataframe(
  15.     dataframe=labels,
  16.     directory=path + '/final_files',
  17.     x_col='file_name',
  18.     y_col='real_age',
  19.     target_size=(224, 224),
  20.     batch_size=None,
  21.     class_mode='raw',
  22.     horizontal_flip=True,
  23.     seed=42)
  24.     return train_datagen_flow
  25.  
  26. def load_test(path):
  27.     labels = pd.read_csv(path + 'labels.csv')
  28.     test_datagen_flow = datagen.flow_from_dataframe(
  29.     dataframe=labels,
  30.     directory=path + '/final_files',
  31.     x_col='file_name',
  32.     y_col='real_age',
  33.     target_size=(224, 224),
  34.     batch_size=None,
  35.     class_mode='raw',
  36.     seed=42)
  37.     return test_datagen_flow
  38.  
  39. def create_model(input_shape):
  40.     optimizer = Adam(learning_rate=0.001)
  41.     resNet = ResNet50(input_shape=input_shape,              
  42.         weights='/datasets/keras_models/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5',
  43.         include_top=False)
  44.     model = Sequential()
  45.     model.add(resNet)
  46.     model.add(GlobalAveragePooling2D())
  47.     model.add(Dense(1, activation="relu"))
  48.     model.compile(loss="mean_absolute_error", optimizer=optimizer, metrics=["mae"])
  49.     return model
  50.  
  51. def train_model(model, train_data, test_data, batch_size, epochs=10,
  52.                steps_per_epoch=None, validation_steps=None):
  53.     model.fit(train_data,
  54.               validation_data=test_data,
  55.               batch_size=batch_size,
  56.               epochs=epochs,
  57.               steps_per_epoch=steps_per_epoch,
  58.               verbose=2, shuffle=True)
  59.     return model
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement