Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "LSTM_Tutorial.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python...

1 answer below »
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "LSTM_Tutorial.ipynb",
"provenance": [],
"collapsed_sections": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "code",
"metadata": {
"id": "rcTzbmQBYQB6"
},
"source": [
"import tensorflow as tf\n",
"from tensorflow.keras import datasets, layers, models, optimizers\n",
"from tensorflow.keras.datasets import imdb\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.optimizers import SGD, Adam\n",
"from tensorflow.keras.layers import Input, LSTM, Dense, Embedding, Conv1D, MaxPooling1D\n",
"from tensorflow.keras.preprocessing import sequence\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1sIigNQMi8WL",
"colab": {
"base_uri": "https:
localhost:8080/"
},
"outputId": "86c2aa2b-6030-463d-8f6a-58ec0b71671a"
},
"source": [
"# load the dataset but only keep the top n words, zero the rest\n",
"# The IMDB dataset is a set of 50,000 highly polarized reviews from the Internet Movie Database. Each set contains an equal number (50%) of positive and negative reviews. They are split into 25000 reviews each for training and testing\n",
"top_words = 5000\n",
"(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=top_words)"
],
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"text": [
":6: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
"/us
local/li
python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:159: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
" x_train, y_train = np.a
ay(xs[:idx]), np.a
ay(labels[:idx])\n",
"/us
local/li
python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:160: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
" x_test, y_test = np.a
ay(xs[idx:]), np.a
ay(labels[idx:])\n"
],
"name": "stde
"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ozhJjRoQrPbl"
},
"source": [
"# truncate and pad input sequences to ensure the vectors have the same length although the length of the individual content can be different\n",
"max_review_length = 500\n",
"x_train = sequence.pad_sequences(x_train, maxlen=max_review_length)\n",
"x_test = sequence.pad_sequences(x_test, maxlen=max_review_length)"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "esSqg8N2sPSo",
"colab": {
"base_uri": "https:
localhost:8080/"
},
"outputId": "603ee06b-6ca3-4328-e67b-378e4e35ef7b"
},
"source": [
"# Build LSTM\n",
"# The first layer is the Embedded layer that uses the vectors with length of 32 to present each word\n",
"# The second layer is the LSTM layer with 100 units\n",
"# The output layer is Dense layer since this is a classification problem. Because this is a binary classification, we can use sigmoid instead of softmax\n",
"model = Sequential()\n",
"embedding_vecor_length = 32\n",
"model.add(Embedding(top_words, embedding_vecor_length, input_length=max_review_length))\n",
"model.add(LSTM(100))\n",
"model.add(Dense(1, activation='sigmoid'))\n",
"print(model.summary())"
],
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"sequential\"\n",
"_________________________________________________________________\n",
"Layer (type XXXXXXXXXXOutput Shape XXXXXXXXXXParam # \n",
"=================================================================\n",
"embedding (Embedding XXXXXXXXXXNone, 500, XXXXXXXXXX XXXXXXXXXXn",
"_________________________________________________________________\n",
"lstm (LSTM XXXXXXXXXXNone, XXXXXXXXXX XXXXXXXXXXn",
"_________________________________________________________________\n",
"dense (Dense XXXXXXXXXXNone, XXXXXXXXXX XXXXXXXXXXn",
"=================================================================\n",
"Total params: 213,301\n",
"Trainable params: 213,301\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"None\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "GHIW82-pwXu4",
"colab": {
"base_uri": "https:
localhost:8080/"
},
"outputId": "5a494da4-54b2-4ca9-ea93-b4f77f894604"
},
"source": [
"# Compile and train the learning model\n",
"adam = optimizers.Adam(lr=0.001)\n",
"\n",
"model.compile(adam, loss='binary_crossentropy', metrics=['accuracy'])\n",
"\n",
"history = model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=3, batch_size=64)"
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/3\n",
Answered Same Day Apr 15, 2021

Solution

Sandeep Kumar answered on Apr 16 2021
159 Votes
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"kernelspec": {
"name": "python394jvsc74a57bd081118431cc388d258ed977b65143603a98f8ad6ed776c173758a3af876bc6de9",
"display_name": "Python 3.9.4 64-bit"
},
"language_info": {
"codemi
or_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4-final"
},
"colab": {
"name": "IMDB movie review Modeling DNN CNN LSTM Keras.ipynb",
"provenance": []
}
},
"cells": [
{
"cell_type": "code",
"metadata": {
"id": "yJDfTCHvULWg"
},
"source": [
"from keras.datasets import imdb\n",
"%matplotlib inline\n",
"import numpy as np\n",
"import pandas as pd\n",
"from matplotlib import cm\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import os\n",
"import time"
],
"execution_count": 28,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "0Lf43x1oULW7"
},
"source": [
"from keras.preprocessing import sequence\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Dropout, Activation\n",
"from keras.layers import Embedding\n",
"from keras.layers import Conv1D, GlobalMaxPooling1D\n",
"from keras.callbacks import EarlyStopping\n",
"from keras import models"
],
"execution_count": 29,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 0
},
"id": "9Z2RhfpPULW-",
"outputId": "dffec856-2810-49de-b253-5c0d3
524e6"
},
"source": [
"\n",
"(X_train, y_train), (X_test, y_test) = imdb.load_data()\n",
"X = np.concatenate((X_train, X_test), axis=0)\n",
"y = np.concatenate((y_train, y_test), axis=0)"
],
"execution_count": 30,
"outputs": [
{
"output_type": "stream",
"text": [
":6: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
"/us
local/li
python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:159: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
" x_train, y_train = np.a
ay(xs[:idx]), np.a
ay(labels[:idx])\n",
"/us
local/li
python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:160: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
" x_test, y_test = np.a
ay(xs[idx:]), np.a
ay(labels[idx:])\n"
],
"name": "stde
"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 0
},
"id": "JJXh9NkDULW_",
"outputId": "27ee5cf9-43e0-4501-acdb-532c3e635253"
},
"source": [
"##training data shape review\n",
"print(\"Training data: \")\n",
"print(X.shape)\n",
"print(y.shape)\n",
"print(\"Classes: \")\n",
"print(np.unique(y))"
],
"execution_count": 31,
"outputs": [
{
"output_type": "stream",
"text": [
"Training data: \n",
"(50000,)\n",
"(50000,)\n",
"Classes: \n",
"[0 1]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 0
},
"id": "GnKYq1bVULXB",
"outputId": "0adaa77d-9b67-4e58-ad7d-1f62da898acb"
},
"source": [
"print(\"Number of words: \")\n",
"print(len(np.unique(np.hstack(X))))"
],
"execution_count": 32,
"outputs": [
{
"output_type": "stream",
"text": [
"Number of words: \n",
"88585\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 299
},
"id": "ffaOSrvEULXC",
"outputId": "10a0455a-d45f-4a7b-8c0c-dc1456211e71"
},
"source": [
"print(\"Review length: \")\n",
"result = [len(x) for x in X]\n",
"print(\"Mean %.2f words (%f)\" % (np.mean(result), np.std(result)))\n",
"# plot review length\n",
"plt.boxplot(result)\n",
"plt.show()"
],
"execution_count": 33,
"outputs": [
{
"output_type": "stream",
"text": [
"Review length: \n",
"Mean 234.76 words (172.911495)\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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
v1FtycB1z+R65G+lMOBAwc4e
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
QyJJusUmOqa/MKV0LNs+DizMtu8Bjoz
zCrXav+ORGxOiL6I6L/1KlTE2xPknQ1N30iN12cszZp89ZSSq+klFpTSq2uXChJk2uioX8iG7Yhuz+Z1Y8C947
ymrXasuSZpCEw393cClGTjLgR+Nq38rm8XzVeC32TDQHuDhiJiTncB9OKtJkqbQDdfeiYge4L8C8yNikIuzcP4aeD0iVgGHga9nu78JPA4cBM4CKwBSSqcj4q+At7P9/jKl9NmTw5KkWyym82Xkra2tqb+/v+g2pMuut9bOdP63pHKJiHdSSq1Xe84rciWpRAx9SSoRQ1+SSsTQl6QSMfQlqUQMfUkqEUNfkkrE0JekEjH0JalEDH1JKhFDX5JKxNCXpBIx9CWpRAx9SSoRQ1+SSsTQl6QSMfQlqUQMfUkqEUNfkkrE0JekEjH0JalEDH1JKhFDX5JKxNCXpBIx9CWpRAx9SSoRQ1+SSsTQl6QSMfQlqUQMfUkqEUNfkkrkpkI/Ig5FxC8j4t2I6M9qcyNib0R8kN3PyeoREd+NiIMR8V5EfGkyvoAkqXKTcaTfllJ6IKXUmj1+AdiXUloM7MseAzwGLM5uq4GXJ+GzpUkRERXdbvY9pKLdiuGdJ4BXs+1XgWXj6jvSRT8DZkfE3bfg86XcUkoV3W72PaSi3WzoJ+DHEfFORKzOagtTSsey7ePAwmz7HuDIuNcOZrUrRMTqiOiPiP5Tp07dZHuSpPFm3OTrl6aUjkbEF4C9EfHv459MKaWIyHV4k1J6BXgFoLW11UMjTSsppasO03gUr2pxU0f6KaWj2f1J4J+Ah4ATl4ZtsvuT2e5HgXvHvbwpq0lVZfxQjcM2qjYTDv2IaIyIuy5tAw8D+4HdwPJst+XAj7Lt3cC3slk8XwV+O24YSJI0BW5meGch8E/Zf3VnADtTSv8cEW8Dr0fEKuAw8PVs/zeBx4GDwFlgxU18tiRpAiYc+imlXwN/fJX6x8B/u0o9Ad+e6OdJkm6eV+RKUokY+pJUIoa+JJWIoS9JJWLoS1KJGPqSVCKGviSViKEvSSVi6EtSiRj6klQihr4klcjNrqcvTUtz587lzJkzt/xzbvVPIM6ZM4fTp0/f0s9QuRj6ui2dOXPmtljn3t/V1WRzeEeSSsTQl6QSMfQlqUQMfUkqEUNfkkrE0JekEnHKpm5L6aU/gO/MKrqNm5Ze+oOiW9BtxtDXbSn+1+9um3n66TtFd6HbicM7klQihr4klYjDO7pt3Q5LGMyZM6foFnSbMfR1W5qK8fyIuC3OG6hcHN6RpBIx9CWpRAx9SSoRQ1+SSsTQl6QSmfLQj4hHI+JXEXEwIl6Y6s+XpDKb0tCPiBrge8BjwBKgPSKWTGUPklRmU32k/xBwMKX065TSCPAa8MQU9yBJpTXVF2fdAxwZ93gQ+Mr4HSJiNbAa4L777pu6zlRqE716N+
vJhLRZt2J3JTSq+klFpTSq0LFiwouh2VREppSm5S0aY69I8C94573JTVJElTYKpD/21gcUR8MSLqgCeB3VPcgySV1pSO6aeULkTEWmAPUAN0p5Ten8oeJKnMpnyVzZTSm8CbU/25kqRpeCJXknTrGPqSVCKGviSViKEvSSUS0/mCkYg4BRwuug/pGuYDHxXdhHQV/zmldNWrW6d16EvTWUT0p5Rai+5DysPhHUkqEUNfkkrE0Jcm7pWiG5DyckxfkkrEI31JKhFDX5JKxNCXcoqI7og4GRH7i+5FysvQl/L7IfBo0U1IE2HoSzmllH4CnC66D2kiDH1JKhFDX5JKxNCXpBIx9CWpRAx9KaeI6AH+BfjDiBiMiFVF9yRVymUYJKlEPNKXpBIx9CWpRAx9SSoRQ1+SSsTQl6QSMfQlqUQMfUkqkf8P9ZvmO4xv3lsAAAAASUVORK5CYII=\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "lRyNiW0sULXE"
},
"source": [
"#####Analysis#####"
],
"execution_count": 34,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 0
},
"id": "6gnnvsvvULXF",
"outputId": "ff1c4c17-c31d-44c1-c2e5-524a636ff310"
},
"source": [
"(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=5000)"
],
"execution_count": 35,
"outputs": [
{
"output_type": "stream",
"text": [
":6: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
"/us
local/li
python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:159: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
" x_train, y_train = np.a
ay(xs[:idx]), np.a
ay(labels[:idx])\n",
"/us
local/li
python3.7/dist-packages/tensorflow/python/keras/datasets/imdb.py:160: VisibleDeprecationWarning: Creating an nda
ay from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or nda
ays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the nda
ay\n",
" x_test, y_test = np.a
ay(xs[idx:]), np.a
ay(labels[idx:])\n"
],
"name": "stde
"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "JBanO5PMULXG"
},
"source": [
"def vectorize_sequences(sequences, dimension=5000):\n",
" # Create an all-zero matrix of shape (len(sequences), dimension)\n",
" results = np.zeros((len(sequences), dimension))\n",
" for i, sequence in enumerate(sequences):\n",
" results[i, sequence] = 1. # set specific indices of results[i] to 1s\n",
" return results\n",
"\n",
"# Our vectorized training data\n",
"x_train = vectorize_sequences(train_data)\n",
"# Our vectorized test data\n",
"x_test = vectorize_sequences(test_data)"
],
"execution_count": 36,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "m2UgUmlGULXI"
},
"source": [
"# Our vectorized labels one-hot encoder\n",
"y_train = np.asa
ay(train_labels).astype('float32')\n",
"y_test = np.asa
ay(test_labels).astype('float32')"
],
"execution_count": 37,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "995zJLPtULXJ"
},
"source": [
"from keras import layers\n",
"from keras import models\n",
"\n",
"model = models.Sequential()\n",
"model.add(layers.Dense(32, activation='relu', input_shape=(5000,)))\n",
"model.add(layers.Dense(32, activation='relu',))\n",
"model.add(layers.Dense(1, activation='sigmoid'))"
],
"execution_count": 38,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "u6V3sbfeULXK"
},
"source": [
"#Set validation set aside\n",
"\n",
"x_val = x_train[:10000]\n",
"partial_x_train = x_train[10000:]\n",
"\n",
"y_val = y_train[:10000]\n",
"partial_y_train = y_train[10000:]"
],
"execution_count": 39,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "gUl463vOULXL"
},
"source": [
"model.compile(optimizer='adam',\n",
" loss='binary_crossentropy',\n",
" metrics=['acc'])"
],
"execution_count": 40,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 0
},
"id": "Q41E98NWULXM",
"outputId": "f5a27d70-0896-4f4a-cfe3-54d3642afb56"
},
"source": [
"start_time_m1 = time.time()\n",
"history = model.fit(partial_x_train,\n",
" partial_y_train,\n",
" epochs=20,\n",
" batch_size=512,\n",
" validation_data=(x_val, y_val))\n",
"total_time_m1 = time.time() - start_time_m1\n",
"\n",
"print(\"The Dense Convolutional Neural Network 1 layer took %.4f seconds to train.\" % (total_time_m1))"
],
"execution_count": 41,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/20\n",
"30/30 [==============================] - 1s 34ms/step - loss: 0.6197 - acc: 0.6813 - val_loss: 0.3706 - val_acc: 0.8568\n",
"Epoch 2/20\n",
"30/30 [==============================] - 1s 25ms/step - loss: 0.3011 - acc: 0.8871 - val_loss: 0.2959 - val_acc: 0.8813\n",
"Epoch 3/20\n",
"30/30 [==============================] - 1s 25ms/step - loss: 0.2059 - acc: 0.9258 - val_loss: 0.3023 - val_acc: 0.8825\n",
"Epoch 4/20\n",
"30/30 [==============================] - 1s 44ms/step - loss: 0.1605 - acc: 0.9426 - val_loss: 0.3152 - val_acc: 0.8759\n",
"Epoch 5/20\n",
"30/30 [==============================] - 1s 25ms/step - loss: 0.1310 - acc: 0.9543 - val_loss: 0.3386 - val_acc: 0.8757\n",
"Epoch 6/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.1130 - acc: 0.9656 - val_loss: 0.3741 - val_acc: 0.8709\n",
"Epoch 7/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0872 - acc: 0.9734 - val_loss: 0.3975 - val_acc: 0.8658\n",
"Epoch 8/20\n",
"30/30 [==============================] - 1s 25ms/step - loss: 0.0708 - acc: 0.9801 - val_loss: 0.4328 - val_acc: 0.8649\n",
"Epoch 9/20\n",
"30/30 [==============================] - 1s 25ms/step - loss: 0.0507 - acc: 0.9895 - val_loss: 0.4745 - val_acc: 0.8625\n",
"Epoch 10/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0345 - acc: 0.9959 - val_loss: 0.5124 - val_acc: 0.8636\n",
"Epoch 11/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0260 - acc: 0.9973 - val_loss: 0.5605 - val_acc: 0.8575\n",
"Epoch 12/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0199 - acc: 0.9990 - val_loss: 0.5915 - val_acc: 0.8603\n",
"Epoch 13/20\n",
"30/30 [==============================] - 1s 25ms/step - loss: 0.0136 - acc: 0.9994 - val_loss: 0.6290 - val_acc: 0.8579\n",
"Epoch 14/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0100 - acc: 0.9994 - val_loss: 0.6548 - val_acc: 0.8587\n",
"Epoch 15/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0074 - acc: 0.9999 - val_loss: 0.6876 - val_acc: 0.8575\n",
"Epoch 16/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0058 - acc: 1.0000 - val_loss: 0.7081 - val_acc: 0.8595\n",
"Epoch 17/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0044 - acc: 0.9999 - val_loss: 0.7309 - val_acc: 0.8581\n",
"Epoch 18/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0037 - acc: 1.0000 - val_loss: 0.7539 - val_acc: 0.8577\n",
"Epoch 19/20\n",
"30/30 [==============================] - 1s 24ms/step - loss: 0.0030 - acc: 1.0000 - val_loss: 0.7717 - val_acc: 0.8574\n",
"Epoch 20/20\n",
"30/30 [==============================] - 1s 25ms/step - loss: 0.0026 - acc: 1.0000 - val_loss: 0.7911 - val_acc: 0.8573\n",
"The Dense Convolutional Neural Network 1 layer took 16.1613 seconds to train.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 0
},
"id": "t5teUXrBULXN",
"outputId": "7d47241e-9c94-410d-e275-e13c643ef5a4"
},
"source": [
"history_dict = history.history\n",
"history_dict.keys()"
],
"execution_count": 42,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['loss', 'acc', 'val_loss', 'val_acc'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 42
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 295
},
"id": "DU2YhCTQULXO",
"outputId": "c6029e3d-6e18-4dd3-cac5-c41a97376f9c"
},
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"acc = history.history['acc']\n",
"val_acc = history.history['val_acc']\n",
"loss = history.history['loss']\n",
"val_loss = history.history['val_loss']\n",
"\n",
"epochs = range(1, len(acc) + 1)\n",
"\n",
"# \"bo\" is for \"blue dot\"\n",
"plt.plot(epochs, loss, 'bo', label='Training loss')\n",
"# b is for \"solid blue line\"\n",
"plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
"plt.title('Training and validation loss')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.legend()\n",
"\n",
"plt.show()"
],
"execution_count": 43,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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
JF
72WFi1acP7557PSK3e+
77h0o0rVq1Yvfu3Xz77bd07NiR1NRUzjvvPJYsWVK+F8yYBLRuHTz2GFx8MZx6KvTtCx9/7L6YzpoF27fDm29Cv37+JQHweRyBNyZgdoFto0IerwE6+BlDQSNHQk7Okdtyctz2cEoFhcnKyuKjjz4iKSmJXbt2sWTJEipUqMC8efP43e9+xxtvvHHUMZmZmSxcuJDdu3fTtGlTBg8efFSf+88
5zVq1dTt25dOnTowIcffkhaWhp33nknixcvplGjRvTu3bvE+EaPHk2rVq2YMWMGCxYs4L
mPFihWMHz+eSZMm0aFDB
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
sx5WnvXlf/n79W8IoVlgRMbIj7RPD112X
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
lTQuzfMmOGqjmLJwYOuz/+LL8L
7vE1qAB/Pa3bhbQpk2DjtAYE60sEXi6dIF
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\n",
"text/plain": [
"
"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https:
localhost:8080/",
"height": 295
},
"id": "ANUlU5ttULXQ",
"outputId": "33509dc2-ab45-4916-e33f-c2fa4904bccd"
},
"source": [
"plt.clf() # clear figure\n",
"acc_values = history_dict['acc']\n",
"val_acc_values = history_dict['val_acc']\n",
"\n",
"plt.plot(epochs, acc, 'bo', label='Training acc')\n",
"plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
"plt.title('Training and validation accuracy')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.legend()\n",
"\n",
"plt.show()"
],
"execution_count": 44,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png":...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here