Advertisement
toropyga

05_RealAge_v2

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