model = Sequential();
model.add(Dropout(0.2, input_shape=(122,)));
model.add(Dense(150, kernel_initializer='normal', activation='relu', kernel_constraint=maxnorm(3)));
model.add(Dropout(0.5));
model.add(Dense(120, kernel_initializer='normal', activation='relu', kernel_constraint=maxnorm(3)));
model.add(Dropout(0.5));
model.add(Dense(50, kernel_initializer='normal', activation='relu', kernel_constraint=maxnorm(3)));
model.add(Dropout(0.5));
model.add(Dense(2, kernel_initializer='normal', activation='sigmoid'));
sgd = SGD(lr=0.1, momentum=0.9, decay=1e-6, nesterov=True);
model.compile(loss='mean_squared_error', optimizer=sgd, metrics=['accuracy']);
###trainX, trainY, testX, testY are all numpy variables where categorical values are discretized by one-hot ###encoding and normalized using z-score normalization using sklearn.preprocessing
model.fit(trainX, trainY, epochs=50, batch_size=32, shuffle=True, verbose=1);
testYPredicted = model.predict(testX, batch_size=32);