{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport os\nimport tensorflow as tf\nimport tensorflow.keras as keras\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, Dropout, Flatten\nfrom tensorflow.keras.layers import Conv2D, MaxPooling2D","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_images = []\ntrain_images = []\nimg_rows, img_cols = 137, 236\ninput_shape = (img_rows, img_cols, 1)\n\nfor dirname, _, filenames in os.walk(\"/kaggle/input\"):\n    for filename in filenames:\n        if filename.endswith(\".parquet\"):\n            path=str(os.path.join(dirname, filename))\n            df = pd.read_parquet(path, engine=\"pyarrow\")\n            for i in range(len(df)):\n                if filename.startswith(\"test\"):\n                    test_images.append(df.iloc[i,1:].to_numpy().astype(int).reshape(img_rows,img_cols))\n                elif filename.startswith(\"train\"):\n                    train_images.append(df.iloc[i,1:].to_numpy().astype(int).reshape(img_rows,img_cols))\nprint(\"done\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i in test_images:\n    plt.imshow(i)\n    plt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class_map = pd.read_csv(\"../input/bengaliai-cv19/class_map.csv\")\nsample_submission = pd.read_csv(\"../input/bengaliai-cv19/sample_submission.csv\")\ntest = pd.read_csv(\"../input/bengaliai-cv19/test.csv\")\ntrain = pd.read_csv(\"../input/bengaliai-cv19/train.csv\")\n\nx_train=np.array(train_images)\nx_test=np.array(test_images)\nx_train = x_train.reshape(len(x_train), img_rows, img_cols, 1)\nx_test  = x_test.reshape(len(x_test), img_rows, img_cols, 1)\n\n# Normalize images\nx_train = x_train.astype('float32') / 255\nx_test = x_test.astype('float32') / 255\n\ny_train_grapheme_root = (train.grapheme_root)\ny_train_vowel_diacritic = (train.vowel_diacritic)\ny_train_consonant_diacritic = (train.consonant_diacritic)\n\n#TODO: add proper values\ny_test_grapheme_root = np.zeros(len(x_test))\ny_test_vowel_diacritic = np.zeros(len(x_test))\ny_test_consonant_diacritic = np.zeros(len(x_test))\n\nnum_classes_grapheme_root=max(np.where(class_map.component_type == \"grapheme_root\", class_map.label, -1))+1\nnum_classes_vowel_diacritic=max(np.where(class_map.component_type == \"vowel_diacritic\", class_map.label, -1))+1\nnum_classes_consonant_diacritic=max(np.where(class_map.component_type == \"consonant_diacritic\", class_map.label, -1))+1\n\ny_train_grapheme_root_mat = keras.utils.to_categorical(y_train_grapheme_root, num_classes_grapheme_root)\ny_train_vowel_diacritic_mat = keras.utils.to_categorical(y_train_consonant_diacritic, num_classes_vowel_diacritic)\ny_train_consonant_diacritic_mat = keras.utils.to_categorical(y_train_consonant_diacritic, num_classes_consonant_diacritic)\n\ny_test_grapheme_root_mat = keras.utils.to_categorical(y_test_grapheme_root, num_classes_grapheme_root)\ny_test_vowel_diacritic_mat = keras.utils.to_categorical(y_test_consonant_diacritic, num_classes_vowel_diacritic)\ny_test_consonant_diacritic_mat = keras.utils.to_categorical(y_test_consonant_diacritic, num_classes_consonant_diacritic)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\n\nmodel = Sequential()\nmodel.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=input_shape))\nmodel.add(Conv2D(64, (3,3), activation='relu'))\nmodel.add(MaxPooling2D(pool_size=(2, 2)))\nmodel.add(Dropout(0.25))\nmodel.add(Flatten())\nmodel.add(Dense(128, activation='relu'))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(num_classes_grapheme_root, activation='softmax'))\n\nmodel.compile(loss=keras.losses.categorical_crossentropy,\n              optimizer=keras.optimizers.Adam(),\n              metrics=['accuracy'])\n\nbatch_size = 128\nepochs = 10\n\n# How well does this model perform on the test set?\nscore = model.evaluate(x_test, y_test_grapheme_root_mat, verbose=0)\nprint('Test loss:', score[0])\nprint('Test accuracy:', score[1])\n\n","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}