{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"\nimport pandas as pd \nimport numpy as np\nimport pandas as pd\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom sklearn.model_selection import train_test_split\nfrom tensorflow.python.keras.layers.kernelized import RandomFourierFeatures \nimport matplotlib.pyplot as plt\nimport matplotlib as mpl","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"train = pd.read_csv('/kaggle/input/digit-recognizer/train.csv')\ntest = pd.read_csv('/kaggle/input/digit-recognizer/test.csv')\nsubmission = pd.read_csv('/kaggle/input/digit-recognizer/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train.head(2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_train = train.label\ntrain.drop(columns=[\"label\"], inplace=True)\ny_train","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x_train = train.values /255\nx_test = test.values /255\nx_train = x_train.reshape(-1,28,28,1)\nx_test = x_test.reshape(-1,28,28,1)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"take time"},{"metadata":{"trusted":true},"cell_type":"code","source":"for index in range(15):\n    image = x_train[index]\n    label = y_train[index]\n    plt.subplot(1, 15, index + 1)\n    plt.imshow(image.reshape(28,28), cmap=\"binary\")\n    plt.axis(\"off\")\n    plt.title(str(label))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x_train = x_train.reshape(-1, 784).astype('float32') / 255\nx_test = x_test.reshape(-1, 784).astype('float32') / 255\n\nx_train,x_valid = train_test_split(x_train, test_size=0.3)\ny_train,y_valid = train_test_split(y_train, test_size=0.3)\nyvalid =y_valid \ny_valid.shape,x_valid.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_train = keras.utils.to_categorical(y_train)\ny_valid = keras.utils.to_categorical(y_valid)\ny_train.shape,y_valid.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"keras.backend.clear_session()\nmodel = keras.Sequential()\nmodel.add(keras.layers.Input(shape=(784,)))\nfrr = RandomFourierFeatures(output_dim=4096,scale=10.,kernel_initializer='gaussian')\nmodel.add(frr)\nmodel.add(keras.layers.Dense(256, activation=\"relu\"))\nmodel.add(keras.layers.Dropout(0.2))\nmodel.add(keras.layers.Dense(units=10))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(loss=keras.losses.hinge, optimizer=keras.optimizers.RMSprop(lr=1e-4), metrics=[keras.metrics.CategoricalAccuracy(name='acc')])\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fit = model.fit(x_train, y_train, epochs=5, validation_split=0.2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"rff_loss = fit.history[\"loss\"]\nrff_val_loss = fit.history[\"val_loss\"]\nplt.plot(np.arange(len(rff_loss)) + 0.5, rff_loss, \"b.-\", label=\"Training loss\")\nplt.plot(np.arange(len(rff_val_loss)) + 1, rff_val_loss, \"r.-\", label=\"Validation loss\")\nplt.gca().xaxis.set_major_locator(mpl.ticker.MaxNLocator(integer=True))\nplt.axis([1, 5, 0, .6])\nplt.legend(fontsize=14)\nplt.xlabel(\"Epochs\")\nplt.ylabel(\"Loss\")\nplt.grid(True)\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.evaluate(x_valid, y_valid)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p_valid = model.predict_classes(x_valid)\nnp.mean(keras.losses.mean_squared_error(yvalid, p_valid))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"predictions = model.predict_classes(x_test)\npredictions[:10]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission['Label'] = predictions\nsubmission.to_csv(\"submission_cnn.csv\" , index = False)\nsubmission.head()","execution_count":null,"outputs":[]}],"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":4,"nbformat_minor":4}