Skip to content

Instantly share code, notes, and snippets.

@Melihemin
Created April 3, 2021 17:04
Show Gist options
  • Save Melihemin/bcbac2083ebb05a99eef99c7c175c162 to your computer and use it in GitHub Desktop.
Save Melihemin/bcbac2083ebb05a99eef99c7c175c162 to your computer and use it in GitHub Desktop.
IMDB-RNN.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "IMDB-RNN.ipynb",
"provenance": [],
"collapsed_sections": [],
"authorship_tag": "ABX9TyMukNpmLTFyaT3ileqYbQgC",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/Melihemin/bcbac2083ebb05a99eef99c7c175c162/imdb-rnn.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "DsDQOKYQHAeG"
},
"source": [
"from keras.layers import SimpleRNN"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "nDfgFUdEJRQL"
},
"source": [
"from keras.models import Sequential\n",
"from keras.layers import Embedding"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "93VuatkDWsIO"
},
"source": [
"# Basit RNN"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wOtvpAqGJZTi"
},
"source": [
"### Bir RNN Katmanı "
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kV3_wnurJRNd",
"outputId": "f9a4a14e-63d3-4217-d950-c96f393a9da0"
},
"source": [
"model = Sequential()\n",
"model.add(Embedding(1000,32))\n",
"model.add(SimpleRNN(32))\n",
"model.summary()"
],
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"embedding (Embedding) (None, None, 32) 32000 \n",
"_________________________________________________________________\n",
"simple_rnn (SimpleRNN) (None, 32) 2080 \n",
"=================================================================\n",
"Total params: 34,080\n",
"Trainable params: 34,080\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WDmgkrsBJuCo"
},
"source": [
"### Boyutlandırılmış RNN Katmanı"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "q8pnRq6VJRKa",
"outputId": "496439f5-fab9-4bbb-c3a8-e15b6368daf6"
},
"source": [
"model = Sequential()\n",
"model.add(Embedding(1000,32))\n",
"model.add(SimpleRNN(32, return_sequences=True))\n",
"model.summary()"
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"sequential_1\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"embedding_1 (Embedding) (None, None, 32) 32000 \n",
"_________________________________________________________________\n",
"simple_rnn_1 (SimpleRNN) (None, None, 32) 2080 \n",
"=================================================================\n",
"Total params: 34,080\n",
"Trainable params: 34,080\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Wsnm0KKwJ-Bq"
},
"source": [
"### Ardışık RNN Katmanı"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "d41pMMN8JRHc",
"outputId": "0d9d4055-b4b7-4192-814e-aa462e060abf"
},
"source": [
"model = Sequential()\n",
"model.add(Embedding(1000,32))\n",
"model.add(SimpleRNN(32, return_sequences=True))\n",
"model.add(SimpleRNN(32, return_sequences=True))\n",
"model.add(SimpleRNN(32, return_sequences=True))\n",
"model.add(SimpleRNN(32))\n",
"model.summary()"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"sequential_2\"\n",
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"embedding_2 (Embedding) (None, None, 32) 32000 \n",
"_________________________________________________________________\n",
"simple_rnn_2 (SimpleRNN) (None, None, 32) 2080 \n",
"_________________________________________________________________\n",
"simple_rnn_3 (SimpleRNN) (None, None, 32) 2080 \n",
"_________________________________________________________________\n",
"simple_rnn_4 (SimpleRNN) (None, None, 32) 2080 \n",
"_________________________________________________________________\n",
"simple_rnn_5 (SimpleRNN) (None, 32) 2080 \n",
"=================================================================\n",
"Total params: 40,320\n",
"Trainable params: 40,320\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QiPKLYBJKHyd"
},
"source": [
"# Veri Kümesini Hazırlamak"
]
},
{
"cell_type": "code",
"metadata": {
"id": "WQOoUPdHJREz"
},
"source": [
"from keras.datasets import imdb\n",
"from keras.preprocessing import sequence"
],
"execution_count": 7,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "FSEbI0EjJRBJ"
},
"source": [
"num_features = 1000\n",
"maxlen = 500\n",
"batch_size = 32"
],
"execution_count": 8,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "im-s1UDHJQ-S",
"outputId": "0009d58c-df7d-483c-f080-6bf047170d6a"
},
"source": [
"print('Load data..')\n",
"(input_train, y_train), (input_test, y_test) = imdb.load_data(num_words=num_features)\n",
"\n",
"print(len(input_train), 'Eğitim Dizisi')\n",
"print(len(input_test), 'Test Dizisi')"
],
"execution_count": 11,
"outputs": [
{
"output_type": "stream",
"text": [
"Load data..\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"<string>:6: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
"/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:159: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
" x_train, y_train = np.array(xs[:idx]), np.array(labels[:idx])\n"
],
"name": "stderr"
},
{
"output_type": "stream",
"text": [
"25000 Eğitim Dizisi\n",
"25000 Test Dizisi\n"
],
"name": "stdout"
},
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:160: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
" x_test, y_test = np.array(xs[idx:]), np.array(labels[idx:])\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "CHxvJucZMFbq"
},
"source": [
"input_train = sequence.pad_sequences(input_train,maxlen = maxlen)\n",
"input_test = sequence.pad_sequences(input_test,maxlen = maxlen)"
],
"execution_count": 17,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "6B75Xb87LEsv"
},
"source": [
"### Eğitim"
]
},
{
"cell_type": "code",
"metadata": {
"id": "pr9Fc6zMJQ7S"
},
"source": [
"from keras.layers import Dense\n",
"from keras import layers"
],
"execution_count": 12,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "-pDyzc7VJQ5B"
},
"source": [
"model = Sequential()\n",
"model.add(Embedding(num_features, 32))\n",
"model.add(SimpleRNN(32))\n",
"model.add(Dense(1, activation='sigmoid'))"
],
"execution_count": 13,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "4r69vBfKLIqy",
"outputId": "15d9471b-a140-44bb-b608-93b4600312a8"
},
"source": [
"model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])\n",
"history = model.fit(input_train, y_train,\n",
" epochs=20,\n",
" batch_size = 128,\n",
" validation_split = 0.2)\n"
],
"execution_count": 20,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"157/157 [==============================] - 23s 142ms/step - loss: 0.4141 - accuracy: 0.8233 - val_loss: 0.4322 - val_accuracy: 0.7998\n",
"Epoch 2/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.3716 - accuracy: 0.8427 - val_loss: 0.3745 - val_accuracy: 0.8512\n",
"Epoch 3/20\n",
"157/157 [==============================] - 22s 141ms/step - loss: 0.3551 - accuracy: 0.8514 - val_loss: 0.3589 - val_accuracy: 0.8518\n",
"Epoch 4/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.3397 - accuracy: 0.8587 - val_loss: 0.3923 - val_accuracy: 0.8458\n",
"Epoch 5/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.3291 - accuracy: 0.8641 - val_loss: 0.4110 - val_accuracy: 0.8440\n",
"Epoch 6/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.3228 - accuracy: 0.8680 - val_loss: 0.4545 - val_accuracy: 0.8052\n",
"Epoch 7/20\n",
"157/157 [==============================] - 22s 141ms/step - loss: 0.2972 - accuracy: 0.8816 - val_loss: 0.4296 - val_accuracy: 0.8252\n",
"Epoch 8/20\n",
"157/157 [==============================] - 22s 140ms/step - loss: 0.2979 - accuracy: 0.8787 - val_loss: 0.4982 - val_accuracy: 0.7634\n",
"Epoch 9/20\n",
"157/157 [==============================] - 22s 141ms/step - loss: 0.2636 - accuracy: 0.8938 - val_loss: 0.5670 - val_accuracy: 0.7442\n",
"Epoch 10/20\n",
"157/157 [==============================] - 22s 140ms/step - loss: 0.2481 - accuracy: 0.9010 - val_loss: 0.5764 - val_accuracy: 0.7742\n",
"Epoch 11/20\n",
"157/157 [==============================] - 22s 140ms/step - loss: 0.2405 - accuracy: 0.9050 - val_loss: 0.5405 - val_accuracy: 0.8164\n",
"Epoch 12/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.2286 - accuracy: 0.9140 - val_loss: 0.4938 - val_accuracy: 0.8222\n",
"Epoch 13/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.2002 - accuracy: 0.9255 - val_loss: 0.5096 - val_accuracy: 0.7962\n",
"Epoch 14/20\n",
"157/157 [==============================] - 22s 140ms/step - loss: 0.1960 - accuracy: 0.9269 - val_loss: 0.5300 - val_accuracy: 0.8182\n",
"Epoch 15/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.1745 - accuracy: 0.9334 - val_loss: 0.5706 - val_accuracy: 0.8172\n",
"Epoch 16/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.1648 - accuracy: 0.9409 - val_loss: 0.5706 - val_accuracy: 0.8102\n",
"Epoch 17/20\n",
"157/157 [==============================] - 22s 140ms/step - loss: 0.1536 - accuracy: 0.9442 - val_loss: 0.5867 - val_accuracy: 0.8158\n",
"Epoch 18/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.1661 - accuracy: 0.9409 - val_loss: 0.6057 - val_accuracy: 0.8162\n",
"Epoch 19/20\n",
"157/157 [==============================] - 22s 140ms/step - loss: 0.1322 - accuracy: 0.9531 - val_loss: 0.6432 - val_accuracy: 0.8068\n",
"Epoch 20/20\n",
"157/157 [==============================] - 22s 139ms/step - loss: 0.1243 - accuracy: 0.9568 - val_loss: 0.6879 - val_accuracy: 0.7824\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "d4StUlvpP-T9"
},
"source": [
"### Sonuçlar"
]
},
{
"cell_type": "code",
"metadata": {
"id": "PyxAEWkLLInJ"
},
"source": [
"import matplotlib.pyplot as plt"
],
"execution_count": 30,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 214
},
"id": "q_yo15TILIim",
"outputId": "fcb1f8a8-b52c-4726-86be-7b75fa0063ca"
},
"source": [
"acc = history.history['acc']\n",
"val_acc = history.history['val_acc']\n",
"loss = history.history['loss']\n",
"val_loss = history.history['val_loss']"
],
"execution_count": 27,
"outputs": [
{
"output_type": "error",
"ename": "KeyError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-27-0642ce207f8b>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0macc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'acc'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mval_acc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'val_acc'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'loss'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mval_loss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'val_loss'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'acc'"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "rqzPuG_cLIgW"
},
"source": [
""
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "TAcaLF24Wwhf"
},
"source": [
"# Basit LSTM"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ru5Dv_gIWz_h"
},
"source": [
"model = Sequential()\n",
"model.add(layers.Embedding(num_features, 32))\n",
"model.add(layers.Bidirectional(layers.LSTM(32)))\n",
"model.add(Dense(1, activation='sigmoid'))"
],
"execution_count": 31,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LXoFHRDRXHsU",
"outputId": "c4fb8dee-0857-42c1-e4ef-e6190069c114"
},
"source": [
"model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])\n",
"history = model.fit(input_train, y_train,\n",
" epochs=20,\n",
" batch_size = 128,\n",
" validation_split = 0.2)\n"
],
"execution_count": 32,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"157/157 [==============================] - 100s 616ms/step - loss: 0.6424 - accuracy: 0.6203 - val_loss: 0.5494 - val_accuracy: 0.7126\n",
"Epoch 2/20\n",
"157/157 [==============================] - 95s 606ms/step - loss: 0.4201 - accuracy: 0.8186 - val_loss: 0.4197 - val_accuracy: 0.8084\n",
"Epoch 3/20\n",
"157/157 [==============================] - 95s 605ms/step - loss: 0.3713 - accuracy: 0.8496 - val_loss: 0.4407 - val_accuracy: 0.7930\n",
"Epoch 4/20\n",
"157/157 [==============================] - 95s 604ms/step - loss: 0.3448 - accuracy: 0.8580 - val_loss: 0.3847 - val_accuracy: 0.8300\n",
"Epoch 5/20\n",
"157/157 [==============================] - 95s 605ms/step - loss: 0.3399 - accuracy: 0.8628 - val_loss: 0.3619 - val_accuracy: 0.8414\n",
"Epoch 6/20\n",
"157/157 [==============================] - 95s 606ms/step - loss: 0.3151 - accuracy: 0.8718 - val_loss: 0.3900 - val_accuracy: 0.8292\n",
"Epoch 7/20\n",
"157/157 [==============================] - 95s 606ms/step - loss: 0.3169 - accuracy: 0.8708 - val_loss: 0.3521 - val_accuracy: 0.8530\n",
"Epoch 8/20\n",
"157/157 [==============================] - 95s 608ms/step - loss: 0.3016 - accuracy: 0.8763 - val_loss: 0.3549 - val_accuracy: 0.8514\n",
"Epoch 9/20\n",
"157/157 [==============================] - 97s 617ms/step - loss: 0.2991 - accuracy: 0.8796 - val_loss: 0.3441 - val_accuracy: 0.8540\n",
"Epoch 10/20\n",
"157/157 [==============================] - 99s 633ms/step - loss: 0.2991 - accuracy: 0.8771 - val_loss: 0.3581 - val_accuracy: 0.8540\n",
"Epoch 11/20\n",
"157/157 [==============================] - 97s 621ms/step - loss: 0.2933 - accuracy: 0.8824 - val_loss: 0.3929 - val_accuracy: 0.8408\n",
"Epoch 12/20\n",
"157/157 [==============================] - 96s 614ms/step - loss: 0.2950 - accuracy: 0.8779 - val_loss: 0.4227 - val_accuracy: 0.7998\n",
"Epoch 13/20\n",
"157/157 [==============================] - 96s 609ms/step - loss: 0.3015 - accuracy: 0.8775 - val_loss: 0.4458 - val_accuracy: 0.8408\n",
"Epoch 14/20\n",
"157/157 [==============================] - 97s 618ms/step - loss: 0.2915 - accuracy: 0.8807 - val_loss: 0.3431 - val_accuracy: 0.8596\n",
"Epoch 15/20\n",
"157/157 [==============================] - 95s 605ms/step - loss: 0.2771 - accuracy: 0.8857 - val_loss: 0.3763 - val_accuracy: 0.8410\n",
"Epoch 16/20\n",
"157/157 [==============================] - 95s 606ms/step - loss: 0.2830 - accuracy: 0.8831 - val_loss: 0.3446 - val_accuracy: 0.8538\n",
"Epoch 17/20\n",
"157/157 [==============================] - 95s 606ms/step - loss: 0.2739 - accuracy: 0.8881 - val_loss: 0.4817 - val_accuracy: 0.7978\n",
"Epoch 18/20\n",
"157/157 [==============================] - 95s 606ms/step - loss: 0.2727 - accuracy: 0.8873 - val_loss: 0.3416 - val_accuracy: 0.8614\n",
"Epoch 19/20\n",
"157/157 [==============================] - 95s 607ms/step - loss: 0.2639 - accuracy: 0.8927 - val_loss: 0.3607 - val_accuracy: 0.8526\n",
"Epoch 20/20\n",
"157/157 [==============================] - 95s 606ms/step - loss: 0.2570 - accuracy: 0.8956 - val_loss: 0.3788 - val_accuracy: 0.8418\n"
],
"name": "stdout"
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment