CosmickVisions commited on
Commit
44ad33b
·
verified ·
1 Parent(s): 4b1d2c5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +39 -18
app.py CHANGED
@@ -68,7 +68,7 @@ def get_model_config(model_type, problem_type):
68
  }
69
  }
70
  return configs.get(model_type, {}).get(problem_type, {"model_class": None, "params": {}, "grid_params": {}})
71
-
72
  def preprocess_data(X_train, X_test, numerical_features, categorical_features):
73
  # Define the numeric and categorical transformers
74
  numeric_transformer = Pipeline(steps=[
@@ -102,24 +102,45 @@ def preprocess_data(X_train, X_test, numerical_features, categorical_features):
102
  feature_names = numerical_features
103
 
104
  return X_train_processed, X_test_processed, feature_names, preprocessor
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
105
 
106
- def build_neural_network(input_shape, output_units, problem_type, layers_config, optimizer_name="Adam", learning_rate=0.001):
107
- model = keras.Sequential([keras.layers.Input(shape=input_shape)])
108
- for layer in layers_config:
109
- if layer['type'] == 'dense':
110
- model.add(keras.layers.Dense(layer['units'], activation=layer['activation']))
111
- elif layer['type'] == 'dropout':
112
- model.add(keras.layers.Dropout(layer['rate']))
113
- if problem_type == "Regression":
114
- model.add(keras.layers.Dense(1))
115
- elif problem_type == "Binary Classification":
116
- model.add(keras.layers.Dense(1, activation='sigmoid'))
117
- elif problem_type == "Multi-Class":
118
- model.add(keras.layers.Dense(output_units, activation='softmax'))
119
- optimizer = {"Adam": keras.optimizers.Adam, "SGD": keras.optimizers.SGD, "RMSprop": keras.optimizers.RMSprop}[optimizer_name](learning_rate=learning_rate)
120
- model.compile(optimizer=optimizer, loss={"Regression": "mse", "Binary Classification": "binary_crossentropy", "Multi-Class": "categorical_crossentropy"}[problem_type],
121
- metrics=["mae" if problem_type == "Regression" else "accuracy"])
122
- return model
123
 
124
  def train_model(model, X_train, y_train, X_test, y_test, epochs, batch_size, problem_type, do_grid_search=False, params=None, grid_params=None, training_placeholder=None):
125
  start_time = time.time()
 
68
  }
69
  }
70
  return configs.get(model_type, {}).get(problem_type, {"model_class": None, "params": {}, "grid_params": {}})
71
+
72
  def preprocess_data(X_train, X_test, numerical_features, categorical_features):
73
  # Define the numeric and categorical transformers
74
  numeric_transformer = Pipeline(steps=[
 
102
  feature_names = numerical_features
103
 
104
  return X_train_processed, X_test_processed, feature_names, preprocessor
105
+ def build_neural_network(input_shape, output_units, problem_type, layers_config, optimizer_name="Adam", loss_function="mse", metrics=["accuracy"]):
106
+ try:
107
+ model = keras.Sequential()
108
+ model.add(keras.layers.InputLayer(input_shape=input_shape))
109
+ for layer in layers_config:
110
+ if layer['type'] == 'dense':
111
+ model.add(keras.layers.Dense(layer['units'], activation=layer['activation']))
112
+ elif layer['type'] == 'dropout':
113
+ model.add(keras.layers.Dropout(layer['rate']))
114
+ elif layer['type'] == 'conv2d':
115
+ model.add(keras.layers.Conv2D(layer['filters'], tuple(layer['kernel_size']), activation=layer['activation']))
116
+ elif layer['type'] == 'lstm':
117
+ model.add(keras.layers.LSTM(layer['units'], activation=layer['activation']))
118
+ elif layer['type'] == 'maxpooling2d':
119
+ model.add(keras.layers.MaxPooling2D(pool_size=tuple(layer['pool_size'])))
120
+ elif layer['type'] == 'flatten':
121
+ model.add(keras.layers.Flatten())
122
+
123
+ if problem_type == "Regression":
124
+ model.add(keras.layers.Dense(1))
125
+ elif problem_type == "Binary Classification":
126
+ model.add(keras.layers.Dense(1, activation='sigmoid'))
127
+ elif problem_type == "Multi-Class":
128
+ model.add(keras.layers.Dense(output_units, activation='softmax'))
129
+
130
+ if optimizer_name == "Adam":
131
+ optimizer = keras.optimizers.Adam()
132
+ elif optimizer_name == "SGD":
133
+ optimizer = keras.optimizers.SGD()
134
+ elif optimizer_name == "RMSprop":
135
+ optimizer = keras.optimizers.RMSprop()
136
+
137
+ model.compile(optimizer=optimizer, loss=loss_function, metrics=metrics)
138
+ return model
139
+ except Exception as e:
140
+ st.error("Failed to build neural network. Check Debug Log for details.")
141
+ #log_error("Error in build_neural_network", e) # ADDED
142
+ raise
143
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
 
145
  def train_model(model, X_train, y_train, X_test, y_test, epochs, batch_size, problem_type, do_grid_search=False, params=None, grid_params=None, training_placeholder=None):
146
  start_time = time.time()