{ "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. 准备 CIFAR-10 数据" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "(x_train, y_train), (x_test, y_test) = tf.keras.datasets.cifar10.load_data()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x_train: (50000, 32, 32, 3)\n", "y_train: (50000, 1)\n", "x_test: (10000, 32, 32, 3)\n", "y_test: (10000, 1)\n" ] } ], "source": [ "print('x_train:', x_train.shape)\n", "print('y_train:', y_train.shape)\n", "print('x_test:', x_test.shape)\n", "print('y_test:', y_test.shape)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "x_train_normalize = x_train.astype('float32') / 255.0\n", "x_test_normalize = x_test.astype('float32') / 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": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10000, 10)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test_one_hot.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. 建立模型" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.1 建立 Sequential 模型" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "model = tf.keras.models.Sequential([\n", "\n", " # 卷积层1与池化层1\n", " tf.keras.layers.Conv2D(input_shape=(32, 32, 3), filters=32, kernel_size=(3, 3), padding='same', activation='relu'),\n", " tf.keras.layers.Dropout(0.3),\n", " tf.keras.layers.Conv2D(filters=32, kernel_size=(3, 3), padding='same', activation='relu'),\n", " tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),\n", " \n", " # 卷积层2与池化层2\n", " tf.keras.layers.Conv2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu'),\n", " tf.keras.layers.Dropout(0.3),\n", " tf.keras.layers.Conv2D(filters=64, kernel_size=(3, 3), padding='same', activation='relu'),\n", " tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),\n", " \n", " # 卷积层3与池化层3\n", " tf.keras.layers.Conv2D(filters=128, kernel_size=(3, 3), padding='same', activation='relu'),\n", " tf.keras.layers.Dropout(0.3),\n", " tf.keras.layers.Conv2D(filters=128, kernel_size=(3, 3), padding='same', activation='relu'),\n", " tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),\n", " \n", " # 平坦层\n", " tf.keras.layers.Flatten(),\n", " tf.keras.layers.Dropout(0.3),\n", " \n", " # 隐藏层1(2500个神经元)\n", " tf.keras.layers.Dense(2500, activation='relu'),\n", " tf.keras.layers.Dropout(0.3),\n", " \n", " # 隐藏层2(1500个神经元)\n", " tf.keras.layers.Dense(1500, activation='relu'),\n", " tf.keras.layers.Dropout(0.3),\n", " \n", " # 输出层\n", " tf.keras.layers.Dense(10, activation='softmax')\n", "])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 2.2 查看模型的摘要" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "conv2d (Conv2D) (None, 32, 32, 32) 896 \n", "_________________________________________________________________\n", "dropout (Dropout) (None, 32, 32, 32) 0 \n", "_________________________________________________________________\n", "conv2d_1 (Conv2D) (None, 32, 32, 32) 9248 \n", "_________________________________________________________________\n", "max_pooling2d (MaxPooling2D) (None, 16, 16, 32) 0 \n", "_________________________________________________________________\n", "conv2d_2 (Conv2D) (None, 16, 16, 64) 18496 \n", "_________________________________________________________________\n", "dropout_1 (Dropout) (None, 16, 16, 64) 0 \n", "_________________________________________________________________\n", "conv2d_3 (Conv2D) (None, 16, 16, 64) 36928 \n", "_________________________________________________________________\n", "max_pooling2d_1 (MaxPooling2 (None, 8, 8, 64) 0 \n", "_________________________________________________________________\n", "conv2d_4 (Conv2D) (None, 8, 8, 128) 73856 \n", "_________________________________________________________________\n", "dropout_2 (Dropout) (None, 8, 8, 128) 0 \n", "_________________________________________________________________\n", "conv2d_5 (Conv2D) (None, 8, 8, 128) 147584 \n", "_________________________________________________________________\n", "max_pooling2d_2 (MaxPooling2 (None, 4, 4, 128) 0 \n", "_________________________________________________________________\n", "flatten (Flatten) (None, 2048) 0 \n", "_________________________________________________________________\n", "dropout_3 (Dropout) (None, 2048) 0 \n", "_________________________________________________________________\n", "dense (Dense) (None, 2500) 5122500 \n", "_________________________________________________________________\n", "dropout_4 (Dropout) (None, 2500) 0 \n", "_________________________________________________________________\n", "dense_1 (Dense) (None, 1500) 3751500 \n", "_________________________________________________________________\n", "dropout_5 (Dropout) (None, 1500) 0 \n", "_________________________________________________________________\n", "dense_2 (Dense) (None, 10) 15010 \n", "=================================================================\n", "Total params: 9,176,018\n", "Trainable params: 9,176,018\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "None\n" ] } ], "source": [ "print(model.summary())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. 加载之前训练的模型" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "加载模型失败, 开始训练一个新模型\n" ] } ], "source": [ "try:\n", " model.load_weights('save_model/model_cifar10_cnn_deeper.h5')\n", " print('加载模型成功! 继续训练模型.')\n", "except:\n", " print('加载模型失败, 开始训练一个新模型')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 4. 训练模型" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 40000 samples, validate on 10000 samples\n", "Epoch 1/10\n", " - 327s - loss: 1.4048 - acc: 0.4818 - val_loss: 1.3247 - val_acc: 0.5224\n", "Epoch 3/10\n", " - 330s - loss: 1.2062 - acc: 0.5643 - val_loss: 1.1510 - val_acc: 0.5969\n", "Epoch 4/10\n", " - 331s - loss: 1.0788 - acc: 0.6155 - val_loss: 0.9656 - val_acc: 0.6586\n", "Epoch 5/10\n", " - 330s - loss: 0.9780 - acc: 0.6520 - val_loss: 0.9960 - val_acc: 0.6565\n", "Epoch 6/10\n", " - 326s - loss: 0.9038 - acc: 0.6809 - val_loss: 0.8209 - val_acc: 0.7134\n", "Epoch 7/10\n", " - 329s - loss: 0.8324 - acc: 0.7054 - val_loss: 0.7892 - val_acc: 0.7240\n", "Epoch 8/10\n", " - 328s - loss: 0.7756 - acc: 0.7239 - val_loss: 0.7598 - val_acc: 0.7374\n", "Epoch 9/10\n", " - 327s - loss: 0.7320 - acc: 0.7431 - val_loss: 0.7315 - val_acc: 0.7497\n", "Epoch 10/10\n", " - 327s - loss: 0.6898 - acc: 0.7553 - val_loss: 0.7132 - val_acc: 0.7483\n" ] } ], "source": [ "train_history = model.fit(x=x_train_normalize, y=y_train_one_hot, validation_split=0.2,\n", " epochs=10, batch_size=128, verbose=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5. 以图形显示训练过程" ] }, { "cell_type": "code", "execution_count": 13, "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": 14, "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": 15, "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": [ "### 6. 评估模型的准确率" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10000/10000 [==============================] - 21s 2ms/step\n", "\n", "accuracy: 0.7447\n" ] } ], "source": [ "scores = model.evaluate(x_test_normalize, y_test_one_hot)\n", "print()\n", "print('accuracy:', scores[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7. 进行预测" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.1 执行预测" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "predictions = model.predict_classes(x_test_normalize)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.2 预测结果" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([8, 8, 8, 8, 6, 6, 1, 6, 3, 9])" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "predictions[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 7.3 定义函数以显示10项预测结果" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "label_dict = {\n", " 0: 'airplane',\n", " 1: 'automobile',\n", " 2: 'bird',\n", " 3: 'cat',\n", " 4: 'deer',\n", " 5: 'dog',\n", " 6: 'frog',\n", " 7: 'horse',\n", " 8: 'ship',\n", " 9: 'truck'\n", "}" ] }, { "cell_type": "code", "execution_count": 20, "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 = str(labels[idx][0]) + ',' + label_dict[labels[idx][0]]\n", " if len(predictions) > 0:\n", " title += '=>' + label_dict[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": 21, "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=0, num=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8. 查看预测概率" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 8.1 使用测试数据进行预测" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "predicted_probability = model.predict(x_test_normalize)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 8.2 建立 show_predicted_probability 函数以相看预测概率" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "def show_predicted_probability(x, y, predictions, predicted_probability, idx):\n", " print('label:', label_dict[y[idx][0]])\n", " print('predict:', label_dict[predictions[idx]])\n", " plt.figure(figsize=(2, 2))\n", " plt.imshow(x[idx].reshape((32, 32, 3)))\n", " plt.show()\n", " for j in range(10):\n", " print(label_dict[j], ':', predicted_probability[idx][j])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 8.3 查看第0项数据预测的概率" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "label: cat\n", "predict: ship\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "airplane : 0.005173354\n", "automobile : 0.015833795\n", "bird : 0.020151181\n", "cat : 0.3291398\n", "deer : 0.0040378636\n", "dog : 0.1168231\n", "frog : 0.13499218\n", "horse : 0.0046175853\n", "ship : 0.3520366\n", "truck : 0.017194541\n" ] } ], "source": [ "show_predicted_probability(x_test, y_test, predictions, predicted_probability, 0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 8.4 查看第3项数据预测的概率" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "label: airplane\n", "predict: ship\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "airplane : 0.35164014\n", "automobile : 0.030136198\n", "bird : 0.00475265\n", "cat : 0.0015198193\n", "deer : 0.0004779164\n", "dog : 0.000117743686\n", "frog : 0.00021989802\n", "horse : 0.00014916781\n", "ship : 0.57337856\n", "truck : 0.037607934\n" ] } ], "source": [ "show_predicted_probability(x_test, y_test, predictions, predicted_probability, 3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 9. 显示混淆矩阵" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 9.1 查看预测结果的形状" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "predictons shape: (10000,)\n" ] } ], "source": [ "print('predictons shape:', predictions.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 9.2 查看测试 label 真实值的形状" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y_test shape: (10000, 1)\n", "[[3]\n", " [8]\n", " [8]\n", " ...\n", " [5]\n", " [1]\n", " [7]]\n" ] } ], "source": [ "print('y_test shape:', y_test.shape)\n", "print(y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 9.3 将测试 label 真实值转换为一维数据" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([3, 8, 8, ..., 5, 1, 7])" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test.reshape(-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 9.4 建立混淆矩阵" ] }, { "cell_type": "code", "execution_count": 29, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
predict0123456789
label
066221461912314316852
149071422402650
24776216375529511218
31413535754713893162328
41385575705246437136
559461943561540271613
6210254119158685132
7139305760599723634
8202258114392016
9139037237420851
\n", "
" ], "text/plain": [ "predict 0 1 2 3 4 5 6 7 8 9\n", "label \n", "0 662 21 46 19 12 3 14 3 168 52\n", "1 4 907 1 4 2 2 4 0 26 50\n", "2 47 7 621 63 75 52 95 11 21 8\n", "3 14 13 53 575 47 138 93 16 23 28\n", "4 13 8 55 75 705 24 64 37 13 6\n", "5 5 9 46 194 35 615 40 27 16 13\n", "6 2 10 25 41 19 15 868 5 13 2\n", "7 13 9 30 57 60 59 9 723 6 34\n", "8 20 22 5 8 1 1 4 3 920 16\n", "9 13 90 3 7 2 3 7 4 20 851" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.crosstab(y_test.reshape(-1), predictions, rownames=['label'], colnames=['predict'])" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{0: 'airplane', 1: 'automobile', 2: 'bird', 3: 'cat', 4: 'deer', 5: 'dog', 6: 'frog', 7: 'horse', 8: 'ship', 9: 'truck'}\n" ] } ], "source": [ "print(label_dict)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 10. 保存模型" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 10.1 保存为 json" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "model_json = model.to_json()\n", "with open('save_model/model_cifar10_cnn_deeper.json', 'w') as json_file:\n", " json_file.write(model_json)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 10.2 保存为 yaml" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "model_yaml = model.to_yaml()\n", "with open('save_model/model_cifar10_cnn_deeper.yaml', 'w') as yaml_file:\n", " yaml_file.write(model_yaml)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 10.3 保存为 h5" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "模型已保存到: save_model/model_cifar10_cnn_deeper.h5\n" ] } ], "source": [ "model.save_weights('save_model/model_cifar10_cnn_deeper.h5', save_format='h5')\n", "print('模型已保存到:', 'save_model/model_cifar10_cnn_deeper.h5')" ] } ], "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 }