%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.preprocessing import sequence
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Embedding
from tensorflow.keras.layers import LSTM
from tensorflow.keras.datasets import imdb
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=10000)
print(len(x_train), 'train sequences')
print(len(x_test), 'test sequences')
25000 train sequences 25000 test sequences
x_train[0]
[1, 14, 22, 16, 43, 530, 973, 1622, 1385, 65, 458, 4468, 66, 3941, 4, 173, 36, 256, 5, 25, 100, 43, 838, 112, 50, 670, 2, 9, 35, 480, 284, 5, 150, 4, 172, 112, 167, 2, 336, 385, 39, 4, 172, 4536, 1111, 17, 546, 38, 13, 447, 4, 192, 50, 16, 6, 147, 2025, 19, 14, 22, 4, 1920, 4613, 469, 4, 22, 71, 87, 12, 16, 43, 530, 38, 76, 15, 13, 1247, 4, 22, 17, 515, 17, 12, 16, 626, 18, 2, 5, 62, 386, 12, 8, 316, 8, 106, 5, 4, 2223, 5244, 16, 480, 66, 3785, 33, 4, 130, 12, 16, 38, 619, 5, 25, 124, 51, 36, 135, 48, 25, 1415, 33, 6, 22, 12, 215, 28, 77, 52, 5, 14, 407, 16, 82, 2, 8, 4, 107, 117, 5952, 15, 256, 4, 2, 7, 3766, 5, 723, 36, 71, 43, 530, 476, 26, 400, 317, 46, 7, 4, 2, 1029, 13, 104, 88, 4, 381, 15, 297, 98, 32, 2071, 56, 26, 141, 6, 194, 7486, 18, 4, 226, 22, 21, 134, 476, 26, 480, 5, 144, 30, 5535, 18, 51, 36, 28, 224, 92, 25, 104, 4, 226, 65, 16, 38, 1334, 88, 12, 16, 283, 5, 16, 4472, 113, 103, 32, 15, 16, 5345, 19, 178, 32]
x_train = sequence.pad_sequences(x_train, maxlen=100)
x_test = sequence.pad_sequences(x_test, maxlen=100)
model = Sequential()
model.add(Embedding(10000, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(x_train, y_train,
batch_size=32,
epochs=15,
validation_data=(x_test, y_test))
Train on 25000 samples, validate on 25000 samples Epoch 1/15 25000/25000 [==============================] - 57s 2ms/sample - loss: 0.4576 - accuracy: 0.7826 - val_loss: 0.3739 - val_accuracy: 0.8374 Epoch 2/15 25000/25000 [==============================] - 55s 2ms/sample - loss: 0.3278 - accuracy: 0.8650 - val_loss: 0.3807 - val_accuracy: 0.8314 Epoch 3/15 25000/25000 [==============================] - 55s 2ms/sample - loss: 0.2665 - accuracy: 0.8963 - val_loss: 0.3936 - val_accuracy: 0.8445 Epoch 4/15 25000/25000 [==============================] - 55s 2ms/sample - loss: 0.2157 - accuracy: 0.9151 - val_loss: 0.4046 - val_accuracy: 0.8408 Epoch 5/15 25000/25000 [==============================] - 54s 2ms/sample - loss: 0.1694 - accuracy: 0.9348 - val_loss: 0.4482 - val_accuracy: 0.8414 Epoch 6/15 25000/25000 [==============================] - 54s 2ms/sample - loss: 0.1372 - accuracy: 0.9491 - val_loss: 0.4898 - val_accuracy: 0.8319 Epoch 7/15 25000/25000 [==============================] - 54s 2ms/sample - loss: 0.1061 - accuracy: 0.9622 - val_loss: 0.5313 - val_accuracy: 0.8266 Epoch 8/15 25000/25000 [==============================] - 54s 2ms/sample - loss: 0.0843 - accuracy: 0.9708 - val_loss: 0.5785 - val_accuracy: 0.8304 Epoch 9/15 25000/25000 [==============================] - 54s 2ms/sample - loss: 0.0688 - accuracy: 0.9768 - val_loss: 0.6800 - val_accuracy: 0.8259 Epoch 10/15 25000/25000 [==============================] - 53s 2ms/sample - loss: 0.0643 - accuracy: 0.9780 - val_loss: 0.6923 - val_accuracy: 0.8189 Epoch 11/15 25000/25000 [==============================] - 53s 2ms/sample - loss: 0.0441 - accuracy: 0.9855 - val_loss: 0.8010 - val_accuracy: 0.8250 Epoch 12/15 25000/25000 [==============================] - 53s 2ms/sample - loss: 0.0340 - accuracy: 0.9893 - val_loss: 0.8034 - val_accuracy: 0.8284 Epoch 13/15 25000/25000 [==============================] - 53s 2ms/sample - loss: 0.0253 - accuracy: 0.9918 - val_loss: 0.9022 - val_accuracy: 0.8252 Epoch 15/15 25000/25000 [==============================] - 53s 2ms/sample - loss: 0.0195 - accuracy: 0.9938 - val_loss: 0.9009 - val_accuracy: 0.8240
<tensorflow.python.keras.callbacks.History at 0x7f1e272b9cf8>
model_json = model.to_json()
open('imdb_model_architecture.json', 'w').write(model_json)
model.save_weights('imdb_model_weights.h5')