{"metadata": {"language_info": {"name": "python", "version": "3"}, "kernelspec": {"language": "python", "name": "python3", "display_name": "Python 3"}}, "nbformat": 4, "nbformat_minor": 0, "cells": [{"metadata": {"collapsed": false, "_cell_guid": "568f4450-6a39-4a61-8fdf-ee8fd03ed2f0", "_uuid": "2e92a3330cba6de8467c6970398d474cee492258", "_execution_state": "idle"}, "execution_count": null, "outputs": [], "source": "98 % in 4 short epochs", "cell_type": "markdown"}, {"metadata": {"_cell_guid": "38a8e3cf-ff33-49a0-9203-eba2e31ff47d", "_uuid": "7036b0b8b5744293d84eee6597f1be156015d279", "_execution_state": "busy"}, "execution_count": null, "outputs": [], "source": "import os, json\nfrom glob import glob\nimport numpy as np\nimport scipy\nfrom sklearn.preprocessing import OneHotEncoder\nfrom sklearn.metrics import confusion_matrix\nnp.set_printoptions(precision=4, linewidth=100)\nfrom matplotlib import pyplot as plt\n\nfrom numpy.random import random, permutation\nfrom scipy import misc, ndimage\nfrom scipy.ndimage.interpolation import zoom\n\nimport keras\nfrom keras import backend as K\nfrom keras.utils.data_utils import get_file\nfrom keras.models import Sequential\nfrom keras.layers import Input\nfrom keras.layers.core import Flatten, Dense, Dropout, Lambda\nfrom keras.layers.convolutional import Convolution2D, MaxPooling2D, ZeroPadding2D\nfrom keras.optimizers import SGD, RMSprop\nfrom keras.preprocessing import image\nfrom keras import applications\n", "cell_type": "code"}, {"metadata": {"collapsed": false, "_cell_guid": "fceea3b9-98a1-4bfc-9160-52b62f35f2f4", "_uuid": "287c113c910f1b6e503d535804283d98687afd4a", "_execution_state": "busy"}, "execution_count": null, "outputs": [], "source": "from keras.layers.convolutional import Conv2D\nfrom keras.layers.pooling import MaxPooling2D \nfrom keras.layers.normalization import BatchNormalization\nmodel = Sequential()\n   \nmodel.add(Conv2D(16, 3, input_shape = (32, 32, 3), activation = 'relu'))\n       \nmodel.add(Conv2D(16, 3,  activation = 'relu'))\nmodel.add(MaxPooling2D(pool_size=(2, 2), strides=(2,2)))\n\nmodel.add(Conv2D(32, 3,  activation = 'relu'))       \nmodel.add(Conv2D(32, 3,  activation = 'relu'))\nmodel.add(MaxPooling2D(pool_size=(2, 2), strides=(2,2))) \n\n\n\nmodel.add(Flatten())\n\n\nmodel.add(Dense(10, activation='softmax'))\n", "cell_type": "code"}, {"metadata": {"collapsed": false, "_cell_guid": "b08cd006-a858-4baa-808c-6c59c4c73be6", "_uuid": "82badfe5070dfa700644f8500c9760d8ed603d58", "_execution_state": "busy"}, "execution_count": null, "outputs": [], "source": "from keras.preprocessing.image import ImageDataGenerator\n\ntrain_datagen = ImageDataGenerator(rescale = 1./255,\n                                   shear_range = 0.1,\n                                   zoom_range = 0.1,\n                                               )\n\ntest_datagen = ImageDataGenerator(rescale = 1./255)\n\ntraining_set = train_datagen.flow_from_directory('train',\n                                                 target_size = (32, 32),\n                                                 batch_size = 4,\n                                                 class_mode = 'categorical')\n\ntest_set = test_datagen.flow_from_directory('val',\n                                            target_size = (32, 32),\n                                            batch_size = 4,\n                                            class_mode = 'categorical')", "cell_type": "code"}, {"metadata": {"collapsed": false, "_cell_guid": "25ed1467-f75a-43f1-a612-3bccb7fd4809", "_uuid": "df2354dd140a5b18eefd716ac79e9d253ea7162b", "_execution_state": "idle"}, "execution_count": null, "outputs": [], "source": "this gives a 90 precent with 2 epochs u continue to run with diff batches. \nwith 2 extra 25 batches i got 98 precent", "cell_type": "markdown"}, {"metadata": {"collapsed": false, "_cell_guid": "3582dbf4-4903-473d-bce7-9316925d1756", "_uuid": "911e726735d76fb80421b19a4e5b346b81e545a1", "_execution_state": "idle"}, "execution_count": null, "outputs": [], "source": "model.compile(optimizer=SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False), loss='categorical_crossentropy', metrics=['accuracy'])\n\nmodel.fit_generator(training_set,\n                         steps_per_epoch = 22400/4,\n                         epochs = 2,\n                         validation_data = test_set,\n                         validation_steps = 4000/4)", "cell_type": "code"}]}