{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"scrolled":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true,"scrolled":true},"cell_type":"code","source":"# Import TensorFlow and tf.keras\nimport tensorflow as tf\nfrom tensorflow import keras\n\n# Print TensorFlow version\nprint(tf.__version__)\n\ntrain = pd.read_csv(\"../input/train.csv\")\nprint(\"train dataset shape is \", train.shape)\ntrain.head()\n\nx_train = (train.iloc[:,1:].values).astype('float32')\ny_train = (train.iloc[:,0].values).astype('int32') \n\ntest = pd.read_csv(\"../input/test.csv\")\nx_test = test.values.astype('float32')\n\nnum_classes = 10\n\n# Normalize the input data\nx_train = x_train.astype('float32') / 255\nx_test = x_test.astype('float32') / 255\n\n# Reshape input data from (28, 28) to (28, 28, 1)\nw, h = 28, 28\nx_train = x_train.reshape(x_train.shape[0], w, h, 1)\nx_test = x_test.reshape(x_test.shape[0], w, h, 1)\n\n# One-hot encode the labels\ny_train = keras.utils.to_categorical(y_train, num_classes)\n\nmodel = keras.Sequential()\n\n# Must define the input shape in the first layer of the neural network\nmodel.add(keras.layers.Conv2D(filters=32, kernel_size=3, padding='same', activation='relu', input_shape=(28,28,1))) \nmodel.add(keras.layers.BatchNormalization())\nmodel.add(keras.layers.MaxPooling2D(pool_size=2))\nmodel.add(keras.layers.Dropout(0.3))\n\nmodel.add(keras.layers.Conv2D(filters=64, kernel_size=3, padding='same', activation='relu'))\nmodel.add(keras.layers.BatchNormalization())\nmodel.add(keras.layers.MaxPooling2D(pool_size=2))\nmodel.add(keras.layers.Dropout(0.3))\n\nmodel.add(keras.layers.Flatten())\nmodel.add(keras.layers.Dense(128, activation='relu'))\nmodel.add(keras.layers.Dropout(0.5))\nmodel.add(keras.layers.Dense(10, activation='softmax'))\n\nmodel.compile(loss=keras.losses.categorical_crossentropy,\n             optimizer=keras.optimizers.Adam(),\n             metrics=['accuracy'])\n\n\nmodel.fit(x_train,\n         y_train,\n         batch_size=64,\n         epochs=5)\n\npredictions = model.predict_classes(x_test, verbose=0)\n\nsubmissions=pd.DataFrame({\"ImageId\": list(range(1,len(predictions)+1)),\n                         \"Label\": predictions})\nsubmissions.to_csv(\"mnist_tfkeras.csv\", index=False, header=True)\n\n\nprint(os.listdir(\"..\"))","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}