In [ ]:
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Dense, Embedding
from keras.layers import LSTM
from keras.datasets import imdb


Using TensorFlow backend.

In [2]:
max_features = 20000
maxlen = 80  # cut texts after this number of words (among top max_features most common words)
batch_size = 32

print('Loading data...')
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
print(len(x_train), 'train sequences')
print(len(x_test), 'test sequences')

print('Pad sequences (samples x time)')
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)
print('x_train shape:', x_train.shape)
print('x_test shape:', x_test.shape)

print('Build model...')


Loading data...
Downloading data from https://s3.amazonaws.com/text-datasets/imdb.npz
17457152/17464789 [============================>.] - ETA: 0s25000 train sequences
25000 test sequences
Pad sequences (samples x time)
x_train shape: (25000, 80)
x_test shape: (25000, 80)
Build model...

In [3]:
x_train


Out[3]:
array([[   15,   256,     4, ...,    19,   178,    32],
       [  125,    68,     2, ...,    16,   145,    95],
       [  645,   662,     8, ...,     7,   129,   113],
       ..., 
       [  529,   443, 17793, ...,     4,  3586,     2],
       [  286,  1814,    23, ...,    12,     9,    23],
       [   97,    90,    35, ...,   204,   131,     9]], dtype=int32)

In [4]:
model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))

# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

In [5]:
print('Train...')
model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=15,
          validation_data=(x_test, y_test))
score, acc = model.evaluate(x_test, y_test,
                            batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)


Train...
Train on 25000 samples, validate on 25000 samples
Epoch 1/15
25000/25000 [==============================] - 367s - loss: 0.4615 - acc: 0.7835 - val_loss: 0.3803 - val_acc: 0.8364
Epoch 2/15
25000/25000 [==============================] - 402s - loss: 0.2968 - acc: 0.8802 - val_loss: 0.3772 - val_acc: 0.8382
Epoch 3/15
25000/25000 [==============================] - 392s - loss: 0.2092 - acc: 0.9191 - val_loss: 0.4765 - val_acc: 0.8129
Epoch 4/15
25000/25000 [==============================] - 375s - loss: 0.1491 - acc: 0.9449 - val_loss: 0.4843 - val_acc: 0.8288
Epoch 5/15
25000/25000 [==============================] - 352s - loss: 0.1048 - acc: 0.9630 - val_loss: 0.5634 - val_acc: 0.8293
Epoch 6/15
25000/25000 [==============================] - 351s - loss: 0.0751 - acc: 0.9737 - val_loss: 0.6186 - val_acc: 0.8117
Epoch 7/15
25000/25000 [==============================] - 360s - loss: 0.0656 - acc: 0.9773 - val_loss: 0.6775 - val_acc: 0.8086
Epoch 8/15
25000/25000 [==============================] - 374s - loss: 0.0424 - acc: 0.9864 - val_loss: 0.7515 - val_acc: 0.8224
Epoch 9/15
25000/25000 [==============================] - 367s - loss: 0.0302 - acc: 0.9902 - val_loss: 0.8736 - val_acc: 0.8215
Epoch 10/15
25000/25000 [==============================] - 354s - loss: 0.0268 - acc: 0.9917 - val_loss: 0.8551 - val_acc: 0.8163
Epoch 11/15
25000/25000 [==============================] - 352s - loss: 0.0236 - acc: 0.9925 - val_loss: 0.9094 - val_acc: 0.8177
Epoch 12/15
25000/25000 [==============================] - 355s - loss: 0.0169 - acc: 0.9946 - val_loss: 1.0353 - val_acc: 0.8162
Epoch 13/15
25000/25000 [==============================] - 357s - loss: 0.0135 - acc: 0.9957 - val_loss: 0.9401 - val_acc: 0.8116
Epoch 14/15
25000/25000 [==============================] - 368s - loss: 0.0115 - acc: 0.9963 - val_loss: 1.0622 - val_acc: 0.8123
Epoch 15/15
25000/25000 [==============================] - 353s - loss: 0.0153 - acc: 0.9950 - val_loss: 0.9762 - val_acc: 0.8106
25000/25000 [==============================] - 91s    
Test score: 0.976184588296
Test accuracy: 0.81056

In [4]:
from keras import backend

In [5]:
backend.backend()


Out[5]:
'tensorflow'

In [8]:
max_features = 20000
maxlen = 80  # cut texts after this number of words (among top max_features most common words)
batch_size = 32

print('Loading data...')
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
print(len(x_train), 'train sequences')
print(len(x_test), 'test sequences')

print('Pad sequences (samples x time)')
x_train = sequence.pad_sequences(x_train, maxlen=maxlen)
x_test = sequence.pad_sequences(x_test, maxlen=maxlen)
print('x_train shape:', x_train.shape)
print('x_test shape:', x_test.shape)

print('Build model...')
model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(1, activation='sigmoid'))

# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])
print('Train...')
model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=15,
          validation_data=(x_test, y_test))
score, acc = model.evaluate(x_test, y_test,
                            batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)


Loading data...
25000 train sequences
25000 test sequences
Pad sequences (samples x time)
x_train shape: (25000, 80)
x_test shape: (25000, 80)
Build model...
Train...
Train on 25000 samples, validate on 25000 samples
Epoch 1/15
25000/25000 [==============================] - 354s - loss: 0.4584 - acc: 0.7833 - val_loss: 0.3830 - val_acc: 0.8328
Epoch 2/15
25000/25000 [==============================] - 357s - loss: 0.2931 - acc: 0.8798 - val_loss: 0.3917 - val_acc: 0.8385
Epoch 3/15
25000/25000 [==============================] - 358s - loss: 0.2130 - acc: 0.9174 - val_loss: 0.4151 - val_acc: 0.8238
Epoch 4/15
25000/25000 [==============================] - 359s - loss: 0.1496 - acc: 0.9428 - val_loss: 0.5007 - val_acc: 0.8295
Epoch 5/15
25000/25000 [==============================] - 356s - loss: 0.1024 - acc: 0.9622 - val_loss: 0.5570 - val_acc: 0.8289
Epoch 6/15
25000/25000 [==============================] - 353s - loss: 0.0711 - acc: 0.9754 - val_loss: 0.6337 - val_acc: 0.8134
Epoch 7/15
25000/25000 [==============================] - 353s - loss: 0.0500 - acc: 0.9832 - val_loss: 0.7261 - val_acc: 0.8206
Epoch 8/15
25000/25000 [==============================] - 358s - loss: 0.0413 - acc: 0.9857 - val_loss: 0.7857 - val_acc: 0.8165
Epoch 9/15
25000/25000 [==============================] - 355s - loss: 0.0316 - acc: 0.9905 - val_loss: 0.8522 - val_acc: 0.8174
Epoch 10/15
25000/25000 [==============================] - 356s - loss: 0.0291 - acc: 0.9895 - val_loss: 0.8071 - val_acc: 0.8141
Epoch 11/15
25000/25000 [==============================] - 360s - loss: 0.0226 - acc: 0.9925 - val_loss: 0.8602 - val_acc: 0.8199
Epoch 12/15
25000/25000 [==============================] - 357s - loss: 0.0160 - acc: 0.9954 - val_loss: 0.9791 - val_acc: 0.8182
Epoch 13/15
25000/25000 [==============================] - 363s - loss: 0.0124 - acc: 0.9964 - val_loss: 1.0800 - val_acc: 0.8103
Epoch 14/15
25000/25000 [==============================] - 358s - loss: 0.0113 - acc: 0.9964 - val_loss: 1.0454 - val_acc: 0.8112
Epoch 15/15
25000/25000 [==============================] - 358s - loss: 0.0097 - acc: 0.9967 - val_loss: 1.1998 - val_acc: 0.8139
25000/25000 [==============================] - 92s    
Test score: 1.19980149963
Test accuracy: 0.81392

In [3]:
!KERAS_BACKEND=cntk python3 -c "from keras import backend"


Using CNTK backend
Selected CPU as the process wide default device.
/usr/local/lib/python3.5/dist-packages/keras/backend/cntk_backend.py:19: UserWarning: CNTK backend warning: GPU is not detected. CNTK's CPU version is not fully optimized,please run with GPU to get better performance.
  'CNTK backend warning: GPU is not detected. '

In [ ]: