{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.3" }, "colab": { "name": "04-LSTM-imdb.ipynb", "version": "0.3.2", "provenance": [] } }, "cells": [ { "cell_type": "markdown", "metadata": { "id": "tecE8g82xhGm", "colab_type": "text" }, "source": [ "* https://github.com/fchollet/keras/blob/master/examples/imdb_lstm.py" ] }, { "cell_type": "code", "metadata": { "id": "cK8bGPjnxhGu", "colab_type": "code", "colab": {}, "outputId": "d127f15a-51af-4dae-a375-ce45a338430d" }, "source": [ "import numpy as np\n", "from keras.preprocessing import sequence\n", "from keras.models import Sequential\n", "from keras.layers import Dense, Embedding\n", "from keras.layers import LSTM\n", "from keras.datasets import imdb" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ], "name": "stderr" } ] }, { "cell_type": "code", "metadata": { "id": "PD1ijEhhxhG7", "colab_type": "code", "colab": {} }, "source": [ "vocabulary_size = 15000\n", "(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=vocabulary_size)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "tPSBkgBkxhHE", "colab_type": "code", "colab": {} }, "source": [ "maxlen = 80\n", "x_train = sequence.pad_sequences(x_train, maxlen=maxlen)\n", "x_test = sequence.pad_sequences(x_test, maxlen=maxlen)" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "C9nqoeMxxhHO", "colab_type": "code", "colab": {} }, "source": [ "model = Sequential()\n", "model.add(Embedding(vocabulary_size, 128))\n", "model.add(LSTM(64, dropout=0.2, recurrent_dropout=0.2))\n", "model.add(Dense(1, activation='sigmoid'))\n", "model.compile(loss='binary_crossentropy',\n", " optimizer='adam',\n", " metrics=['accuracy'])" ], "execution_count": 0, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Y5S4ZQDPxhHY", "colab_type": "code", "colab": {}, "outputId": "47ae875c-f484-4011-d610-4b7eaf70ce82" }, "source": [ "from IPython.display import SVG, display\n", "from keras.utils.vis_utils import model_to_dot\n", "\n", "SVG(model_to_dot(model, show_shapes=True).create(prog='dot', format='svg'))" ], "execution_count": 0, "outputs": [ { "output_type": "execute_result", "data": { "image/svg+xml": "\n\nG\n\n\n140521308467664\n\nembedding_1_input: InputLayer\n\ninput:\n\noutput:\n\n(None, None)\n\n(None, None)\n\n\n140521873195304\n\nembedding_1: Embedding\n\ninput:\n\noutput:\n\n(None, None)\n\n(None, None, 128)\n\n\n140521308467664->140521873195304\n\n\n\n\n140521308467888\n\nlstm_1: LSTM\n\ninput:\n\noutput:\n\n(None, None, 128)\n\n(None, 64)\n\n\n140521873195304->140521308467888\n\n\n\n\n140521063067544\n\ndense_1: Dense\n\ninput:\n\noutput:\n\n(None, 64)\n\n(None, 1)\n\n\n140521308467888->140521063067544\n\n\n\n\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 5 } ] }, { "cell_type": "code", "metadata": { "id": "_Lk8halnxhHh", "colab_type": "code", "colab": {}, "outputId": "eaf9595f-0864-427e-d077-a00af93c3123" }, "source": [ "model.fit(x_train, y_train,\n", " batch_size=32,\n", " epochs=8,\n", " validation_data=(x_test, y_test))" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "Train on 25000 samples, validate on 25000 samples\n", "Epoch 1/8\n", "25000/25000 [==============================] - 66s - loss: 0.4564 - acc: 0.7864 - val_loss: 0.3689 - val_acc: 0.8323\n", "Epoch 2/8\n", "25000/25000 [==============================] - 63s - loss: 0.3023 - acc: 0.8754 - val_loss: 0.3948 - val_acc: 0.8256\n", "Epoch 3/8\n", "25000/25000 [==============================] - 68s - loss: 0.2303 - acc: 0.9099 - val_loss: 0.4206 - val_acc: 0.8339\n", "Epoch 4/8\n", "25000/25000 [==============================] - 66s - loss: 0.1733 - acc: 0.9318 - val_loss: 0.4517 - val_acc: 0.8327\n", "Epoch 5/8\n", "25000/25000 [==============================] - 64s - loss: 0.1282 - acc: 0.9525 - val_loss: 0.5009 - val_acc: 0.8264\n", "Epoch 6/8\n", "25000/25000 [==============================] - 65s - loss: 0.0940 - acc: 0.9651 - val_loss: 0.6640 - val_acc: 0.8196\n", "Epoch 7/8\n", "25000/25000 [==============================] - 66s - loss: 0.0724 - acc: 0.9745 - val_loss: 0.7094 - val_acc: 0.8218\n", "Epoch 8/8\n", "25000/25000 [==============================] - 65s - loss: 0.0643 - acc: 0.9775 - val_loss: 0.6907 - val_acc: 0.8200\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 6 } ] }, { "cell_type": "code", "metadata": { "id": "WldAOPrJxhHp", "colab_type": "code", "colab": {}, "outputId": "5f4a7eb7-65ab-48d1-c227-456a1442aad5" }, "source": [ "score, acc = model.evaluate(x_test, y_test, batch_size=32)\n", "print('Test score:', score)\n", "print('Test accuracy:', acc)" ], "execution_count": 0, "outputs": [ { "output_type": "stream", "text": [ "25000/25000 [==============================] - 12s \n", "Test score: 0.690729214754\n", "Test accuracy: 0.82004\n" ], "name": "stdout" } ] } ] }