{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"<a href=\"https://colab.research.google.com/github/AmitHasanShuvo/Machine-Learning-Projects/blob/master/CIFAR_Images_classification_using_CNN.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>","metadata":{"id":"view-in-github"}},{"cell_type":"markdown","source":"Author: Kazi Amit Hasan <br>\nDepartment of Computer Science & Engineering, <br>\nRajshahi University of Engineering & Technology (RUET) <br>\nWebsite: https://amithasanshuvo.github.io/ <br>\nLinkedin: https://www.linkedin.com/in/kazi-amit-hasan-514443140/ <br>\nEmail: kaziamithasan89@gmail.com","metadata":{}},{"cell_type":"code","source":"import tensorflow as tf\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nimport tensorflow as tf\n\nfrom sklearn.preprocessing import MinMaxScaler\n\nfrom keras.utils.np_utils import to_categorical\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Flatten, Conv2D, MaxPool2D, BatchNormalization, Dropout\nfrom keras.optimizers import SGD","metadata":{"id":"BJOTtc0h-KBW","execution":{"iopub.status.busy":"2023-05-15T13:33:47.191004Z","iopub.execute_input":"2023-05-15T13:33:47.191778Z","iopub.status.idle":"2023-05-15T13:33:52.935054Z","shell.execute_reply.started":"2023-05-15T13:33:47.191449Z","shell.execute_reply":"2023-05-15T13:33:52.933438Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"data = tf.keras.datasets.cifar10\n# The CIFAR10 dataset contains 60,000 color images in 10 classes, \n# with 6,000 images in each class. The dataset is divided into 50,000 training\n# images and 10,000 testing images.\n","metadata":{"id":"_0XntK-9-Xni","execution":{"iopub.status.busy":"2023-05-15T13:33:52.937159Z","iopub.execute_input":"2023-05-15T13:33:52.937607Z","iopub.status.idle":"2023-05-15T13:33:52.942162Z","shell.execute_reply.started":"2023-05-15T13:33:52.937531Z","shell.execute_reply":"2023-05-15T13:33:52.941225Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"(train_images, train_labels), (test_images, test_labels) = data.load_data()","metadata":{"id":"w4E5rpfa-rHw","execution":{"iopub.status.busy":"2023-05-15T13:33:52.94464Z","iopub.execute_input":"2023-05-15T13:33:52.945309Z","iopub.status.idle":"2023-05-15T13:33:57.26794Z","shell.execute_reply.started":"2023-05-15T13:33:52.945256Z","shell.execute_reply":"2023-05-15T13:33:57.266923Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_images.shape","metadata":{"id":"cjRHOlA7-3Xs","outputId":"3c63159c-622f-4d9b-9395-011d320a1dfb","execution":{"iopub.status.busy":"2023-05-15T13:33:57.269633Z","iopub.execute_input":"2023-05-15T13:33:57.270172Z","iopub.status.idle":"2023-05-15T13:33:57.278431Z","shell.execute_reply.started":"2023-05-15T13:33:57.269973Z","shell.execute_reply":"2023-05-15T13:33:57.277593Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_images.shape\n","metadata":{"id":"sKrZe-hG_Zg5","outputId":"8c0638c2-cb24-4f7c-873e-3a0689db3636","execution":{"iopub.status.busy":"2023-05-15T13:33:57.281734Z","iopub.execute_input":"2023-05-15T13:33:57.282317Z","iopub.status.idle":"2023-05-15T13:33:57.330221Z","shell.execute_reply.started":"2023-05-15T13:33:57.282248Z","shell.execute_reply":"2023-05-15T13:33:57.329194Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(train_labels[0])","metadata":{"id":"UOifud8SCCe2","outputId":"411891af-9655-41de-f6be-6108542c537d","execution":{"iopub.status.busy":"2023-05-15T13:33:57.333566Z","iopub.execute_input":"2023-05-15T13:33:57.334026Z","iopub.status.idle":"2023-05-15T13:33:57.398066Z","shell.execute_reply.started":"2023-05-15T13:33:57.333972Z","shell.execute_reply":"2023-05-15T13:33:57.396633Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nprint(train_images[1])","metadata":{"id":"LQ-xHbc-AdbQ","outputId":"0a48ed00-04f4-4650-d41f-d0de9326e6d4","execution":{"iopub.status.busy":"2023-05-15T13:33:57.400523Z","iopub.execute_input":"2023-05-15T13:33:57.401305Z","iopub.status.idle":"2023-05-15T13:33:57.465691Z","shell.execute_reply.started":"2023-05-15T13:33:57.401241Z","shell.execute_reply":"2023-05-15T13:33:57.464639Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure()\nplt.imshow(train_images[1])\nplt.colorbar()\nplt.grid(False)\n\nplt.show()","metadata":{"id":"y-ZX9DWRBQuT","outputId":"db846712-ab51-492c-8cd2-267e359e630b","execution":{"iopub.status.busy":"2023-05-15T13:33:57.467046Z","iopub.execute_input":"2023-05-15T13:33:57.467742Z","iopub.status.idle":"2023-05-15T13:33:57.714188Z","shell.execute_reply.started":"2023-05-15T13:33:57.467425Z","shell.execute_reply":"2023-05-15T13:33:57.713234Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(6):\n\t# define subplot\n\tplt.subplot(330 + 1 + i)\n\t# plot raw pixel data\n\tplt.imshow(train_images[i])\nplt.show()","metadata":{"id":"gK5dO_UCBagS","outputId":"65af6c9d-baea-4bb9-959e-f6a4e998fa2e","execution":{"iopub.status.busy":"2023-05-15T13:33:57.715808Z","iopub.execute_input":"2023-05-15T13:33:57.716492Z","iopub.status.idle":"2023-05-15T13:33:58.398297Z","shell.execute_reply.started":"2023-05-15T13:33:57.716426Z","shell.execute_reply":"2023-05-15T13:33:58.397331Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"ytrain=np.zeros(shape=(50000,10))\nfor i in range(50000):\n   ytrain[i][Y_train[i]]=1","metadata":{"execution":{"iopub.status.busy":"2023-05-15T10:20:24.062812Z","iopub.execute_input":"2023-05-15T10:20:24.063193Z","iopub.status.idle":"2023-05-15T10:20:24.07029Z","shell.execute_reply.started":"2023-05-15T10:20:24.063126Z","shell.execute_reply":"2023-05-15T10:20:24.069333Z"}}},{"cell_type":"code","source":"train_label=np.zeros(shape=(50000,10))\nfor i in range(50000): \n    train_label[i][train_labels[i][0]]=1\n","metadata":{"execution":{"iopub.status.busy":"2023-05-15T13:33:58.399863Z","iopub.execute_input":"2023-05-15T13:33:58.400462Z","iopub.status.idle":"2023-05-15T13:33:58.470046Z","shell.execute_reply.started":"2023-05-15T13:33:58.400401Z","shell.execute_reply":"2023-05-15T13:33:58.469347Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Normalize\n\ntrain_images, test_images = train_images / 255.0, test_images / 255.0\n\n","metadata":{"id":"8-UvlUONFRuv","execution":{"iopub.status.busy":"2023-05-15T13:33:58.472569Z","iopub.execute_input":"2023-05-15T13:33:58.473186Z","iopub.status.idle":"2023-05-15T13:33:58.940583Z","shell.execute_reply.started":"2023-05-15T13:33:58.473129Z","shell.execute_reply":"2023-05-15T13:33:58.939738Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model =Sequential()\nmodel.add(Conv2D(filters=32, kernel_size=(5,5), kernel_initializer='he_uniform', padding='Same', activation='relu', input_shape=(32,32,3)))\nmodel.add(BatchNormalization())\nmodel.add(MaxPool2D(pool_size=(2,2)))\n\nmodel.add(Conv2D(filters=64, kernel_size=(5,5), kernel_initializer='he_uniform', padding='Same', activation='relu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPool2D(pool_size=(2,2)))\n\nmodel.add(Conv2D(filters=128, kernel_size=(5,5), kernel_initializer='he_uniform', padding='Same', activation='relu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPool2D(pool_size=(2,2)))\n\n\nmodel.add(Flatten())\nmodel.add(Dense(128, kernel_initializer='he_uniform', activation='relu'))\nmodel.add(BatchNormalization())\n\n\nmodel.add(Dense(10, activation='softmax'))\nmodel.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\nmodel.fit(train_images, train_label, validation_split=0.1, batch_size=500, epochs=50, verbose=2)\n\n","metadata":{"id":"YcxRj8L1H1Qq","execution":{"iopub.status.busy":"2023-05-15T13:33:58.942215Z","iopub.execute_input":"2023-05-15T13:33:58.942855Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"id":"uayWzDZLJI9R","outputId":"a6a9f26d-5351-4cd1-d552-5d0902b4fe7e","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"di={\n0:\"airplane\", \n1:\"automobile\", \n2:\"bird\",\n3:\"cat\", \n4:\"deer\" ,\n5:\"dog\" ,\n6:\"frog\" ,\n7:\"horse\" ,\n8:\"ship\", \n9:\"truck\"\n}","metadata":{"id":"MhW57kW8JKxL","outputId":"9f5b5379-89eb-4721-e65b-69b289ca1eea","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nplt.plot(history.history['accuracy'], label='accuracy')\nplt.plot(history.history['val_accuracy'], label = 'val_accuracy')\nplt.xlabel('Epoch')\nplt.ylabel('Accuracy')\nplt.ylim([0.5, 1])\nplt.legend(loc='lower right')","metadata":{"id":"LKsXT41rJ5Kg","outputId":"753524fb-ec08-49c3-82f4-b911601fbd37","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"level=np.random.randint(100)\nans=model.predict(test_images[level].reshape(1,32,32,3))\nprint(np.argmax(ans),\"val ans:\",test_labels[level])\nplt.imshow(test_images[level])","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}