import tensorflow as tf
from tensorflow.keras import layers, models, callbacks
# Sample dataset placeholders
# X_train, y_train, X_val, y_val should be preloaded tensors or arrays
model = models.Sequential([
layers.Input(shape=(100,)), # example input size
layers.Dense(128, activation='relu'),
layers.Dropout(0.5),
layers.BatchNormalization(),
layers.Dense(64, activation='relu'),
layers.Dropout(0.3),
layers.BatchNormalization(),
layers.Dense(1, activation='sigmoid')
])
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=0.0005),
loss='binary_crossentropy',
metrics=['accuracy']
)
early_stop = callbacks.EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)
history = model.fit(
X_train, y_train,
epochs=50,
batch_size=32,
validation_data=(X_val, y_val),
callbacks=[early_stop]
)
# After training, evaluate on validation set
val_loss, val_accuracy = model.evaluate(X_val, y_val, verbose=0)
# For F1-score calculation
from sklearn.metrics import f1_score
import numpy as np
val_preds = (model.predict(X_val) > 0.5).astype(int)
val_f1 = f1_score(y_val, val_preds)
print(f'Validation accuracy: {val_accuracy:.2f}')
print(f'Validation F1-score: {val_f1:.2f}')