{"cells":[{"metadata":{"id":"iPIB8W0jzlaR","colab_type":"text"},"cell_type":"markdown","source":""},{"metadata":{"id":"XKvDW5fpznwB","colab_type":"text"},"cell_type":"markdown","source":"Падгружаем дадзеныя"},{"metadata":{"id":"8bTeoHj5zg4d","colab_type":"code","outputId":"5d495cac-c57d-4c22-d28d-2287039f8ea8","colab":{"base_uri":"https://localhost:8080/","height":35},"trusted":true},"cell_type":"code","source":"!ls ../input/Kannada-MNIST\n","execution_count":null,"outputs":[]},{"metadata":{"id":"d55qYnmg0CDf","colab_type":"code","outputId":"cbee8175-0acf-4dea-f9bd-b2ed155802be","colab":{"base_uri":"https://localhost:8080/","height":52},"trusted":true},"cell_type":"code","source":"# %tensorflow_version 1.x\nimport tensorflow\nprint(tensorflow.__version__)\nimport tensorflow.keras as keras\nprint(keras.__version__)","execution_count":null,"outputs":[]},{"metadata":{"id":"OD7COJSw2T6f","colab_type":"text"},"cell_type":"markdown","source":"Дастаем дадзеныя для трэйна і валідацыі"},{"metadata":{"id":"EXiGKo4Y09WN","colab_type":"code","outputId":"9901faa8-2c96-4b99-daf1-136d74634322","colab":{"base_uri":"https://localhost:8080/","height":52},"trusted":true},"cell_type":"code","source":"import pandas as pd\ntrain_set = pd.read_csv(\"../input/Kannada-MNIST/train.csv\")\nprint(type(train_set))\ntrain_array = train_set.values\ny_train, x_train = train_array[:, :1], train_array[:, 1:]\n# print(y_train, y_train.shape,\"\\n\", x_train, x_train.shape)\nprint(x_train.dtype, x_train.min(), x_train.max())\n","execution_count":null,"outputs":[]},{"metadata":{"id":"mS-h_y2n2a59","colab_type":"text"},"cell_type":"markdown","source":"Дастаем дадзеныя для тэста\n"},{"metadata":{"id":"-ldoK_4_2jfl","colab_type":"code","outputId":"2a40b8c8-cec6-4b3f-98a7-5216a52aca8c","colab":{"base_uri":"https://localhost:8080/","height":35},"trusted":true},"cell_type":"code","source":"test_set = pd.read_csv(\"../input/Kannada-MNIST/test.csv\")\nprint(type(test_set))\ntest_array = test_set.values\n\ny_test, x_test = test_array[:, :1], test_array[:, 1:]","execution_count":null,"outputs":[]},{"metadata":{"id":"F5CmHeSP7ReM","colab_type":"code","outputId":"4a172427-c248-4c73-f9d3-a38b0b627699","colab":{"base_uri":"https://localhost:8080/","height":399},"trusted":true},"cell_type":"code","source":"print(x_test)\nprint(x_test.max(), x_test.min())\nprint(y_test)\nprint(y_train)","execution_count":null,"outputs":[]},{"metadata":{"id":"7OdfbRt10Yh7","colab_type":"text"},"cell_type":"markdown","source":"Намалюем некалькі аб'ектаў"},{"metadata":{"id":"oMjeN1O-4EhI","colab_type":"code","outputId":"4b648fcc-31c7-4ebc-9948-146dd5f50aaf","colab":{"base_uri":"https://localhost:8080/","height":519},"trusted":true},"cell_type":"code","source":"from skimage.io import imshow, imshow_collection\n\nimshow_collection(x_train[:12].reshape(12, 28, 28))\n","execution_count":null,"outputs":[]},{"metadata":{"id":"ciLeOZl986Qg","colab_type":"text"},"cell_type":"markdown","source":"Нармалізуем дадзеныя\n"},{"metadata":{"id":"ezw_GlV376yF","colab_type":"code","outputId":"fc15603e-8438-4621-bb8e-c4b5d626dbf1","colab":{"base_uri":"https://localhost:8080/","height":69},"trusted":true},"cell_type":"code","source":"from sklearn.preprocessing import MinMaxScaler\n\nscaler = MinMaxScaler((-1, 1), False)\nprint(scaler.fit(x_train))\n# print(scaler.data_max_)\nx_train = scaler.transform(x_train)\n# print(scaler.data_max_)\n# print(x_train)\nprint(x_train.min(), x_train.max())\n","execution_count":null,"outputs":[]},{"metadata":{"id":"6QujD5kV7As9","colab_type":"text"},"cell_type":"markdown","source":"Нармалізацыя для тэставых, але тут нейкая лухта\n"},{"metadata":{"id":"a7c7SC0C6_u_","colab_type":"code","outputId":"647a1917-4072-4ce0-9b96-cd70e7fd2a3b","colab":{"base_uri":"https://localhost:8080/","height":52},"trusted":true},"cell_type":"code","source":"print(x_test.min(), x_test.max())\nscaler = MinMaxScaler((-1, 1), False)\nscaler.fit(x_test)\nx_test = scaler.transform(x_test)\nprint(x_test.min(), x_test.max())","execution_count":null,"outputs":[]},{"metadata":{"id":"JRqwNnJBx994","colab_type":"text"},"cell_type":"markdown","source":"Б'ем дадзеныя на трэйн і валідэйшн"},{"metadata":{"id":"m0jbWWsnyhRg","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"border = 55000\nx_train, x_valid, y_train, y_valid = x_train[:border], x_train[border:], y_train[:border], y_train[border:]\n","execution_count":null,"outputs":[]},{"metadata":{"id":"J2xtL61ZydIU","colab_type":"text"},"cell_type":"markdown","source":"Вызначаем параметры мадэлі"},{"metadata":{"id":"lxDh4YvB4xbe","colab_type":"code","outputId":"121aec2e-a188-44db-d459-83e97c6b99c1","colab":{"base_uri":"https://localhost:8080/","height":453},"trusted":true},"cell_type":"code","source":"from keras.layers import *\nfrom keras.models import Model, Sequential\nfrom keras.callbacks import CSVLogger, ModelCheckpoint\n\nx = Input(shape=(784,))\ny = Dense(30, activation=None)(x)\ny = Activation('elu')(y)\ny = Dropout(rate=0.15)(y)\ny = Dense(30, activation=None)(y)\ny = Activation('elu')(y)\nprediction = Dense(10, activation='softmax')(y)\n\nmodel = Model(inputs=[x], output=[prediction])\n\nmodel.compile(optimizer ='sgd',\n              loss = 'sparse_categorical_crossentropy',\n              metrics=['accuracy'])\n\nmodel.summary()","execution_count":null,"outputs":[]},{"metadata":{"id":"SToA5R2Ex9c8","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"id":"KHNPd-bpxwnO","colab_type":"code","outputId":"d24a4728-0dd1-4f8b-aee9-6964f8949eb1","colab":{"base_uri":"https://localhost:8080/","height":745},"trusted":true},"cell_type":"code","source":"model.fit(\n    # x_train - 0.5, y_train,\n          x_train, y_train,\n          batch_size=16,\n          epochs=25,\n          verbose=1,\n          # validation_data=(x_valid - 0.5, y_valid),\n          validation_data=(x_valid, y_valid),\n          callbacks=[\n              CSVLogger('log.csv'),\n              ModelCheckpoint('model.h5', save_best_only=True),\n          ])","execution_count":null,"outputs":[]},{"metadata":{"id":"quIxxQH901v1","colab_type":"code","outputId":"2b20b209-08fa-435d-c246-80e27411a998","colab":{"base_uri":"https://localhost:8080/","height":35},"trusted":true},"cell_type":"code","source":"!ls\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(x_test)","execution_count":null,"outputs":[]},{"metadata":{"id":"6Xr2sex-1X-T","colab_type":"code","outputId":"fa8761f0-f2ee-4b27-cd07-e70f930b0743","colab":{"base_uri":"https://localhost:8080/","height":35},"trusted":true},"cell_type":"code","source":"model = keras.models.load_model('model.h5')\n\n# pred_probas = model.predict(x_test - 0.5, batch_size=16)\npred_probas = model.predict(x_test, batch_size=16)\n\nprediction = pred_probas.argmax(axis=1)\n\n# predictions = model.predict(x_test)\n# print(predictions)","execution_count":null,"outputs":[]},{"metadata":{"id":"SDO9il8j47th","colab_type":"code","colab":{},"trusted":true},"cell_type":"code","source":"submission = pd.read_csv('../input/Kannada-MNIST/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission['label'] = prediction","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.to_csv(\"submission.csv\",index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!ls","execution_count":null,"outputs":[]}],"metadata":{"colab":{"name":"Untitled0.ipynb","provenance":[]},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"TPU"},"nbformat":4,"nbformat_minor":1}