in courses/DSL/challenge-mlprep/fraud_detection/trainer/model.py [0:0]
def build_dnn_model(ds, num_bins, hash_bkts):
inputs, transformed = get_input_and_transform(ds, num_bins, hash_bkts)
# Concatenate preprocessed features into a single layer of the right dimension
dnn_inputs = Concatenate()(transformed.values())
dnn_inputs = Flatten()(dnn_inputs)
# Create a DNN with 3 layers and ReLU activation. Output is predicted probability that a
# transaction is fraudulent.
hid_1 = tf.keras.layers.Dense(64, activation='relu')(dnn_inputs)
hid_2 = tf.keras.layers.Dense(32, activation='relu')(hid_1)
hid_3 = tf.keras.layers.Dense(16, activation='relu')(hid_2)
logit = tf.keras.layers.Dense(1, activation='sigmoid')(hid_3)
# List of metrics to be computed at training and evaluation time.
metrics = [tf.keras.metrics.BinaryAccuracy(),
tf.keras.metrics.Precision(),
tf.keras.metrics.Recall(),
tf.keras.metrics.AUC(curve='PR')]
# Create and compile the model with BinaryCrossentropy loss function
model = tf.keras.Model(inputs=inputs, outputs=logit)
model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=False), metrics=metrics)
return model