import tensorflow as tf
from tensorflow.keras import layers, models
# Define the agent model with dropout to reduce overfitting
def create_agent_model():
model = models.Sequential([
layers.Dense(128, activation='relu', input_shape=(input_dim,)),
layers.Dropout(0.5),
layers.Dense(64, activation='relu'),
layers.Dropout(0.3),
layers.Dense(output_dim, activation='softmax')
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
return model
# Assume X_train, y_train, X_val, y_val are prepared datasets
input_dim = 100 # example input size
output_dim = 10 # example output size
agent_model = create_agent_model()
# Use early stopping to stop training when validation loss stops improving
early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)
history = agent_model.fit(
X_train, y_train,
epochs=50,
batch_size=32,
validation_data=(X_val, y_val),
callbacks=[early_stop]
)
# Evaluate final performance
train_loss, train_acc = agent_model.evaluate(X_train, y_train, verbose=0)
val_loss, val_acc = agent_model.evaluate(X_val, y_val, verbose=0)
print(f'Training accuracy: {train_acc*100:.2f}%')
print(f'Validation accuracy: {val_acc*100:.2f}%')