LSTM Sentiment Classifier (IMDB)
AdvancedProject 2 — LSTM Sentiment Classifier (IMDB)
File: project2_lstm_sentiment.py
Purpose: train LSTM on IMDB dataset (Keras built-in), save lstm_sentiment.h5.
# project2_lstm_sentiment.py
import tensorflow as tf
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras import layers, models
def load_preprocess(num_words=10000, maxlen=200):
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=num_words)
X_train = pad_sequences(X_train, maxlen=maxlen)
X_test = pad_sequences(X_test, maxlen=maxlen)
return (X_train, y_train), (X_test, y_test)
def build_model(num_words=10000, maxlen=200):
model = models.Sequential([
layers.Embedding(num_words, 64, input_length=maxlen),
layers.LSTM(64),
layers.Dense(1, activation="sigmoid")
])
model.compile(optimizer="adam", loss="binary_crossentropy", metrics=["accuracy"])
return model
def main():
num_words = 10000
maxlen = 200
(X_train, y_train), (X_test, y_test) = load_preprocess(num_words, maxlen)
model = build_model(num_words, maxlen)
print(model.summary())
model.fit(X_train, y_train, epochs=3, batch_size=128, validation_split=0.1)
loss, acc = model.evaluate(X_test, y_test, verbose=2)
print(f"Test Loss: {loss:.4f}, Test Acc: {acc:.4f}")
model.save("lstm_sentiment.h5")
print("Saved model to lstm_sentiment.h5")
if __name__ == "__main__":
main()Notes
imdb.load_data()downloads data automatically (internet required).- You can use fewer
num_wordsormaxlenon low-memory machines.
Run
python project2_lstm_sentiment.py