# -*- coding: utf-8 -*- from tensorflow_core.python.keras.engine.input_layer import Input from tensorflow_core.python.keras.layers.core import Dense, Dropout from tensorflow_core.python.keras.models import Sequential, Model from tensorflow_core.python.keras.optimizer_v2.adam import Adam from datasets import load_house_dataset_data from train_and_evaluation import evaluate_regression_model, train_model import matplotlib.pyplot as plt __author__ = 106360 def generate_simple_regression_model(input_shape,weights='',remove_head=False): # define the model input inputs = Input(shape=(input_shape)) # loop over the number of filters x = Dense(16, input_dim=input_shape, activation="relu", name='layer1')(inputs) x = Dense(6, activation="relu",name='layer2')(x) if not remove_head: x= Dense(1, activation="sigmoid",name='layer3')(x) model = Model(inputs,x) if weights!='': model.load_weights(weights,by_name=True) return model if __name__ == "__main__": (trainX,trainX_img, trainY, testX,testX_img,testY), normalizer = load_house_dataset_data(test_size=0.2,random_state=666) input_shape = trainX.shape[1] model = generate_simple_regression_model(input_shape) opt = Adam(lr=1e-3, decay=1e-3 / 200) model.compile(loss='mean_squared_error',metrics=['mean_absolute_percentage_error','mean_absolute_error','mean_squared_error'], optimizer=opt) model.summary() model = train_model(trainX, trainY, testX, testY,model,show_plot=True,epochs=500,batch_size=32) evaluate_regression_model(model,testX,testY,normalizer,show_plot=True) model.save('regression_model_data.h5')