import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, Bidirectional, LSTM, Dense, Dropout
from tensorflow.keras.callbacks import EarlyStopping
# Sample data placeholders (replace with real data)
X_train = tf.random.uniform((1000, 50), maxval=1000, dtype=tf.int32)
y_train = tf.random.uniform((1000, 50, 10), maxval=2, dtype=tf.int32)
X_val = tf.random.uniform((200, 50), maxval=1000, dtype=tf.int32)
y_val = tf.random.uniform((200, 50, 10), maxval=2, dtype=tf.int32)
model = Sequential([
Embedding(input_dim=1000, output_dim=64, input_length=50),
Bidirectional(LSTM(64, return_sequences=True)),
Dropout(0.5),
Dense(10, activation='softmax')
])
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
loss='categorical_crossentropy',
metrics=['accuracy'])
early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)
history = model.fit(X_train, y_train, epochs=20, batch_size=32, validation_data=(X_val, y_val), callbacks=[early_stop])