{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.simplefilter(action='ignore')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import tensorflow as tf\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. 数据预处理" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "x_train_flatten = x_train.reshape(60000, 784).astype('float32')\n", "x_test_flatten = x_test.reshape(10000, 784).astype('float32')" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "x_train_normalize = x_train_flatten / 255.0\n", "x_test_normalize = x_test_flatten / 255.0" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "y_train_one_hot = tf.keras.utils.to_categorical(y_train)\n", "y_test_one_hot = tf.keras.utils.to_categorical(y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. 建立模型" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.1 建立 Sequential 模型" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "model = tf.keras.models.Sequential([\n", " tf.keras.layers.Dense(units=1000, input_dim=784, kernel_initializer='normal', activation='relu'), # 输入层-隐藏层1(这里隐藏层为1000个神经元)\n", " tf.keras.layers.Dropout(0.5), # 添加 Dropout 层\n", " \n", " tf.keras.layers.Dense(units=1000, kernel_initializer='normal', activation='relu'), # 隐藏层2\n", " tf.keras.layers.Dropout(0.5), # 添加 Dropout 层\n", " \n", " tf.keras.layers.Dense(units=10, kernel_initializer='normal', activation='softmax') # 输出层\n", "])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2 查看模型的摘要" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "dense (Dense) (None, 1000) 785000 \n", "_________________________________________________________________\n", "dropout (Dropout) (None, 1000) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 1000) 1001000 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 1000) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 10) 10010 \n", "=================================================================\n", "Total params: 1,796,010\n", "Trainable params: 1,796,010\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "print(model.summary())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. 训练模型" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 48000 samples, validate on 12000 samples\n", "Epoch 1/10\n", " - 14s - loss: 14.5478 - acc: 0.0972 - val_loss: 14.0516 - val_acc: 0.1281\n", "Epoch 2/10\n", " - 13s - loss: 14.3233 - acc: 0.1112 - val_loss: 13.3720 - val_acc: 0.1703\n", "Epoch 3/10\n", " - 13s - loss: 13.6706 - acc: 0.1517 - val_loss: 11.9744 - val_acc: 0.2568\n", "Epoch 4/10\n", " - 13s - loss: 13.1267 - acc: 0.1855 - val_loss: 11.8225 - val_acc: 0.2664\n", "Epoch 5/10\n", " - 13s - loss: 12.7852 - acc: 0.2066 - val_loss: 11.4733 - val_acc: 0.2880\n", "Epoch 6/10\n", " - 13s - loss: 12.3000 - acc: 0.2368 - val_loss: 11.0556 - val_acc: 0.3139\n", "Epoch 7/10\n", " - 13s - loss: 11.9510 - acc: 0.2584 - val_loss: 10.4957 - val_acc: 0.3487\n", "Epoch 8/10\n", " - 13s - loss: 11.7794 - acc: 0.2690 - val_loss: 10.4822 - val_acc: 0.3494\n", "Epoch 9/10\n", " - 13s - loss: 11.4918 - acc: 0.2868 - val_loss: 9.3157 - val_acc: 0.4219\n", "Epoch 10/10\n", " - 13s - loss: 11.0558 - acc: 0.3139 - val_loss: 8.8860 - val_acc: 0.4486\n" ] } ], "source": [ "train_history = model.fit(x=x_train_normalize, y=y_train_one_hot, validation_split=0.2,\n", " epochs=10, batch_size=200, verbose=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. 以图形显示训练过程" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def show_train_history(train_history, train, validation):\n", " plt.plot(train_history.history[train])\n", " plt.plot(train_history.history[validation])\n", " plt.title('Train History')\n", " plt.xlabel('Epoch')\n", " plt.ylabel(train)\n", " plt.legend(['train', 'validation'], loc='upper left')\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_train_history(train_history, 'acc', 'val_acc')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "show_train_history(train_history, 'loss', 'val_loss')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. 评估模型的准确率" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 2s 175us/step\n", "\n", "accuracy: 0.4512\n" ] } ], "source": [ "scores = model.evaluate(x_test_normalize, y_test_one_hot)\n", "print()\n", "print('accuracy:', scores[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6. 进行预测" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.1 执行预测" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "predictions = model.predict_classes(x_test_normalize)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.2 预测结果" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([9, 2, 1, ..., 9, 1, 6])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 6.3 定义函数以显示10项预测结果" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def plot_images_labels_prediction(images, labels, predictions, idx, num=10):\n", " \"\"\"\n", " images: 数字图像数组\n", " labels: 真实值数组\n", " predictions: 预测结果数据\n", " idx: 开始显示的数据index\n", " num: 要显示的数据项数, 默认为10, 不超过25\n", " \"\"\"\n", " fig = plt.gcf()\n", " fig.set_size_inches(12, 14)\n", " if num > 25:\n", " num = 25\n", " for i in range(0, num):\n", " ax = plt.subplot(5, 5, i+1)\n", " ax.imshow(images[idx], cmap='binary')\n", " title = 'lable=' + str(labels[idx])\n", " if len(predictions) > 0:\n", " title += ',predict=' + str(predictions[idx])\n", " ax.set_title(title, fontsize=10)\n", " ax.set_xticks([])\n", " ax.set_yticks([])\n", " idx += 1\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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WJNvv/32XJaEErZw4cKUr5911lnVVAkqa+TIkSbXrl27QJVkZ+rUqSb75zpVNdk/rttuuy0/hZWQ3Xff3eROnTqZvHjxYpM3bNhgctOmTfNTWBx/rvsJEyakXefII4/MVzl5x5VZAAAABIvOLAAAAIJFZxYAAADBYsxsBr755huTn3vuOZN33XXXhHX8cUd169bNfWGo0Pr1602+++67TU42ztnnj4Nq2LBh1QtDSfr8889Nnj17tslt2rQx+ec//3nea0LVTJs2rdAlJFi7dq3J7777bsIy/rkunbKyMpP5XZVe/fr1TW7VqpXJEydONLlHjx4mX3fddVWuYcmSJSb788iuXr3aZH+sdDK1aoV7fTPcygEAAFDj0ZkFAABAsOjMAgAAIFiMmc3Avffea7I/b9/JJ5+csM4RRxyR15qQ2h/+8AeT33jjjbTrnHHGGSYzrywy9fjjj5v8xRdfmJzsHAFk66677jL5wQcfzHob5eXlJj/xxBMmt2jRIutt1nS33nqryc45k/3x1+ecc06V99msWTOT/TGx69aty3qbF110UZVqKiSuzAIAACBYdGYBAAAQLDqzAAAACBadWQAAAASLG8CS8Adr33HHHSY3btzY5JtvvjnvNSE7w4YNy3od/2YKPiQBmfInKPc1adKkmipBKTnllFNMXr58eZW32a5dO5OPPvroKm+zpmvbtq3Jf/vb30z2bxr3P+CgMnr16pXy9QsuuMDkMWPGpN2m/2EQIeHKLAAAAIJFZxYAAADBojMLAACAYDFmVkTWr19v8lVXXWXytm3bTPbHMXXp0iU/haFa+e2gbt26VdqeP7Y62fa+++47kzdt2pRymxs3bjR5+PDhWddVu3Ztk4cMGWLybrvtlvU2a7qpU6emfP3UU0+tpkqQK/7E99u3b0+5/PTp09Nu89e//rXJn332WVY1+BPjV4Z/Twjy78ADD0yZ8+GHP/xh1ussXrzY5J/85Ce5KifvuDILAACAYNGZBQAAQLDozAIAACBYNXLMrD/2qXv37iavXLnS5FatWpnszzuL0tChQ4ecbu/ss882ee+9905Y5osvvjB53LhxOa0hE82bNzd54MCB1V5DaGbPnm2y/3NE+Pr162dy//79Uy7fo0ePhOf88enZvu7/rkq3fDKXXnpp1usgfP54az8nE9IYWR9XZgEAABAsOrMAAAAI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FgAAAMEquTGz/rx9IiIrVqxIuU69evVM9j8vG8iEP37NH6Pof666iEj79u1NfuKJJ3JfGEpS3759TX744YdNfvrpp0325yzt0KFDfgrDf/njku+77z6T/bGTb731lslffPGFyeXl5Sb7bUAkcb5hFN7mzZtN9sdSi4hs3bo15TY6duxost+WajquzAIAACBYdGYBAAAQLDqzAAAACFbJjZlN9pnmhxxyiMlLly41+YADDshrTagZHnnkEZNHjx5t8q9+9auEdW6++ea81oTS1axZM5Nfeuklk1u2bGny4MGDTR47dmx+CkOFmjdvbvK0adNM/stf/mLy3LlzTfbHw37ve9/LXXHIm5dfftnkTz/9NOttDBs2zGT/Xp+ajiuzAAAACBadWQAAAASLziwAAACCVXJjZmvXrp3w3F133WWyqpp80EEH5bUmlIb777/f5FtuucXkrl27mtyvXz+TmzRpkrDNXXbZJUfVoaZr0aKFySeeeKLJU6ZMMfndd981uV27dvkpDBk7//zzU2aEqTL3RvTv39/k448/PlfllCSuzAIAACBYdGYBAAAQLDqzAAAACBadWQAAAASr5G4AS2afffYx+dFHHy1QJQjZ0UcfbbI/ETZQTCZOnGhyx44dTV6xYoXJ3AAG5MeGDRvSLuN/AMY111yTr3JKEldmAQAAECw6swAAAAgWnVkAAAAEq0aMmQWAmqZRo0Ymr1y5skCVADXbddddlzKLJH6wwt57753XmkoNV2YBAAAQLDqzAAAACBadWQAAAASLMbMAAAB5cu2116bMqDquzAIAACBYdGYBAAAQLDqzAAAACJY65zJfWHWtiKzOXzmoRi2dc83ysWHaScmhrSATtBNkiraCTGTcTrLqzAIAAADFhGEGAAAACBadWQAAAASLziwAAACCRWcWAAAAwaIzCwAAgGDRmQUAAECw6MwCAAAgWHRmAQAAECw6swAAAAjW/weO/jPyY67A5gAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_images_labels_prediction(x_test, y_test, predictions, idx=0, num=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7. 显示混淆矩阵" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.1 建立混淆矩阵" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
predict01234689
label
07271302113800
101119404503
2259661512384809
324115414813270220162
412620668550230
5189541103611140163
6301264016668600
71210543019230673
8541569414361051127
92402027390683
\n", "
" ], "text/plain": [ "predict 0 1 2 3 4 6 8 9\n", "label \n", "0 727 1 3 0 211 38 0 0\n", "1 0 1119 4 0 4 5 0 3\n", "2 25 96 615 1 238 48 0 9\n", "3 241 154 148 13 270 22 0 162\n", "4 1 26 2 0 668 55 0 230\n", "5 189 54 11 0 361 114 0 163\n", "6 30 12 64 0 166 686 0 0\n", "7 12 105 43 0 192 3 0 673\n", "8 54 156 94 1 436 105 1 127\n", "9 2 40 2 0 273 9 0 683" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(y_test, predictions, rownames=['label'], colnames=['predict'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.2 建立真实值与预测 DataFrame" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelpredict
079
122
\n", "
" ], "text/plain": [ " label predict\n", "0 7 9\n", "1 2 2" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame({'label': y_test, 'predict': predictions})\n", "df[:2]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.3 查询真实值是 \"5\" 但预测值是 \"2\" 的数据" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
labelpredict
28952
123552
173752
221452
222452
223752
255652
341452
355852
389352
551852
\n", "
" ], "text/plain": [ " label predict\n", "289 5 2\n", "1235 5 2\n", "1737 5 2\n", "2214 5 2\n", "2224 5 2\n", "2237 5 2\n", "2556 5 2\n", "3414 5 2\n", "3558 5 2\n", "3893 5 2\n", "5518 5 2" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[(df.label==5)&(df.predict==2)]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_images_labels_prediction(x_test, y_test, predictions, idx=340, num=1)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_images_labels_prediction(x_test, y_test, predictions, idx=1289, num=1)" ] } ], "metadata": { "kernelspec": { "display_name": "tensorflow-keras-practice", "language": "python", "name": "tensorflow-keras-practice" }, "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }