add kaggle_MNIST
This commit is contained in:
parent
48a236f1c7
commit
1b3e4f05b9
|
|
@ -0,0 +1,562 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 14,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import numpy as np\n",
|
||||||
|
"import pandas as pd\n",
|
||||||
|
"import os\n",
|
||||||
|
"from keras.utils.np_utils import to_categorical # convert to one-hot-encoding"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 15,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"train = pd.read_csv(os.path.join('data', 'train.csv'))\n",
|
||||||
|
"test = pd.read_csv(os.path.join('data', 'test.csv'))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 16,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div>\n",
|
||||||
|
"<style scoped>\n",
|
||||||
|
" .dataframe tbody tr th:only-of-type {\n",
|
||||||
|
" vertical-align: middle;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe tbody tr th {\n",
|
||||||
|
" vertical-align: top;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe thead th {\n",
|
||||||
|
" text-align: right;\n",
|
||||||
|
" }\n",
|
||||||
|
"</style>\n",
|
||||||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
||||||
|
" <thead>\n",
|
||||||
|
" <tr style=\"text-align: right;\">\n",
|
||||||
|
" <th></th>\n",
|
||||||
|
" <th>label</th>\n",
|
||||||
|
" <th>pixel0</th>\n",
|
||||||
|
" <th>pixel1</th>\n",
|
||||||
|
" <th>pixel2</th>\n",
|
||||||
|
" <th>pixel3</th>\n",
|
||||||
|
" <th>pixel4</th>\n",
|
||||||
|
" <th>pixel5</th>\n",
|
||||||
|
" <th>pixel6</th>\n",
|
||||||
|
" <th>pixel7</th>\n",
|
||||||
|
" <th>pixel8</th>\n",
|
||||||
|
" <th>...</th>\n",
|
||||||
|
" <th>pixel774</th>\n",
|
||||||
|
" <th>pixel775</th>\n",
|
||||||
|
" <th>pixel776</th>\n",
|
||||||
|
" <th>pixel777</th>\n",
|
||||||
|
" <th>pixel778</th>\n",
|
||||||
|
" <th>pixel779</th>\n",
|
||||||
|
" <th>pixel780</th>\n",
|
||||||
|
" <th>pixel781</th>\n",
|
||||||
|
" <th>pixel782</th>\n",
|
||||||
|
" <th>pixel783</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>2</td>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>3</td>\n",
|
||||||
|
" <td>4</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>4</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"<p>5 rows × 785 columns</p>\n",
|
||||||
|
"</div>"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
" label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 \\\n",
|
||||||
|
"0 1 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"2 1 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"3 4 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel8 ... pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 \\\n",
|
||||||
|
"0 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"2 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"3 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel780 pixel781 pixel782 pixel783 \n",
|
||||||
|
"0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 \n",
|
||||||
|
"2 0 0 0 0 \n",
|
||||||
|
"3 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
"[5 rows x 785 columns]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 16,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"train.head()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 17,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div>\n",
|
||||||
|
"<style scoped>\n",
|
||||||
|
" .dataframe tbody tr th:only-of-type {\n",
|
||||||
|
" vertical-align: middle;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe tbody tr th {\n",
|
||||||
|
" vertical-align: top;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe thead th {\n",
|
||||||
|
" text-align: right;\n",
|
||||||
|
" }\n",
|
||||||
|
"</style>\n",
|
||||||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
||||||
|
" <thead>\n",
|
||||||
|
" <tr style=\"text-align: right;\">\n",
|
||||||
|
" <th></th>\n",
|
||||||
|
" <th>pixel0</th>\n",
|
||||||
|
" <th>pixel1</th>\n",
|
||||||
|
" <th>pixel2</th>\n",
|
||||||
|
" <th>pixel3</th>\n",
|
||||||
|
" <th>pixel4</th>\n",
|
||||||
|
" <th>pixel5</th>\n",
|
||||||
|
" <th>pixel6</th>\n",
|
||||||
|
" <th>pixel7</th>\n",
|
||||||
|
" <th>pixel8</th>\n",
|
||||||
|
" <th>pixel9</th>\n",
|
||||||
|
" <th>...</th>\n",
|
||||||
|
" <th>pixel774</th>\n",
|
||||||
|
" <th>pixel775</th>\n",
|
||||||
|
" <th>pixel776</th>\n",
|
||||||
|
" <th>pixel777</th>\n",
|
||||||
|
" <th>pixel778</th>\n",
|
||||||
|
" <th>pixel779</th>\n",
|
||||||
|
" <th>pixel780</th>\n",
|
||||||
|
" <th>pixel781</th>\n",
|
||||||
|
" <th>pixel782</th>\n",
|
||||||
|
" <th>pixel783</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>2</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>3</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>4</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"<p>5 rows × 784 columns</p>\n",
|
||||||
|
"</div>"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
" pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 pixel8 \\\n",
|
||||||
|
"0 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"2 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"3 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel9 ... pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 \\\n",
|
||||||
|
"0 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"2 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"3 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel780 pixel781 pixel782 pixel783 \n",
|
||||||
|
"0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 \n",
|
||||||
|
"2 0 0 0 0 \n",
|
||||||
|
"3 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
"[5 rows x 784 columns]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 17,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"test.head()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 18,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"X_train = train.drop('label', axis=1)\n",
|
||||||
|
"y = train['label']\n",
|
||||||
|
"X_test = test"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 19,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(42000, 784)\n",
|
||||||
|
"(42000,)\n",
|
||||||
|
"(28000, 784)\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(X_train.shape)\n",
|
||||||
|
"print(y.shape)\n",
|
||||||
|
"print(X_test.shape)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 20,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Feature normalization (max greyscale value is 255)\n",
|
||||||
|
"\n",
|
||||||
|
"X_train = X_train / 255.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 21,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Reshape our input matrices to match shape of image (28x28) \n",
|
||||||
|
"# with only one filter (would be 3 for RBG)\n",
|
||||||
|
"# and one hot encode our labels vector\n",
|
||||||
|
"\n",
|
||||||
|
"X_train = X_train.values.reshape(-1, 28, 28, 1)\n",
|
||||||
|
"X_test = X_test.values.reshape(-1, 28, 28, 1)\n",
|
||||||
|
"y = to_categorical(y, num_classes=10)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 22,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(42000, 28, 28, 1)\n",
|
||||||
|
"(42000, 10)\n",
|
||||||
|
"(28000, 28, 28, 1)\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(X_train.shape)\n",
|
||||||
|
"print(y.shape)\n",
|
||||||
|
"print(X_test.shape)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 26,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"np.save(\"data\\X_train.csv\", X_train)\n",
|
||||||
|
"np.save('data\\y.csv', y)\n",
|
||||||
|
"np.save('data\\X_test', X_test)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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.7.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,253 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Using TensorFlow backend.\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import numpy as np\n",
|
||||||
|
"import pandas as pd\n",
|
||||||
|
"import os\n",
|
||||||
|
"import tensorflow as tf\n",
|
||||||
|
"import keras\n",
|
||||||
|
"from keras.preprocessing.image import ImageDataGenerator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"X_train = np.load('data\\X_train.npy')\n",
|
||||||
|
"y = np.load('data\\y.npy')\n",
|
||||||
|
"X_test = np.load('data\\X_test.npy')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(42000, 28, 28, 1)\n",
|
||||||
|
"(42000, 10)\n",
|
||||||
|
"(28000, 28, 28, 1)\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(X_train.shape)\n",
|
||||||
|
"print(y.shape)\n",
|
||||||
|
"print(X_test.shape)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Construct data generator which applies random transformations to the images to make our data more robust\n",
|
||||||
|
"\n",
|
||||||
|
"datagen = ImageDataGenerator(\n",
|
||||||
|
" rotation_range=10, # randomly rotate images in the range (degrees, 0 to 180)\n",
|
||||||
|
" zoom_range = 0.1, # Randomly zoom image \n",
|
||||||
|
" width_shift_range=0.1, # randomly shift images horizontally (fraction of total width)\n",
|
||||||
|
" height_shift_range=0.1,) # randomly shift images vertically (fraction of total height)\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"datagen.fit(X_train)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def get_LeNet_model(batch_size = 86, epochs=10):\n",
|
||||||
|
" model = tf.keras.models.Sequential([\n",
|
||||||
|
" # Convolutional layers\n",
|
||||||
|
" tf.keras.layers.Conv2D(6, (5,5), activation='relu', input_shape=(28,28,1), padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Conv2D(16, (5,5), activation='relu', padding='valid', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Conv2D(120, (5,5), activation='relu', padding='valid', strides=(1,1)),\n",
|
||||||
|
" \n",
|
||||||
|
" # Flatten out\n",
|
||||||
|
" tf.keras.layers.Flatten(),\n",
|
||||||
|
" \n",
|
||||||
|
" # Dense layers\n",
|
||||||
|
" tf.keras.layers.Dense(84, activation='relu'),\n",
|
||||||
|
" \n",
|
||||||
|
" # Output layer\n",
|
||||||
|
" tf.keras.layers.Dense(10, activation='softmax')\n",
|
||||||
|
" \n",
|
||||||
|
" ])\n",
|
||||||
|
" \n",
|
||||||
|
" # Compile\n",
|
||||||
|
" model.compile(loss=keras.losses.categorical_crossentropy, optimizer='SGD', metrics=['accuracy'])\n",
|
||||||
|
" \n",
|
||||||
|
" # Fit the model\n",
|
||||||
|
" history = model.fit_generator(datagen.flow(X_train,y, batch_size=batch_size),\n",
|
||||||
|
" epochs = epochs, \n",
|
||||||
|
" verbose = 2, \n",
|
||||||
|
" steps_per_epoch=X_train.shape[0] // batch_size)\n",
|
||||||
|
"\n",
|
||||||
|
" return model"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"if os.path.isfile('models/LeNet.h5'):\n",
|
||||||
|
" LeNet_model = tf.keras.models.load_model('models/LeNet.h5')\n",
|
||||||
|
"else:\n",
|
||||||
|
" LeNet_model = get_LeNet_model()\n",
|
||||||
|
" tf.keras.models.save_model('models/LeNet.h5')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 8,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def get_Dropout_model(batch_size = 86, epochs=30):\n",
|
||||||
|
" model = tf.keras.models.Sequential([\n",
|
||||||
|
" # Convolutional layers\n",
|
||||||
|
" tf.keras.layers.Conv2D(32, (5,5), activation='relu', input_shape=(28,28,1), padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.Conv2D(32, (5,5), activation='relu', padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Dropout(0.25),\n",
|
||||||
|
" \n",
|
||||||
|
" tf.keras.layers.Conv2D(64, (5,5), activation='relu', padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.Conv2D(64, (5,5), activation='relu', padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Dropout(0.25),\n",
|
||||||
|
" \n",
|
||||||
|
" # Flatten out\n",
|
||||||
|
" tf.keras.layers.Flatten(),\n",
|
||||||
|
" \n",
|
||||||
|
" # Dense layers\n",
|
||||||
|
" tf.keras.layers.Dense(256, activation='relu'),\n",
|
||||||
|
" tf.keras.layers.Dropout(0.5),\n",
|
||||||
|
" \n",
|
||||||
|
" # Output layer\n",
|
||||||
|
" tf.keras.layers.Dense(10, activation='softmax')\n",
|
||||||
|
" \n",
|
||||||
|
" ])\n",
|
||||||
|
" \n",
|
||||||
|
" # Compile\n",
|
||||||
|
" model.compile(loss=keras.losses.categorical_crossentropy, optimizer='SGD', metrics=['accuracy'])\n",
|
||||||
|
" \n",
|
||||||
|
" # Fit the model\n",
|
||||||
|
" history = model.fit_generator(datagen.flow(X_train,y, batch_size=batch_size),\n",
|
||||||
|
" epochs = epochs, \n",
|
||||||
|
" verbose = 2, \n",
|
||||||
|
" steps_per_epoch=X_train.shape[0] // batch_size)\n",
|
||||||
|
"\n",
|
||||||
|
" return model"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 9,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"if os.path.isfile('models/Dropout.h5'):\n",
|
||||||
|
" Dropout_model = tf.keras.models.load_model('models/Dropout.h5')\n",
|
||||||
|
"else:\n",
|
||||||
|
" Dropout_model = get_Dropout_model()\n",
|
||||||
|
" tf.keras.models.save_model(Dropout_model, 'models/Dropout.h5')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"submissions = []\n",
|
||||||
|
"\n",
|
||||||
|
"for model in [LeNet_model, Dropout_model]:\n",
|
||||||
|
" # predict results\n",
|
||||||
|
" results = model.predict(X_test)\n",
|
||||||
|
"\n",
|
||||||
|
" # select the indix with the maximum probability\n",
|
||||||
|
" results = np.argmax(results,axis = 1)\n",
|
||||||
|
"\n",
|
||||||
|
" results = pd.Series(results,name=\"Label\")\n",
|
||||||
|
" \n",
|
||||||
|
" submission = pd.concat([pd.Series(range(1,28001),name = \"ImageId\"),results],axis = 1)\n",
|
||||||
|
" \n",
|
||||||
|
" submissions.append(submission)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"submissions[0].to_csv(\"submissions/LeNet.csv\",index=False)\n",
|
||||||
|
"submissions[1].to_csv(\"submissions/Dropout.csv\",index=False)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 13,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# 0.98685 test accuracy with LeNet style model\n",
|
||||||
|
"# 0.99400 test accuracy with dropout model"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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.7.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,563 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 29,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import numpy as np\n",
|
||||||
|
"import pandas as pd\n",
|
||||||
|
"import os\n",
|
||||||
|
"from keras.utils.np_utils import to_categorical # convert to one-hot-encoding"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 30,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"train = pd.read_csv(os.path.join('data', 'train.csv'))\n",
|
||||||
|
"test = pd.read_csv(os.path.join('data', 'test.csv'))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 31,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div>\n",
|
||||||
|
"<style scoped>\n",
|
||||||
|
" .dataframe tbody tr th:only-of-type {\n",
|
||||||
|
" vertical-align: middle;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe tbody tr th {\n",
|
||||||
|
" vertical-align: top;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe thead th {\n",
|
||||||
|
" text-align: right;\n",
|
||||||
|
" }\n",
|
||||||
|
"</style>\n",
|
||||||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
||||||
|
" <thead>\n",
|
||||||
|
" <tr style=\"text-align: right;\">\n",
|
||||||
|
" <th></th>\n",
|
||||||
|
" <th>label</th>\n",
|
||||||
|
" <th>pixel0</th>\n",
|
||||||
|
" <th>pixel1</th>\n",
|
||||||
|
" <th>pixel2</th>\n",
|
||||||
|
" <th>pixel3</th>\n",
|
||||||
|
" <th>pixel4</th>\n",
|
||||||
|
" <th>pixel5</th>\n",
|
||||||
|
" <th>pixel6</th>\n",
|
||||||
|
" <th>pixel7</th>\n",
|
||||||
|
" <th>pixel8</th>\n",
|
||||||
|
" <th>...</th>\n",
|
||||||
|
" <th>pixel774</th>\n",
|
||||||
|
" <th>pixel775</th>\n",
|
||||||
|
" <th>pixel776</th>\n",
|
||||||
|
" <th>pixel777</th>\n",
|
||||||
|
" <th>pixel778</th>\n",
|
||||||
|
" <th>pixel779</th>\n",
|
||||||
|
" <th>pixel780</th>\n",
|
||||||
|
" <th>pixel781</th>\n",
|
||||||
|
" <th>pixel782</th>\n",
|
||||||
|
" <th>pixel783</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>2</td>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>3</td>\n",
|
||||||
|
" <td>4</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>4</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"<p>5 rows × 785 columns</p>\n",
|
||||||
|
"</div>"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
" label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 \\\n",
|
||||||
|
"0 1 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"2 1 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"3 4 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel8 ... pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 \\\n",
|
||||||
|
"0 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"2 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"3 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel780 pixel781 pixel782 pixel783 \n",
|
||||||
|
"0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 \n",
|
||||||
|
"2 0 0 0 0 \n",
|
||||||
|
"3 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
"[5 rows x 785 columns]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 31,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"train.head()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 32,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/html": [
|
||||||
|
"<div>\n",
|
||||||
|
"<style scoped>\n",
|
||||||
|
" .dataframe tbody tr th:only-of-type {\n",
|
||||||
|
" vertical-align: middle;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe tbody tr th {\n",
|
||||||
|
" vertical-align: top;\n",
|
||||||
|
" }\n",
|
||||||
|
"\n",
|
||||||
|
" .dataframe thead th {\n",
|
||||||
|
" text-align: right;\n",
|
||||||
|
" }\n",
|
||||||
|
"</style>\n",
|
||||||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
||||||
|
" <thead>\n",
|
||||||
|
" <tr style=\"text-align: right;\">\n",
|
||||||
|
" <th></th>\n",
|
||||||
|
" <th>pixel0</th>\n",
|
||||||
|
" <th>pixel1</th>\n",
|
||||||
|
" <th>pixel2</th>\n",
|
||||||
|
" <th>pixel3</th>\n",
|
||||||
|
" <th>pixel4</th>\n",
|
||||||
|
" <th>pixel5</th>\n",
|
||||||
|
" <th>pixel6</th>\n",
|
||||||
|
" <th>pixel7</th>\n",
|
||||||
|
" <th>pixel8</th>\n",
|
||||||
|
" <th>pixel9</th>\n",
|
||||||
|
" <th>...</th>\n",
|
||||||
|
" <th>pixel774</th>\n",
|
||||||
|
" <th>pixel775</th>\n",
|
||||||
|
" <th>pixel776</th>\n",
|
||||||
|
" <th>pixel777</th>\n",
|
||||||
|
" <th>pixel778</th>\n",
|
||||||
|
" <th>pixel779</th>\n",
|
||||||
|
" <th>pixel780</th>\n",
|
||||||
|
" <th>pixel781</th>\n",
|
||||||
|
" <th>pixel782</th>\n",
|
||||||
|
" <th>pixel783</th>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </thead>\n",
|
||||||
|
" <tbody>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>1</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>2</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>3</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" <tr>\n",
|
||||||
|
" <td>4</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>...</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" <td>0</td>\n",
|
||||||
|
" </tr>\n",
|
||||||
|
" </tbody>\n",
|
||||||
|
"</table>\n",
|
||||||
|
"<p>5 rows × 784 columns</p>\n",
|
||||||
|
"</div>"
|
||||||
|
],
|
||||||
|
"text/plain": [
|
||||||
|
" pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 pixel8 \\\n",
|
||||||
|
"0 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"2 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"3 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel9 ... pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 \\\n",
|
||||||
|
"0 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"1 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"2 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"3 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"4 0 ... 0 0 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
" pixel780 pixel781 pixel782 pixel783 \n",
|
||||||
|
"0 0 0 0 0 \n",
|
||||||
|
"1 0 0 0 0 \n",
|
||||||
|
"2 0 0 0 0 \n",
|
||||||
|
"3 0 0 0 0 \n",
|
||||||
|
"4 0 0 0 0 \n",
|
||||||
|
"\n",
|
||||||
|
"[5 rows x 784 columns]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 32,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"test.head()"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 33,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"X_train = train.drop('label', axis=1)\n",
|
||||||
|
"y = train['label']\n",
|
||||||
|
"X_test = test"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 34,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(42000, 784)\n",
|
||||||
|
"(42000,)\n",
|
||||||
|
"(28000, 784)\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(X_train.shape)\n",
|
||||||
|
"print(y.shape)\n",
|
||||||
|
"print(X_test.shape)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 35,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Feature normalization (max greyscale value is 255)\n",
|
||||||
|
"\n",
|
||||||
|
"X_train = X_train / 255.0\n",
|
||||||
|
"X_test = X_test / 255.0"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 36,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Reshape our input matrices to match shape of image (28x28) \n",
|
||||||
|
"# with only one filter (would be 3 for RBG)\n",
|
||||||
|
"# and one hot encode our labels vector\n",
|
||||||
|
"\n",
|
||||||
|
"X_train = X_train.values.reshape(-1, 28, 28, 1)\n",
|
||||||
|
"X_test = X_test.values.reshape(-1, 28, 28, 1)\n",
|
||||||
|
"y = to_categorical(y, num_classes=10)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 37,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(42000, 28, 28, 1)\n",
|
||||||
|
"(42000, 10)\n",
|
||||||
|
"(28000, 28, 28, 1)\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(X_train.shape)\n",
|
||||||
|
"print(y.shape)\n",
|
||||||
|
"print(X_test.shape)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 38,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"np.save(\"data\\X_train\", X_train)\n",
|
||||||
|
"np.save('data\\y', y)\n",
|
||||||
|
"np.save('data\\X_test', X_test)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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.7.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,253 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stderr",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"Using TensorFlow backend.\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"import numpy as np\n",
|
||||||
|
"import pandas as pd\n",
|
||||||
|
"import os\n",
|
||||||
|
"import tensorflow as tf\n",
|
||||||
|
"import keras\n",
|
||||||
|
"from keras.preprocessing.image import ImageDataGenerator"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"X_train = np.load('data\\X_train.npy')\n",
|
||||||
|
"y = np.load('data\\y.npy')\n",
|
||||||
|
"X_test = np.load('data\\X_test.npy')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 3,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"name": "stdout",
|
||||||
|
"output_type": "stream",
|
||||||
|
"text": [
|
||||||
|
"(42000, 28, 28, 1)\n",
|
||||||
|
"(42000, 10)\n",
|
||||||
|
"(28000, 28, 28, 1)\n"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"print(X_train.shape)\n",
|
||||||
|
"print(y.shape)\n",
|
||||||
|
"print(X_test.shape)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 4,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# Construct data generator which applies random transformations to the images to make our data more robust\n",
|
||||||
|
"\n",
|
||||||
|
"datagen = ImageDataGenerator(\n",
|
||||||
|
" rotation_range=10, # randomly rotate images in the range (degrees, 0 to 180)\n",
|
||||||
|
" zoom_range = 0.1, # Randomly zoom image \n",
|
||||||
|
" width_shift_range=0.1, # randomly shift images horizontally (fraction of total width)\n",
|
||||||
|
" height_shift_range=0.1,) # randomly shift images vertically (fraction of total height)\n",
|
||||||
|
"\n",
|
||||||
|
"\n",
|
||||||
|
"datagen.fit(X_train)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 5,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def get_LeNet_model(batch_size = 86, epochs=10):\n",
|
||||||
|
" model = tf.keras.models.Sequential([\n",
|
||||||
|
" # Convolutional layers\n",
|
||||||
|
" tf.keras.layers.Conv2D(6, (5,5), activation='relu', input_shape=(28,28,1), padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Conv2D(16, (5,5), activation='relu', padding='valid', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Conv2D(120, (5,5), activation='relu', padding='valid', strides=(1,1)),\n",
|
||||||
|
" \n",
|
||||||
|
" # Flatten out\n",
|
||||||
|
" tf.keras.layers.Flatten(),\n",
|
||||||
|
" \n",
|
||||||
|
" # Dense layers\n",
|
||||||
|
" tf.keras.layers.Dense(84, activation='relu'),\n",
|
||||||
|
" \n",
|
||||||
|
" # Output layer\n",
|
||||||
|
" tf.keras.layers.Dense(10, activation='softmax')\n",
|
||||||
|
" \n",
|
||||||
|
" ])\n",
|
||||||
|
" \n",
|
||||||
|
" # Compile\n",
|
||||||
|
" model.compile(loss=keras.losses.categorical_crossentropy, optimizer='SGD', metrics=['accuracy'])\n",
|
||||||
|
" \n",
|
||||||
|
" # Fit the model\n",
|
||||||
|
" history = model.fit_generator(datagen.flow(X_train,y, batch_size=batch_size),\n",
|
||||||
|
" epochs = epochs, \n",
|
||||||
|
" verbose = 2, \n",
|
||||||
|
" steps_per_epoch=X_train.shape[0] // batch_size)\n",
|
||||||
|
"\n",
|
||||||
|
" return model"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 7,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"if os.path.isfile('models/LeNet.h5'):\n",
|
||||||
|
" LeNet_model = tf.keras.models.load_model('models/LeNet.h5')\n",
|
||||||
|
"else:\n",
|
||||||
|
" LeNet_model = get_LeNet_model()\n",
|
||||||
|
" tf.keras.models.save_model('models/LeNet.h5')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 8,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"def get_Dropout_model(batch_size = 86, epochs=30):\n",
|
||||||
|
" model = tf.keras.models.Sequential([\n",
|
||||||
|
" # Convolutional layers\n",
|
||||||
|
" tf.keras.layers.Conv2D(32, (5,5), activation='relu', input_shape=(28,28,1), padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.Conv2D(32, (5,5), activation='relu', padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Dropout(0.25),\n",
|
||||||
|
" \n",
|
||||||
|
" tf.keras.layers.Conv2D(64, (5,5), activation='relu', padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.Conv2D(64, (5,5), activation='relu', padding='same', strides=(1,1)),\n",
|
||||||
|
" tf.keras.layers.MaxPooling2D(2,2),\n",
|
||||||
|
" tf.keras.layers.Dropout(0.25),\n",
|
||||||
|
" \n",
|
||||||
|
" # Flatten out\n",
|
||||||
|
" tf.keras.layers.Flatten(),\n",
|
||||||
|
" \n",
|
||||||
|
" # Dense layers\n",
|
||||||
|
" tf.keras.layers.Dense(256, activation='relu'),\n",
|
||||||
|
" tf.keras.layers.Dropout(0.5),\n",
|
||||||
|
" \n",
|
||||||
|
" # Output layer\n",
|
||||||
|
" tf.keras.layers.Dense(10, activation='softmax')\n",
|
||||||
|
" \n",
|
||||||
|
" ])\n",
|
||||||
|
" \n",
|
||||||
|
" # Compile\n",
|
||||||
|
" model.compile(loss=keras.losses.categorical_crossentropy, optimizer='SGD', metrics=['accuracy'])\n",
|
||||||
|
" \n",
|
||||||
|
" # Fit the model\n",
|
||||||
|
" history = model.fit_generator(datagen.flow(X_train,y, batch_size=batch_size),\n",
|
||||||
|
" epochs = epochs, \n",
|
||||||
|
" verbose = 2, \n",
|
||||||
|
" steps_per_epoch=X_train.shape[0] // batch_size)\n",
|
||||||
|
"\n",
|
||||||
|
" return model"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 9,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"if os.path.isfile('models/Dropout.h5'):\n",
|
||||||
|
" Dropout_model = tf.keras.models.load_model('models/Dropout.h5')\n",
|
||||||
|
"else:\n",
|
||||||
|
" Dropout_model = get_Dropout_model()\n",
|
||||||
|
" tf.keras.models.save_model(Dropout_model, 'models/Dropout.h5')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 10,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"submissions = []\n",
|
||||||
|
"\n",
|
||||||
|
"for model in [LeNet_model, Dropout_model]:\n",
|
||||||
|
" # predict results\n",
|
||||||
|
" results = model.predict(X_test)\n",
|
||||||
|
"\n",
|
||||||
|
" # select the indix with the maximum probability\n",
|
||||||
|
" results = np.argmax(results,axis = 1)\n",
|
||||||
|
"\n",
|
||||||
|
" results = pd.Series(results,name=\"Label\")\n",
|
||||||
|
" \n",
|
||||||
|
" submission = pd.concat([pd.Series(range(1,28001),name = \"ImageId\"),results],axis = 1)\n",
|
||||||
|
" \n",
|
||||||
|
" submissions.append(submission)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 11,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"submissions[0].to_csv(\"submissions/LeNet.csv\",index=False)\n",
|
||||||
|
"submissions[1].to_csv(\"submissions/Dropout.csv\",index=False)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 13,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"# 0.98685 test accuracy with LeNet style model\n",
|
||||||
|
"# 0.99400 test accuracy with dropout model"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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.7.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
||||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue