Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

200864_dl_final #46

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
324 changes: 324 additions & 0 deletions Assignment/Assignment3/DL_Assignment_3.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,324 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "DL_Assignment_3.ipynb",
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
},
"accelerator": "GPU",
"gpuClass": "standard"
},
"cells": [
{
"cell_type": "markdown",
"source": [
"Importing tensorflow"
],
"metadata": {
"id": "S07TSoqxDKjm"
}
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kAeFpk-7Bz-q",
"outputId": "38d11f86-c811-4dad-e90b-41373f73dc7c"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Found GPU at: /device:GPU:0\n"
]
}
],
"source": [
"%tensorflow_version 2.x\n",
"import tensorflow as tf\n",
"device_name = tf.test.gpu_device_name()\n",
"if device_name != '/device:GPU:0':\n",
" raise SystemError('GPU device not found')\n",
"print('Found GPU at: {}'.format(device_name))"
]
},
{
"cell_type": "markdown",
"source": [
"Importing keras, layers and dataset"
],
"metadata": {
"id": "2lqBgJ62DN7v"
}
},
{
"cell_type": "code",
"source": [
"from tensorflow import keras\n",
"from tensorflow.keras import layers\n",
"from tensorflow.keras.datasets import mnist"
],
"metadata": {
"id": "nvxO5FFVCF1k"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Splitting test and train datasets"
],
"metadata": {
"id": "GHrB6KeCDbaX"
}
},
{
"cell_type": "code",
"source": [
"(x_train,y_train), (x_test, y_test) = mnist.load_data()\n",
"print(x_train.shape)\n",
"#we have 60000 datasets of 28 * 28 images\n",
"#normalising the data\n",
"x_train = x_train.reshape([-1, 28, 28]).astype(\"float32\") / 255.0\n",
"x_test = x_test.reshape([-1, 28, 28]).astype(\"float32\") / 255.0"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "pWX29ZZICmkb",
"outputId": "750e20ad-9b6c-4504-df87-64ac67df3a70"
},
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(60000, 28, 28)\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Building model LSTM (using sequential)"
],
"metadata": {
"id": "DbEoIEEMDin3"
}
},
{
"cell_type": "code",
"source": [
"model = keras.Sequential()\n",
"model.add(keras.Input(shape=(None, 28)))\n",
"model.add(layers.LSTM(256, return_sequences=True, activation=\"relu\"))\n",
"model.add(layers.LSTM(256))\n",
"model.add(layers.Dense(10))\n",
"\n",
"print(model.summary())\n",
"\n",
"model.compile(\n",
" loss = keras.losses.SparseCategoricalCrossentropy(from_logits = True),\n",
" optimizer = keras.optimizers.Adam(learning_rate = 0.003),\n",
" metrics = [\"accuracy\"],\n",
")\n",
"\n",
"model.fit(x_train, y_train, batch_size = 64, epochs = 10, verbose = 2)\n",
"model.evaluate(x_test, y_test, batch_size = 64, verbose = 2)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "HHgRpzX7DP0A",
"outputId": "4b14c427-059b-40d2-ee3b-f392df699ee8"
},
"execution_count": 9,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"WARNING:tensorflow:Layer lstm_6 will not use cuDNN kernels since it doesn't meet the criteria. It will use a generic GPU kernel as fallback when running on GPU.\n",
"Model: \"sequential_3\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" lstm_6 (LSTM) (None, None, 256) 291840 \n",
" \n",
" lstm_7 (LSTM) (None, 256) 525312 \n",
" \n",
" dense_4 (Dense) (None, 10) 2570 \n",
" \n",
"=================================================================\n",
"Total params: 819,722\n",
"Trainable params: 819,722\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"None\n",
"Epoch 1/10\n",
"938/938 - 90s - loss: 0.2631 - accuracy: 0.9163 - 90s/epoch - 96ms/step\n",
"Epoch 2/10\n",
"938/938 - 46s - loss: 0.0754 - accuracy: 0.9781 - 46s/epoch - 49ms/step\n",
"Epoch 3/10\n",
"938/938 - 46s - loss: 0.0540 - accuracy: 0.9834 - 46s/epoch - 49ms/step\n",
"Epoch 4/10\n",
"938/938 - 45s - loss: 0.0428 - accuracy: 0.9863 - 45s/epoch - 48ms/step\n",
"Epoch 5/10\n",
"938/938 - 47s - loss: 0.0347 - accuracy: 0.9891 - 47s/epoch - 51ms/step\n",
"Epoch 6/10\n",
"938/938 - 45s - loss: 0.0295 - accuracy: 0.9907 - 45s/epoch - 48ms/step\n",
"Epoch 7/10\n",
"938/938 - 52s - loss: 0.0260 - accuracy: 0.9921 - 52s/epoch - 55ms/step\n",
"Epoch 8/10\n",
"938/938 - 58s - loss: 0.0236 - accuracy: 0.9924 - 58s/epoch - 62ms/step\n",
"Epoch 9/10\n",
"938/938 - 46s - loss: 0.0212 - accuracy: 0.9935 - 46s/epoch - 49ms/step\n",
"Epoch 10/10\n",
"938/938 - 48s - loss: 0.0191 - accuracy: 0.9939 - 48s/epoch - 51ms/step\n",
"157/157 - 2s - loss: 0.0351 - accuracy: 0.9907 - 2s/epoch - 11ms/step\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[0.03508976846933365, 0.9907000064849854]"
]
},
"metadata": {},
"execution_count": 9
}
]
},
{
"cell_type": "markdown",
"source": [
"Testing it on some random image number (code used from previous assignments)"
],
"metadata": {
"id": "vnCxP5iYDpiU"
}
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"labels = '''0 1 2 3 4 5 6 7 8 9'''.split()\n",
"image_number = 0\n",
"plt.imshow(x_test[image_number])\n",
"n = np.array(x_test[image_number])\n",
"p = n.reshape(1, 28, 28, 1)\n",
"print(model.predict(p).argmax())\n",
"predicted_label = labels[model.predict(p).argmax()]\n",
"original_label = labels[y_test[image_number]]\n",
"print(\"Original label is {} and predicted label is {}\".format(\n",
" original_label, predicted_label))"
],
"metadata": {
"id": "MNBjQ41lGgd2",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 301
},
"outputId": "e8aa2fa6-6d4e-425e-b33c-ecd78e7ead9b"
},
"execution_count": 12,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"7\n",
"Original label is 7 and predicted label is 7\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
"image_number = 3\n",
"plt.imshow(x_test[image_number])\n",
"n = np.array(x_test[image_number])\n",
"p = n.reshape(1, 28, 28, 1)\n",
"print(model.predict(p).argmax())\n",
"predicted_label = labels[model.predict(p).argmax()]\n",
"original_label = labels[y_test[image_number]]\n",
"print(\"Original label is {} and predicted label is {}\".format(\n",
" original_label, predicted_label))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 301
},
"id": "1KwdcQXjCdn0",
"outputId": "de9567a2-38df-463f-ac29-ef8f83e557da"
},
"execution_count": 13,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0\n",
"Original label is 0 and predicted label is 0\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"source": [
""
],
"metadata": {
"id": "ZOgTXyarDFOY"
},
"execution_count": null,
"outputs": []
}
]
}
1 change: 1 addition & 0 deletions Assignment/Assignment3/assignment3
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Loading