Created
November 30, 2017 12:43
-
-
Save alexcpn/0683bb940cae510cf84d5976c1652abd to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# https://elitedatascience.com/keras-tutorial-deep-learning-in-python" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 3. Import libraries and modules\n", | |
"import numpy as np\n", | |
"np.random.seed(123) # for reproducibility" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"np.random.seed(123) # for reproducibility" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"Using TensorFlow backend.\n" | |
] | |
} | |
], | |
"source": [ | |
"from keras.models import Sequential\n", | |
"from keras.layers import Dense, Dropout, Activation, Flatten\n", | |
"from keras.layers import Convolution2D, MaxPooling2D\n", | |
"from keras.utils import np_utils\n", | |
"from keras.datasets import mnist" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# 4. Load pre-shuffled MNIST data into train and test sets\n", | |
"(X_train, y_train), (X_test, y_test) = mnist.load_data()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(60000, 28, 28) (60000,) (10000, 28, 28) (10000,)\n" | |
] | |
} | |
], | |
"source": [ | |
"print(X_train.shape,y_train.shape,X_test.shape,y_test.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"7 0 4 1\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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\nRK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f4de8432dd8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"# plot 4 images as gray scale\n", | |
"plt.subplot(221)\n", | |
"print(y_train[4545],y_train[1],y_train[2],y_train[3])\n", | |
"plt.imshow(X_train[4545], cmap=plt.get_cmap('gray'))\n", | |
"plt.subplot(222)\n", | |
"plt.imshow(X_train[1], cmap=plt.get_cmap('gray'))\n", | |
"plt.subplot(223)\n", | |
"plt.imshow(X_train[2], cmap=plt.get_cmap('gray'))\n", | |
"plt.subplot(224)\n", | |
"plt.imshow(X_train[3], cmap=plt.get_cmap('gray'))\n", | |
"# show the plot\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 40, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# Reshape the Input for the backend\n", | |
"\n", | |
"X_train = X_train.reshape(X_train.shape[0], 1, 28, 28)\n", | |
"X_test = X_test.reshape(X_test.shape[0], 1, 28, 28)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 41, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAIgAAACFCAYAAACAJLCMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAABztJREFUeJzt3V+IFecZBvDncdcV/HPRbSWIESMi\nBUWhKGowF8V0cQ3I6k1ZBd2LQG4SSPAPdZsLLxQMiAUxuRGia6FaFAsGb2INLUWs1RaCVddVW4wa\ntm4XUaMXYuTNxZmMM4c975k9M2dmjj4/WPy+mTk7n/LwfTOzzrs0M4jUMqHoAUi5KSDiUkDEpYCI\nSwERlwIiLgVEXKkCQrKb5BDJmyS3ZzUoKQ82+qCMZBuA6wC6ANwFcBHAejO7mt3wpGjtKT67FMBN\nM/svAJD8I4AeADUDQlKPbctj1Mym1zsozRIzE8CdSP9usE1awzdJDkozgyRC8j0A7zX7PNIcaQLy\nLYBZkf7rwbYYMzsA4ACgJaYVpVliLgKYR3IOyQ4AvQC+yGZYUhYNzyBm9j3JDwB8CaANwEEzu5LZ\nyKQUGr7NbehkWmLK5F9mtqTeQXqSKi4FRFwKiLgUEHEpIOJSQMSlgIhLARGXAiIuBURcCoi4FBBx\nKSDiUkDEpYCISwERlwIiLgVEXAqIuBQQcSkg4mr6m3XN1t4e/yu0tbXVPLanpydsL1y4MPE5Zs+e\nHbY3btw4jtFlY82aNWH71KlTuZ5bM4i4FBBxKSDiaok36yZPnhzr79ixI2yvXLkytm/x4sWNnKLU\nLly4ELZXrFgR2/f8+fNGv63erJP06gaE5EGSIyQvR7Z1kvwzyRvBnz9p7jClKElucwcAfArg95Ft\n2wF8ZWafBMXrtgP4TfbDq+jv74/1t23b1qxTpfbw4cOwXT39d3R0hO2pU6cm/p6PHz9OP7AG1Z1B\nzOxvAO5Xbe4BcDhoHwawNuNxSUk0+qDsNTMbDtr/A/BarQNVgqq1pX6Sambm3Z2oBFVrazQg90jO\nMLNhkjMAjGQ5qDQePXoUtp88eRLbd//+i5Xy+PHjsX2dnZ1he2hoqOHzR7/v6OhobN+mTZvC9sDA\nQOLvuXPnzrCd4ra2IY3e5n4BoC9o9wE4mc1wpGyS3OYeBfB3AD8neZfkuwA+AdBF8gaAXwV9eQnV\nXWLMbH2NXW9nPJaaHjx4EOvfufOifu+ECfGMd3V1he1r1641d2B1TJkyJdZfuzbZzd6ZM2di/XPn\nzmU2pvHSk1RxKSDiUkDE1RI/za02ceLEsD137tzYvqKvO6J6e3tj/SNHjtQ8NvqIPvo/yADg7Nmz\n2Q6sQj/NlfQUEHG15H9afvbsWdgu05JSbfr0ur+vJxRdfpq0pDREM4i4FBBxKSDiaslrkDJbvnx5\n2N61a1fizx07dqwZw0lNM4i4FBBxKSDi0jVIxjZv3hy2p02bVvO406dPx/rnz59v2pjS0AwiLgVE\nXFpiUlq2bFmsv2rVqkSf2717d6z/9OnTzMaUJc0g4lJAxKWAiEvXIClt2bIl1vdubYeHh8P24OBg\n08aUJc0g4lJAxKUlZpyWLl0a63d3dyf+7IYNG8L2yEhpXmd2aQYRV5J3c2eR/AvJqySvkPww2K4y\nVK+AJDPI9wC2mNl8AMsBvE9yPl6UoZoH4KugLy+ZJC9vDwMYDtrfkRwEMBOVMlS/DA47DOCvaGKd\nsrLYunVrrO/VGmuVn9h6xnWRSvINAL8A8A8kLEOlElStLfFFKsmpAE4A+MjMHkX3WeX9zTFfqzSz\nA2a2JMlrflI+iWYQkhNRCccfzOxPwebSlqHKWl9fX9hevXp14s9VvwBV1p/YepLcxRDA5wAGzex3\nkV0qQ/UKSDKDrACwEcC/SX4dbPstKmWnjgUlqb4B8OvmDFGKlOQu5iwA1tidWxkqKYYetY+h+qXr\n6K1tdd2xanv37g3be/bsyXZgBdCjdnEpIOLSEjOGffv2xfoLFiyoeWy0JCcA7N+/P2y34m1tNc0g\n4lJAxKWAiEvXIIFFixaF7XXr1iX+3KVLl2L927dvZzamMtAMIi4FRFxaYgLt7S/+KSZNmlTgSMpF\nM4i4FBBxKSDi0jXION26dSvWP3HiRDEDyYlmEHEpIOLSEjNOhw4divXH8/tvW5FmEHEpIOJSQMSV\n9y81/D8qr0j8DMBoncPz8qqOZbaZ1f2VWLkGJDwp+c+yvIqpsfi0xIhLARFXUQE5UNB5x6KxOAq5\nBpHWoSVGXAqIuHINCMlukkMkb5LMvegdyYMkR0hejmwrpFpjq1SPzC0gJNsAfAZgNYD5ANYH1RLz\nNACguvJtUdUaW6N6pJnl8gXgTQBfRvr9APrzOn/kvG8AuBzpDwGYEbRnABjKe0zBuU8C6CrLeH78\nynOJmQkg+qbz3WBb0RJVa2ymRqpH5kUXqRFmtas1Nkuj1SPzkmdAvgUwK9J/PdhWtHtBlUbkXa3R\nqx5ZxHjGkmdALgKYR3IOyQ4AvahUSixaIdUaW6Z6ZM4XYu8AuA7gPwA+LuBC8CgqZcWfoXIN9C6A\nn6Jyt3ADwBkAnTmN5S1Ulo9LAL4Ovt4pajy1vvSoXVy6SBWXAiIuBURcCoi4FBBxKSDiUkDE9QOf\nua/SyieEfgAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f4ded874a20>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"plt.subplot(224)\n", | |
"plt.imshow(X_train[4545][0], cmap=plt.get_cmap('gray'))\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# convert data type and normalize values\n", | |
"X_train = X_train.astype('float32')\n", | |
"X_test = X_test.astype('float32')\n", | |
"X_train /= 255\n", | |
"X_test /= 255\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 43, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"7\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAD8CAYAAAC4nHJkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAADPpJREFUeJzt3W+oXPWdx/HPx/wRTPLAbLMh2KDd\nIAv1D+l6iUJk6dpNjdKQ5IkkQrwL0tsHFbYYZdUVDCgoS20JPiikGBOXaqukxSBlNxoLElyrUbLx\nT0x1y61JuOYaUo3xgdX0uw/uiVzjnTPjzDlz5ub7fsHlzpzvzPl9OcnnnjNzzszPESEA+ZzTdAMA\nmkH4gaQIP5AU4QeSIvxAUoQfSIrwA0kRfiApwg8kNbOfg9nmckKgZhHhTh7X057f9krbB22/Y/uO\nXtYFoL/c7bX9tmdI+oOkFZIOS3pZ0vqIeLPkOez5gZr1Y8+/TNI7EfHHiPiLpF9KWt3D+gD0US/h\nv0DSoUn3DxfLvsD2iO29tvf2MBaAitX+hl9EbJG0ReKwHxgkvez5j0haPOn+14tlAKaBXsL/sqSL\nbX/D9mxJ6yTtrKYtAHXr+rA/Ij6zfYuk/5Y0Q9LWiHijss4A1KrrU31dDcZrfqB2fbnIB8D0RfiB\npAg/kBThB5Ii/EBShB9IivADSRF+ICnCDyRF+IGkCD+QFOEHkiL8QFKEH0iK8ANJEX4gKcIPJEX4\ngaQIP5AU4QeSIvxAUoQfSIrwA0kRfiApwg8kRfiBpAg/kBThB5Ii/EBSXU/RLUm2RyV9JOmUpM8i\nYqiKpgDUr6fwF/4pIo5VsB4AfcRhP5BUr+EPSbtsv2J7pIqGAPRHr4f9V0fEEdt/K+kZ229FxPOT\nH1D8UeAPAzBgHBHVrMjeJOlkRPy45DHVDAagpYhwJ4/r+rDf9hzb807flvRdSa93uz4A/dXLYf9C\nSb+xfXo9j0XEf1XSFYDaVXbY39FgHPYDtav9sB/A9Eb4gaQIP5AU4QeSIvxAUoQfSIrwA0kRfiAp\nwg8kRfiBpAg/kBThB5Ii/EBShB9Iqopv701h5szWm2rGjBk9rXv16tWl9csuu6yn9Ze58MILS+sb\nNmyobexBtmrVqtL6008/3adO6sOeH0iK8ANJEX4gKcIPJEX4gaQIP5AU4QeSSvPV3eedd15p/Z57\n7imtX3PNNS1rV1xxRVc9YXC99NJLpfXly5eX1k+dOlVlO18JX90NoBThB5Ii/EBShB9IivADSRF+\nICnCDyTV9vP8trdK+p6k8Yi4tFg2X9KvJF0kaVTSDRHx5/ra7N2dd95ZWr/99tv71EkuH374Ycta\nu3Phs2fPLq3PnTu3q546cfLkydrWPSg62fNvk7TyjGV3SNodERdL2l3cBzCNtA1/RDwv6fgZi1dL\n2l7c3i5pTcV9AahZt6/5F0bEWHH7PUkLK+oHQJ/0/B1+ERFl1+zbHpE00us4AKrV7Z7/qO1FklT8\nHm/1wIjYEhFDETHU5VgAatBt+HdKGi5uD0t6qpp2APRL2/DbflzS/0j6e9uHbd8s6QFJK2y/Lemf\ni/sAppG2r/kjYn2L0ncq7mXaOnHiRGn9448/Lq0fP37myZQvevLJJ0vr8+fPb1k7ePBg6XPrVtb7\nsWPHSp970003lda3bdvWTUsduffee0vrTX5evypc4QckRfiBpAg/kBThB5Ii/EBShB9IKs0U3R98\n8EFp/dChQ6X1c85p/XdyxYoVpc996623SutZzZkzp7S+Zk19nxd79tlnS+svvPBCbWMPCvb8QFKE\nH0iK8ANJEX4gKcIPJEX4gaQIP5BUmim625k1a1ZpfcmSJS1rnMfvzrp160rrjz32WE/rL/va8FWr\nVpU+d8+ePT2N3SSm6AZQivADSRF+ICnCDyRF+IGkCD+QFOEHkkrzef52Pv3009I65/Krt2DBglrX\nX3adwHQ+j18V9vxAUoQfSIrwA0kRfiApwg8kRfiBpAg/kFTb8/y2t0r6nqTxiLi0WLZJ0vclvV88\n7K6I+G1dTWL6uuqqq1rW7rvvvlrHfuKJJ2pd/3TXyZ5/m6SVUyz/aUQsLX4IPjDNtA1/RDwv6Xgf\negHQR7285r/F9n7bW22fX1lHAPqi2/D/TNISSUsljUl6sNUDbY/Y3mt7b5djAahBV+GPiKMRcSoi\n/irp55KWlTx2S0QMRcRQt00CqF5X4be9aNLdtZJer6YdAP3Syam+xyV9W9LXbB+WdI+kb9teKikk\njUr6QY09AqhB2/BHxPopFj9cQy84C916660ta/Pmzetp3bt27Sqtv/jiiz2t/2zHFX5AUoQfSIrw\nA0kRfiApwg8kRfiBpPjqbvTkyiuvLK1fe+21tY19//33l9Y/+eST2sY+G7DnB5Ii/EBShB9IivAD\nSRF+ICnCDyRF+IGkOM+PnmzcuLG03svHdsfGxkrrBw4c6HrdYM8PpEX4gaQIP5AU4QeSIvxAUoQf\nSIrwA0lxnh+lli1rORmTJGnlyqkmcK7GjTfeWFofHx+vbewM2PMDSRF+ICnCDyRF+IGkCD+QFOEH\nkiL8QFJtz/PbXizpUUkLJYWkLRGx2fZ8Sb+SdJGkUUk3RMSf62sVTbjttttK63Pnzu163Uyx3axO\n9vyfSdoYEd+UdJWkH9r+pqQ7JO2OiIsl7S7uA5gm2oY/IsYi4tXi9keSDki6QNJqSduLh22XtKau\nJgFU7yu95rd9kaRvSfq9pIURcfp7lt7TxMsCANNEx9f2254raYekH0XECduf1yIibEeL541IGum1\nUQDV6mjPb3uWJoL/i4j4dbH4qO1FRX2RpCk/ZRERWyJiKCKGqmgYQDXaht8Tu/iHJR2IiJ9MKu2U\nNFzcHpb0VPXtAahLJ4f9yyVtkPSa7X3FsrskPSDpCds3S/qTpBvqaRF1Gh4eLq1fd911tY29Z8+e\n0jpTbNerbfgjYo8ktyh/p9p2APQLV/gBSRF+ICnCDyRF+IGkCD+QFOEHknLElFfl1jNYi0uAUZ8F\nCxaU1p977rnS+iWXXNLT+A8++GDL2t133136XM7zdyciWp2a/wL2/EBShB9IivADSRF+ICnCDyRF\n+IGkCD+QFFN0n+U2b95cWu/1PP6hQ4dK6w899FDLGufxm8WeH0iK8ANJEX4gKcIPJEX4gaQIP5AU\n4QeS4jz/WeDyyy9vWVu7dm2tY+/fv7+0/u6779Y6PrrHnh9IivADSRF+ICnCDyRF+IGkCD+QFOEH\nkmp7nt/2YkmPSlooKSRtiYjNtjdJ+r6k94uH3hURv62rUbQ2c2brf8Zzzz23j51gOunkIp/PJG2M\niFdtz5P0iu1nitpPI+LH9bUHoC5twx8RY5LGitsf2T4g6YK6GwNQr6/0mt/2RZK+Jen3xaJbbO+3\nvdX2+S2eM2J7r+29PXUKoFIdh9/2XEk7JP0oIk5I+pmkJZKWauLIYMpJ2SJiS0QMRcRQBf0CqEhH\n4bc9SxPB/0VE/FqSIuJoRJyKiL9K+rmkZfW1CaBqbcNv25IelnQgIn4yafmiSQ9bK+n16tsDUJdO\n3u1fLmmDpNds7yuW3SVpve2lmjj9NyrpB7V0iEaNjo6W1nfs2NGfRlC5Tt7t3yNpqvm+OacPTGNc\n4QckRfiBpAg/kBThB5Ii/EBShB9Iiq/uRqlHHnmktL5t27b+NILKsecHkiL8QFKEH0iK8ANJEX4g\nKcIPJEX4gaQcEf0bzH5f0p8mLfqapGN9a+CrGdTeBrUvid66VWVvF0bEgk4e2Nfwf2lwe++gfrff\noPY2qH1J9NatpnrjsB9IivADSTUd/i0Nj19mUHsb1L4keutWI701+pofQHOa3vMDaEgj4be90vZB\n2+/YvqOJHlqxPWr7Ndv7mp5irJgGbdz265OWzbf9jO23i99TTpPWUG+bbB8ptt0+29c31Nti27+z\n/abtN2z/a7G80W1X0lcj263vh/22Z0j6g6QVkg5LelnS+oh4s6+NtGB7VNJQRDR+Ttj2P0o6KenR\niLi0WPYfko5HxAPFH87zI+LfBqS3TZJONj1zczGhzKLJM0tLWiPpX9Tgtivp6wY1sN2a2PMvk/RO\nRPwxIv4i6ZeSVjfQx8CLiOclHT9j8WpJ24vb2zXxn6fvWvQ2ECJiLCJeLW5/JOn0zNKNbruSvhrR\nRPgvkHRo0v3DGqwpv0PSLtuv2B5pupkpLCymTZek9yQtbLKZKbSdubmfzphZemC2XTczXleNN/y+\n7OqI+AdJ10n6YXF4O5Bi4jXbIJ2u6Wjm5n6ZYmbpzzW57bqd8bpqTYT/iKTFk+5/vVg2ECLiSPF7\nXNJvNHizDx89PUlq8Xu84X4+N0gzN081s7QGYNsN0ozXTYT/ZUkX2/6G7dmS1kna2UAfX2J7TvFG\njGzPkfRdDd7swzslDRe3hyU91WAvXzAoMze3mllaDW+7gZvxOiL6/iPpek284/9/kv69iR5a9PV3\nkv63+Hmj6d4kPa6Jw8BPNfHeyM2S/kbSbklvS3pW0vwB6u0/Jb0mab8mgraood6u1sQh/X5J+4qf\n65vediV9NbLduMIPSIo3/ICkCD+QFOEHkiL8QFKEH0iK8ANJEX4gKcIPJPX/6UYSa9vlPMEAAAAA\nSUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f4de85f2320>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"print(y_train[4545])\n", | |
"plt.imshow(X_train[4545][0], cmap=plt.get_cmap('gray'))\n", | |
"plt.show()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(60000,)\n", | |
"(60000, 10)\n" | |
] | |
} | |
], | |
"source": [ | |
"print (y_train.shape)\n", | |
"# Convert 1-dimensional class arrays to 10-dimensional class matrices\n", | |
"Y_train = np_utils.to_categorical(y_train, 10)\n", | |
"Y_test = np_utils.to_categorical(y_test, 10)\n", | |
"print (Y_train.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 78, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"model = Sequential()\n", | |
"# add a sequential layer" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 81, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# declare a input layer\n", | |
"model.add(Convolution2D(32,(3,3),activation='relu',data_format='channels_first',input_shape=(1,28,28)))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 82, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(None, 32, 24, 24)\n" | |
] | |
} | |
], | |
"source": [ | |
"print (model.output_shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 83, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/alex/tensorflow/local/lib/python3.5/site-packages/ipykernel_launcher.py:1: UserWarning: Update your `Conv2D` call to the Keras 2 API: `Conv2D(32, (3, 3), activation=\"relu\")`\n", | |
" \"\"\"Entry point for launching an IPython kernel.\n" | |
] | |
} | |
], | |
"source": [ | |
"model.add(Convolution2D(32, 3, 3, activation='relu'))\n", | |
"model.add(MaxPooling2D(pool_size=(2,2)))\n", | |
"model.add(Dropout(0.25))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 84, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"model.add(Flatten())\n", | |
"model.add(Dense(128, activation='relu'))\n", | |
"model.add(Dropout(0.5))\n", | |
"model.add(Dense(10, activation='softmax'))# output 10 classes corresponds to 0 to 9 digits we need to find" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 85, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"model.compile(loss='categorical_crossentropy',\n", | |
" optimizer='adam',\n", | |
" metrics=['accuracy'])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 86, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/home/alex/tensorflow/local/lib/python3.5/site-packages/keras/models.py:939: UserWarning: The `nb_epoch` argument in `fit` has been renamed `epochs`.\n", | |
" warnings.warn('The `nb_epoch` argument in `fit` '\n" | |
] | |
}, | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Epoch 1/10\n", | |
"60000/60000 [==============================] - 24s 400us/step - loss: 0.2354 - acc: 0.9288\n", | |
"Epoch 2/10\n", | |
"60000/60000 [==============================] - 14s 232us/step - loss: 0.0908 - acc: 0.9736\n", | |
"Epoch 3/10\n", | |
"60000/60000 [==============================] - 14s 230us/step - loss: 0.0679 - acc: 0.9804\n", | |
"Epoch 4/10\n", | |
"60000/60000 [==============================] - 14s 233us/step - loss: 0.0566 - acc: 0.9834\n", | |
"Epoch 5/10\n", | |
"60000/60000 [==============================] - 14s 233us/step - loss: 0.0510 - acc: 0.9850\n", | |
"Epoch 6/10\n", | |
"60000/60000 [==============================] - 14s 231us/step - loss: 0.0439 - acc: 0.9863\n", | |
"Epoch 7/10\n", | |
"60000/60000 [==============================] - 14s 233us/step - loss: 0.0402 - acc: 0.9878\n", | |
"Epoch 8/10\n", | |
"60000/60000 [==============================] - 14s 234us/step - loss: 0.0356 - acc: 0.9888\n", | |
"Epoch 9/10\n", | |
"60000/60000 [==============================] - 14s 232us/step - loss: 0.0340 - acc: 0.9899\n", | |
"Epoch 10/10\n", | |
"60000/60000 [==============================] - 14s 233us/step - loss: 0.0312 - acc: 0.9903\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"<keras.callbacks.History at 0x7f4de8879c18>" | |
] | |
}, | |
"execution_count": 86, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"model.fit(X_train, Y_train,batch_size=32, nb_epoch=10, verbose=1)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 88, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[0.035374357837486194, 0.99080000000000001]\n" | |
] | |
} | |
], | |
"source": [ | |
"score = model.evaluate(X_test, Y_test, verbose=0)\n", | |
"print(score)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 100, | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"k = np.array(X_train[4545]) #seven" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 107, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"(1, 28, 28)\n", | |
"(1, 1, 28, 28)\n" | |
] | |
} | |
], | |
"source": [ | |
"print(k.shape)\n", | |
"y= k.reshape(1,1,28,28)\n", | |
"print(y.shape)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 112, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1/1 [==============================] - 0s 10ms/step\n", | |
"[7]\n" | |
] | |
} | |
], | |
"source": [ | |
"prediction = model.predict(y)\n", | |
"print(prediction)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 113, | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\r", | |
"1/1 [==============================] - 0s 6ms/step\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"array([7])" | |
] | |
}, | |
"execution_count": 113, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"model.predict_classes(y)" | |
] | |
} | |
], | |
"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.5.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Q:what the version of the keras and tf? thanks ~