Skip to content

Instantly share code, notes, and snippets.

@srkirkland
Created December 13, 2017 22:51
Show Gist options
  • Save srkirkland/782d498ca640d1bf11032c91db0acfa8 to your computer and use it in GitHub Desktop.
Save srkirkland/782d498ca640d1bf11032c91db0acfa8 to your computer and use it in GitHub Desktop.
minst example for appdev presentation
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz\n",
" 9756672/11490434 [========================>.....] - ETA: 0s60000 train samples\n",
"10000 test samples\n"
]
}
],
"source": [
"# imports\n",
"from __future__ import print_function\n",
"\n",
"import keras\n",
"from keras.datasets import mnist\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Dropout\n",
"from keras.optimizers import RMSprop, SGD\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"%matplotlib inline\n",
"\n",
"batch_size = 128\n",
"num_classes = 10\n",
"epochs = 10\n",
"\n",
"def print_prediction(arr):\n",
" for index, item in enumerate(arr):\n",
" print('chance image is %d = %s' % (index, '{:.1%}'.format(item)))\n",
"\n",
"# load our data\n",
"\n",
"# the data, shuffled and split between train and test sets\n",
"(x_train_orig, y_train), (x_test_orig, y_test) = mnist.load_data()\n",
"\n",
"x_train = x_train_orig.reshape(60000, 784)\n",
"x_test = x_test_orig.reshape(10000, 784)\n",
"x_train = x_train.astype('float32')\n",
"x_test = x_test.astype('float32')\n",
"x_train /= 255\n",
"x_test /= 255\n",
"print(x_train.shape[0], 'train samples')\n",
"print(x_test.shape[0], 'test samples')\n",
"\n",
"# convert class vectors to binary class matrices\n",
"y_train = keras.utils.to_categorical(y_train, num_classes)\n",
"y_test = keras.utils.to_categorical(y_test, num_classes)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0., 0., 0., 0., 0., 1., 0., 0., 0., 0.])"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nE6Lhacl0NnIAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fcab6147400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# show the first 3 images\n",
"fig, (ax1, ax2, ax3) = plt.subplots(1,3, figsize=(12,5))\n",
"ax1.imshow(x_train_orig[0], cmap='Greys')\n",
"ax2.imshow(x_train_orig[1], cmap='Greys')\n",
"ax3.imshow(x_train_orig[2], cmap='Greys')\n",
"\n",
"# x_train_orig[0]\n",
"y_train[0]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"dense_1 (Dense) (None, 15) 11775 \n",
"_________________________________________________________________\n",
"dense_2 (Dense) (None, 10) 160 \n",
"=================================================================\n",
"Total params: 11,935\n",
"Trainable params: 11,935\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n",
"Train on 60000 samples, validate on 10000 samples\n",
"Epoch 1/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0238 - acc: 0.8523 - val_loss: 0.0141 - val_acc: 0.9101\n",
"Epoch 2/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0133 - acc: 0.9144 - val_loss: 0.0120 - val_acc: 0.9233\n",
"Epoch 3/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0122 - acc: 0.9216 - val_loss: 0.0117 - val_acc: 0.9249\n",
"Epoch 4/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0115 - acc: 0.9261 - val_loss: 0.0116 - val_acc: 0.9245\n",
"Epoch 5/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0112 - acc: 0.9283 - val_loss: 0.0110 - val_acc: 0.9298\n",
"Epoch 6/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0109 - acc: 0.9311 - val_loss: 0.0110 - val_acc: 0.9286\n",
"Epoch 7/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0107 - acc: 0.9321 - val_loss: 0.0110 - val_acc: 0.9282\n",
"Epoch 8/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0105 - acc: 0.9330 - val_loss: 0.0107 - val_acc: 0.9313\n",
"Epoch 9/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0104 - acc: 0.9349 - val_loss: 0.0108 - val_acc: 0.9315\n",
"Epoch 10/10\n",
"60000/60000 [==============================] - 1s - loss: 0.0103 - acc: 0.9355 - val_loss: 0.0106 - val_acc: 0.9316\n",
"[0.01061909283111454, 0.93159999999999998]\n"
]
}
],
"source": [
"epochs = 10\n",
"\n",
"model = Sequential()\n",
"\n",
"model.add(Dense(15, input_shape=(784,)))\n",
"model.add(Dense(10, activation='softmax'))\n",
"\n",
"model.summary()\n",
"\n",
"model.compile(loss='mean_squared_error',\n",
" optimizer=RMSprop(),\n",
" metrics=['accuracy'])\n",
"\n",
"history = model.fit(x_train, y_train,\n",
" batch_size=batch_size,\n",
" epochs=epochs,\n",
" verbose=1,\n",
" validation_data=(x_test, y_test))\n",
"\n",
"score = model.evaluate(x_test, y_test, verbose=0)\n",
"print(score)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"chance image is 0 = 0.0%\n",
"chance image is 1 = 0.0%\n",
"chance image is 2 = 0.0%\n",
"chance image is 3 = 0.0%\n",
"chance image is 4 = 0.0%\n",
"chance image is 5 = 0.0%\n",
"chance image is 6 = 0.0%\n",
"chance image is 7 = 94.4%\n",
"chance image is 8 = 0.1%\n",
"chance image is 9 = 5.5%\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fcab6130048>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# let's check out how we did\n",
"index = 42\n",
"\n",
"plt.imshow(x_train_orig[index], cmap='Greys')\n",
"prediction = model.predict(x_train[index].reshape(1,-1))\n",
"print_prediction(prediction[0])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# TODO: show relu optimized version\n",
"# model.add(Dense(15, input_shape=(784,), activation='relu'))\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"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.5.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment