Skip to content

Instantly share code, notes, and snippets.

@alexcpn
Created November 30, 2017 12:43
Show Gist options
  • Star 16 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save alexcpn/0683bb940cae510cf84d5976c1652abd to your computer and use it in GitHub Desktop.
Save alexcpn/0683bb940cae510cf84d5976c1652abd to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"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": "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\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": "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\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
}
@asd3427
Copy link

asd3427 commented Nov 26, 2020

Q:what the version of the keras and tf? thanks ~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment