{"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":"code","source":"from __future__ import print_function\nimport tensorflow as tf\nfrom tensorflow.keras.datasets import cifar10\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, Dropout, Activation, Flatten\nfrom tensorflow.keras.layers import BatchNormalization\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D\nfrom tensorflow.keras.regularizers import l2\nimport numpy as np\nimport os\nimport matplotlib.pyplot as plt\n%matplotlib inline","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:50.370678Z","iopub.execute_input":"2021-09-19T07:46:50.370961Z","iopub.status.idle":"2021-09-19T07:46:50.381349Z","shell.execute_reply.started":"2021-09-19T07:46:50.370931Z","shell.execute_reply":"2021-09-19T07:46:50.380342Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Defining the parameters\nbatch_size = 32\nnum_classes = 10\nepochs = 50","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:50.383368Z","iopub.execute_input":"2021-09-19T07:46:50.384039Z","iopub.status.idle":"2021-09-19T07:46:50.393757Z","shell.execute_reply.started":"2021-09-19T07:46:50.383992Z","shell.execute_reply":"2021-09-19T07:46:50.392854Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Splitting the data between train and test\n(x_train, y_train), (x_test, y_test) = cifar10.load_data()\nprint('x_train shape:', x_train.shape)\nprint(x_train.shape[0], 'train samples')\nprint(x_test.shape[0], 'test samples')","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:50.395080Z","iopub.execute_input":"2021-09-19T07:46:50.395840Z","iopub.status.idle":"2021-09-19T07:46:51.144198Z","shell.execute_reply.started":"2021-09-19T07:46:50.395803Z","shell.execute_reply":"2021-09-19T07:46:51.143285Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# plotting some random 10 images\n\nclass_names = ['airplane','automobile','bird','cat','deer',\n               'dog','frog','horse','ship','truck']\n\nfig = plt.figure(figsize=(8,3))\nfor i in range(num_classes):\n    ax = fig.add_subplot(2, 5, 1 + i, xticks=[], yticks=[])\n    idx = np.where(y_train[:]==i)[0]\n    features_idx = x_train[idx,::]\n    img_num = np.random.randint(features_idx.shape[0])\n    im = (features_idx[img_num,::])\n    ax.set_title(class_names[i])\n    plt.imshow(im)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:51.146293Z","iopub.execute_input":"2021-09-19T07:46:51.146624Z","iopub.status.idle":"2021-09-19T07:46:51.570399Z","shell.execute_reply.started":"2021-09-19T07:46:51.146590Z","shell.execute_reply":"2021-09-19T07:46:51.569588Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Convert class vectors to binary class matrices.\ny_train = tf.keras.utils.to_categorical(y_train, num_classes)\ny_test = tf.keras.utils.to_categorical(y_test, num_classes)","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:51.571697Z","iopub.execute_input":"2021-09-19T07:46:51.572011Z","iopub.status.idle":"2021-09-19T07:46:51.578643Z","shell.execute_reply.started":"2021-09-19T07:46:51.571978Z","shell.execute_reply":"2021-09-19T07:46:51.577862Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Printing sample data\nprint(y_train[:10])","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:51.580169Z","iopub.execute_input":"2021-09-19T07:46:51.580758Z","iopub.status.idle":"2021-09-19T07:46:51.588849Z","shell.execute_reply.started":"2021-09-19T07:46:51.580721Z","shell.execute_reply":"2021-09-19T07:46:51.588000Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = Sequential()\nmodel.add(Conv2D(64, (3, 3), padding='same',\n                 input_shape=x_train.shape[1:]))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(64, (3, 3)))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2, 2)))\nmodel.add(Dropout(0.25))\n\nmodel.add(Conv2D(128, (3, 3), padding='same'))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(128, (3, 3)))\nmodel.add(Activation('relu'))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2, 2)))\nmodel.add(Dropout(0.25))\n\nmodel.add(Flatten())\nmodel.add(Dense(512,kernel_regularizer=l2(0.01)))\nmodel.add(Activation('relu'))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(num_classes))\nmodel.add(Activation('softmax'))","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:51.590516Z","iopub.execute_input":"2021-09-19T07:46:51.591117Z","iopub.status.idle":"2021-09-19T07:46:51.715322Z","shell.execute_reply.started":"2021-09-19T07:46:51.591081Z","shell.execute_reply":"2021-09-19T07:46:51.714606Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# summary of the model\nprint(model.summary())","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:51.716622Z","iopub.execute_input":"2021-09-19T07:46:51.716878Z","iopub.status.idle":"2021-09-19T07:46:51.733692Z","shell.execute_reply.started":"2021-09-19T07:46:51.716846Z","shell.execute_reply":"2021-09-19T07:46:51.732976Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# compile\nmodel.compile(loss='categorical_crossentropy',\n              optimizer='sgd',\n              metrics=['accuracy'])\n\nx_train = x_train.astype('float32')\nx_test = x_test.astype('float32')\n\n# Normalizing the input image\nx_train /= 255\nx_test /= 255\n","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:51.734847Z","iopub.execute_input":"2021-09-19T07:46:51.735071Z","iopub.status.idle":"2021-09-19T07:46:51.997341Z","shell.execute_reply.started":"2021-09-19T07:46:51.735041Z","shell.execute_reply":"2021-09-19T07:46:51.996551Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Training the model\nhistory = model.fit(x_train, y_train,\n              batch_size=batch_size,\n              epochs=epochs,\n              validation_data=(x_test, y_test),\n              shuffle=True)","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:46:51.999868Z","iopub.execute_input":"2021-09-19T07:46:52.000154Z","iopub.status.idle":"2021-09-19T07:55:09.325673Z","shell.execute_reply.started":"2021-09-19T07:46:52.000119Z","shell.execute_reply":"2021-09-19T07:55:09.324930Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# list all data in history\nprint(history.history.keys())\n# summarize history for accuracy\nplt.plot(history.history['accuracy'])\nplt.plot(history.history['val_accuracy'])\nplt.title('model accuracy')\nplt.ylabel('accuracy')\nplt.xlabel('epoch')\nplt.legend(['train', 'test'], loc='upper left')\nplt.show()\n# summarize history for loss\nplt.plot(history.history['loss'])\nplt.plot(history.history['val_loss'])\nplt.title('model loss')\nplt.ylabel('loss')\nplt.xlabel('epoch')\nplt.legend(['train', 'test'], loc='upper left')\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-09-19T07:56:13.509000Z","iopub.execute_input":"2021-09-19T07:56:13.509314Z","iopub.status.idle":"2021-09-19T07:56:13.911611Z","shell.execute_reply.started":"2021-09-19T07:56:13.509263Z","shell.execute_reply":"2021-09-19T07:56:13.910959Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}