{"cells":[{"metadata":{},"cell_type":"markdown","source":"\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom tensorflow.python import keras\nfrom tensorflow.python.keras.models import Sequential\nfrom tensorflow.python.keras.layers import Dense, Flatten, Conv2D, Dropout\nimport matplotlib.pyplot as plt\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"img_rows, img_cols = 28, 28\nnum_classes = 10","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def data_prep(raw):\n    out_y = keras.utils.to_categorical(raw.label, num_classes)\n\n    num_images = raw.shape[0]\n    x_as_array = raw.values[:,1:]\n    x_shaped_array = x_as_array.reshape(num_images, img_rows, img_cols, 1)\n    out_x = x_shaped_array / 255\n    return out_x, out_y ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_file = \"../input/digit-recognizer/train.csv\"\nraw_data = pd.read_csv(train_file)\nraw_data.sample(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pd.DataFrame(raw_data.values[:,150:190]).sample(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"random_image_id = np.random.choice(raw_data.shape[0],1, replace=False)[0]\nrandom_image_id\nrandom_image_raw = raw_data.values[random_image_id,1:]\nrandom_image_raw = random_image_raw.reshape(img_rows, img_cols)\nplt.imshow(random_image_raw)\nprint(f'label={raw_data.values[random_image_id,0]}')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x, y = data_prep(raw_data)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"raw = raw_data\nout_y = keras.utils.to_categorical(raw.label, num_classes)\npd.DataFrame(out_y).head(10)\n\n# raw.shape\n# num_images = raw.shape[0]\n# x_as_array = raw.values[:,1:]\n# pd.DataFrame(x_as_array).sample(5)\n\n\n# x_shaped_array = x_as_array.reshape(num_images, img_rows, img_cols, 1)\n# x_shaped_array\n# out_x = x_shaped_array / 255\n# out_x[40999][14][14][0]\n\n# x = out_x\n# y = out_y","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = Sequential()\n\n# model.add(Dense(1, input_shape=(img_rows, img_cols, 1))) # first layer\n\nmodel.add(Conv2D(20, kernel_size=(3, 3),\n                 activation='relu',\n                 input_shape=(img_rows, img_cols, 1))) # first layer\n\nmodel.add(Conv2D(50, kernel_size=(4, 4), activation='relu'))\nmodel.add(Flatten())\nmodel.add(Dense(128, activation='relu'))\n\n\nmodel.add(Dense(num_classes, activation='softmax')) # last layer\n\n\nmodel.compile(loss=keras.losses.categorical_crossentropy,\n              optimizer='adam',\n              metrics=['accuracy'])\nmodel.summary()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit(x, y,\n          batch_size=128,\n          epochs=3,\n          validation_split = 0.2)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n"}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.6.5"}},"nbformat":4,"nbformat_minor":1}