Skip to content

Instantly share code, notes, and snippets.

@khanhhd2211
Created August 13, 2023 08:08
Show Gist options
  • Save khanhhd2211/aa44461113c2efc26a3ddaa1796ef9c6 to your computer and use it in GitHub Desktop.
Save khanhhd2211/aa44461113c2efc26a3ddaa1796ef9c6 to your computer and use it in GitHub Desktop.
Thử train CNN model trên MNIST dataset
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"# 1. Thêm các thư viện cần thiết\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Dropout, Activation, Flatten\n",
"from keras.layers import Conv2D, MaxPooling2D\n",
"from keras.utils import np_utils\n",
"from keras.datasets import mnist"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(50000, 28, 28)\n"
]
}
],
"source": [
"# 2. Load dữ liệu mnist\n",
"(X_train, y_train), (X_test, y_test) = mnist.load_data()\n",
"X_val, y_val = X_train[50_000:60_000,:], y_train[50_000:60_000]\n",
"X_train, y_train = X_train[:50_000,], y_train[:50_000]\n",
"print(X_train.shape)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(50000, 28, 28, 1)\n"
]
}
],
"source": [
"# 3. Reshape lại dữ liệu cho đúng kích thước mà keras yêu cầu\n",
"X_train = X_train.reshape(X_train.shape[0], 28, 28, 1)\n",
"X_val = X_val.reshape(X_val.shape[0], 28, 28, 1)\n",
"X_test = X_test.reshape(X_test.shape[0], 28, 28, 1)\n",
"print(X_train.shape) # (50000, 28, 28, 1) (images, height, width, channel)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dữ liệu y ban đầu 5\n",
"Dữ liệu y sau khi one-hot encoding [0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n",
"Shape y ban đầu (50000,)\n",
"Shape y sau khi one-hot encoding (50000, 10)\n"
]
}
],
"source": [
"# 4. One hot encoding label (Y)\n",
"Y_train = np_utils.to_categorical(y_train, 10)\n",
"Y_val = np_utils.to_categorical(y_val, 10)\n",
"Y_test = np_utils.to_categorical(y_test, 10)\n",
"print('Dữ liệu y ban đầu', y_train[0])\n",
"print('Dữ liệu y sau khi one-hot encoding', Y_train[0])\n",
"print('Shape y ban đầu', y_train.shape)\n",
"print('Shape y sau khi one-hot encoding', Y_train.shape)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"# 5. Định nghĩa model\n",
"model = Sequential() # `Sequential` groups a linear stack of layers into a `tf.keras.Model`.\n",
"\n",
"# Thêm Convolutional layer với 32 kernel, kích thước 3x3\n",
"# dùng hàm sigmoid làm activation function và chỉ rõ input_shape cho layer đầu tiên\n",
"model.add(Conv2D(32, (3, 3),activation='sigmoid', input_shape=(28, 28, 1)))\n",
"\n",
"# Thêm Convolutional layer\n",
"model.add(Conv2D(32, (3, 3), activation='sigmoid'))\n",
"\n",
"# Thêm Max Pooling layer\n",
"model.add(MaxPooling2D(pool_size=(2, 2)))\n",
"\n",
"# Flatten layer chuyển tensor sang vector\n",
"model.add(Flatten())\n",
"\n",
"# Thêm Fully Connected layer với 128 modes và dùng hàm sigmoid\n",
"model.add(Dense(128, activation='sigmoid'))\n",
"\n",
"# Output layer với 10 node và dùng softmax function để chuyển sang xác suất\n",
"model.add(Dense(10, activation='softmax'))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# 6. Compile model, chỉ rõ hàm loss_fucntion nào được sử dụng, phương thức dùng để tối ưu hàm loss function\n",
"model.compile(loss='categorical_crossentropy',\n",
" optimizer='adam',\n",
"\t\t\t\t\t\t\tmetrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"sequential_2\"\n",
"_________________________________________________________________\n",
" Layer (type) Output Shape Param # \n",
"=================================================================\n",
" conv2d_4 (Conv2D) (None, 26, 26, 32) 320 \n",
" \n",
" conv2d_5 (Conv2D) (None, 24, 24, 32) 9248 \n",
" \n",
" max_pooling2d_2 (MaxPooling (None, 12, 12, 32) 0 \n",
" 2D) \n",
" \n",
" flatten_2 (Flatten) (None, 4608) 0 \n",
" \n",
" dense_4 (Dense) (None, 128) 589952 \n",
" \n",
" dense_5 (Dense) (None, 10) 1290 \n",
" \n",
"=================================================================\n",
"Total params: 600,810\n",
"Trainable params: 600,810\n",
"Non-trainable params: 0\n",
"_________________________________________________________________\n"
]
}
],
"source": [
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/10\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-08-13 14:43:16.111782: W tensorflow/tsl/platform/profile_utils/cpu_utils.cc:128] Failed to get CPU frequency: 0 Hz\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"1563/1563 [==============================] - 23s 14ms/step - loss: 0.3077 - accuracy: 0.9108 - val_loss: 0.0780 - val_accuracy: 0.9799\n",
"Epoch 2/10\n",
"1563/1563 [==============================] - 24s 15ms/step - loss: 0.0600 - accuracy: 0.9827 - val_loss: 0.0681 - val_accuracy: 0.9812\n",
"Epoch 3/10\n",
"1563/1563 [==============================] - 23s 15ms/step - loss: 0.0410 - accuracy: 0.9878 - val_loss: 0.0472 - val_accuracy: 0.9859\n",
"Epoch 4/10\n",
"1563/1563 [==============================] - 23s 15ms/step - loss: 0.0276 - accuracy: 0.9917 - val_loss: 0.0507 - val_accuracy: 0.9845\n",
"Epoch 5/10\n",
"1563/1563 [==============================] - 24s 16ms/step - loss: 0.0183 - accuracy: 0.9947 - val_loss: 0.0393 - val_accuracy: 0.9890\n",
"Epoch 6/10\n",
"1563/1563 [==============================] - 25s 16ms/step - loss: 0.0136 - accuracy: 0.9965 - val_loss: 0.0390 - val_accuracy: 0.9885\n",
"Epoch 7/10\n",
"1563/1563 [==============================] - 24s 15ms/step - loss: 0.0097 - accuracy: 0.9973 - val_loss: 0.0423 - val_accuracy: 0.9875\n",
"Epoch 8/10\n",
"1563/1563 [==============================] - 24s 15ms/step - loss: 0.0060 - accuracy: 0.9985 - val_loss: 0.0432 - val_accuracy: 0.9885\n",
"Epoch 9/10\n",
"1563/1563 [==============================] - 24s 15ms/step - loss: 0.0043 - accuracy: 0.9991 - val_loss: 0.0453 - val_accuracy: 0.9882\n",
"Epoch 10/10\n",
"1563/1563 [==============================] - 24s 15ms/step - loss: 0.0047 - accuracy: 0.9988 - val_loss: 0.0425 - val_accuracy: 0.9889\n"
]
}
],
"source": [
"# 7. Thực hiện train model với data\n",
"H = model.fit(X_train, Y_train, validation_data=(X_val, Y_val),\n",
" batch_size=32, epochs=10, verbose=1)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACa1ElEQVR4nOzdeXhU5d3/8c/MZGayB5KQhCUkbAmbIAKyiRUVUCtFWxQ3lLrXFfnZClWfCm3lcS1aBVdE1CK1atUWH0ArggVBEVBBEwRCWLKQQPZ95vz+mMyEkABJSDJL3q/rmmsyZ86cuQ+McvKZ7/29TYZhGAIAAAAAAADakdnbAwAAAAAAAEDHQygFAAAAAACAdkcoBQAAAAAAgHZHKAUAAAAAAIB2RygFAAAAAACAdkcoBQAAAAAAgHZHKAUAAAAAAIB2RygFAAAAAACAdkcoBQAAAAAAgHZHKAXA7yxdulQmk0lff/21t4cCAADQLp599lmZTCYNHjzY20MBgFZDKAUAAAAAPm7JkiWSpB07dmjTpk1eHg0AtA5CKQAAAADwYV9//bW2b9+un//855KkV1991csjalxZWZm3hwDAzxBKAQhIX3zxhS644AJFREQoNDRUY8eO1b///e96+5SVlen+++9Xr169FBwcrOjoaI0YMULLly/37LNnzx5dddVV6tatm+x2u+Lj43XBBRdo27Zt7XxGAACgo3KHUP/7v/+rsWPH6u23324QAB08eFC33nqrEhMTZbPZ1K1bN02bNk05OTmefQoKCvT//t//U+/evWW32xUXF6dLLrlEP/74oyRp7dq1MplMWrt2bb1jZ2RkyGQyaenSpZ5tM2fOVHh4uL777jtNmjRJERERuuCCCyRJa9as0dSpU9WjRw8FBwerb9++uu2225SXl9fg3H788UddffXVio+Pl91uV8+ePXX99dersrJSGRkZCgoK0oIFCxq8bt26dTKZTHrnnXda9GcKwDcEeXsAANDaPv/8c02cOFFDhgzRq6++KrvdrkWLFmnKlClavny5pk+fLkmaPXu23njjDf3pT3/SsGHDVFpaqu+//175+fmeY11yySVyOBx6/PHH1bNnT+Xl5WnDhg0qKCjw0tkBAICOpLy8XMuXL9fIkSM1ePBg3Xjjjbr55pv1zjvv6IYbbpDkCqRGjhyp6upq/f73v9eQIUOUn5+vVatW6ejRo4qPj1dxcbHOOeccZWRk6IEHHtCoUaNUUlKidevWKSsrS/3792/22KqqqvSLX/xCt912m+bMmaOamhpJ0u7duzVmzBjdfPPNioqKUkZGhp5++mmdc845+u6772S1WiVJ27dv1znnnKPY2FjNnz9f/fr1U1ZWlj788ENVVVUpOTlZv/jFL/TCCy/od7/7nSwWi+e9n3vuOXXr1k2XX355K/wpA/AaAwD8zGuvvWZIMr766qtGnx89erQRFxdnFBcXe7bV1NQYgwcPNnr06GE4nU7DMAxj8ODBxmWXXXbC98nLyzMkGQsXLmzdEwAAAGiiZcuWGZKMF154wTAMwyguLjbCw8ON8ePHe/a58cYbDavVauzcufOEx5k/f74hyVizZs0J9/nss88MScZnn31Wb/vevXsNScZrr73m2XbDDTcYkowlS5acdPxOp9Oorq429u3bZ0gyPvjgA89z559/vtGpUycjNzf3lGN6//33PdsOHjxoBAUFGfPmzTvpewPwfUzfAxBQSktLtWnTJk2bNk3h4eGe7RaLRTNmzNCBAweUlpYmSTr77LP18ccfa86cOVq7dq3Ky8vrHSs6Olp9+vTRE088oaefflpbt26V0+ls1/MBAAAd26uvvqqQkBBdddVVkqTw8HBdccUVWr9+vXbt2iVJ+vjjjzVhwgQNGDDghMf5+OOPlZKSogsvvLBVx/erX/2qwbbc3FzdfvvtSkxMVFBQkKxWq5KSkiRJP/zwgyRXG4XPP/9cV155pbp06XLC45933nkaOnSonn/+ec+2F154QSaTSbfeemurnguA9kcoBSCgHD16VIZhqGvXrg2e69atmyR5puc9++yzeuCBB/TPf/5TEyZMUHR0tC677DLPBZ7JZNKnn36qyZMn6/HHH9dZZ52lLl266J577lFxcXH7nRQAAOiQfvrpJ61bt04///nPZRiGCgoKVFBQoGnTpkmqW5Hv8OHD6tGjx0mP1ZR9mis0NFSRkZH1tjmdTk2aNEnvvfeefve73+nTTz/V5s2b9eWXX0qS50vAo0ePyuFwNGlM99xzjz799FOlpaWpurpaL7/8sqZNm6aEhIRWPR8A7Y9QCkBA6dy5s8xms7Kysho8d+jQIUlSbGysJCksLEzz5s3Tjz/+qOzsbC1evFhffvmlpkyZ4nlNUlKSXn31VWVnZystLU333XefFi1apN/+9rftc0IAAKDDWrJkiQzD0D/+8Q917tzZc3Ovwvf666/L4XCoS5cuOnDgwEmP1ZR9goODJUmVlZX1tjfWoFxyfYF3vO+//17bt2/XE088obvvvlvnnXeeRo4cqZiYmHr7RUdHy2KxnHJMknTNNdcoJiZGzz//vN555x1lZ2frzjvvPOXrAPg+QikAASUsLEyjRo3Se++9V286ntPp1JtvvqkePXooJSWlwevi4+M1c+ZMXX311UpLS2t0SeOUlBQ99NBDOuOMM/TNN9+06XkAAICOzeFw6PXXX1efPn302WefNbj9v//3/5SVlaWPP/5YF198sT777DNPi4LGXHzxxUpPT9d//vOfE+6TnJwsSfr222/rbf/www+bPG53UGW32+ttf/HFF+s9DgkJ0c9+9jO98847Jwy93IKDg3Xrrbfq9ddf19NPP60zzzxT48aNa/KYAPguVt8D4Lf+85//KCMjo8H2BQsWaOLEiZowYYLuv/9+2Ww2LVq0SN9//72WL1/uuVgaNWqULr30Ug0ZMkSdO3fWDz/8oDfeeENjxoxRaGiovv32W91111264oor1K9fP9lsNv3nP//Rt99+qzlz5rTz2QIAgI7k448/1qFDh/TYY4/pvPPOa/D84MGD9dxzz+nVV1/Vc889p48//ljnnnuufv/73+uMM85QQUGB/u///k+zZ89W//79NWvWLK1YsUJTp07VnDlzdPbZZ6u8vFyff/65Lr30Uk2YMEEJCQm68MILtWDBAnXu3FlJSUn69NNP9d577zV53P3791efPn00Z84cGYah6OhoffTRR1qzZk2Dfd0r8o0aNUpz5sxR3759lZOTow8//FAvvviiIiIiPPvecccdevzxx7Vlyxa98sorLfozBeCDvNtnHQCaz7363olue/fuNdavX2+cf/75RlhYmBESEmKMHj3a+Oijj+odZ86cOcaIESOMzp07G3a73ejdu7dx3333GXl5eYZhGEZOTo4xc+ZMo3///kZYWJgRHh5uDBkyxPjLX/5i1NTUeOPUAQBAB3HZZZcZNpvtpCvTXXXVVUZQUJCRnZ1t7N+/37jxxhuNhIQEw2q1Gt26dTOuvPJKIycnx7P/0aNHjXvvvdfo2bOnYbVajbi4OOPnP/+58eOPP3r2ycrKMqZNm2ZER0cbUVFRxnXXXWd8/fXXja6+FxYW1ui4du7caUycONGIiIgwOnfubFxxxRVGZmamIcn4wx/+0GDfK664woiJiTFsNpvRs2dPY+bMmUZFRUWD45533nlGdHS0UVZW1sQ/RQC+zmQYhuG1RAwAAAAAgFPIzc1VUlKS7r77bj3++OPeHg6AVsL0PQAAAACATzpw4ID27NmjJ554QmazWffee6+3hwSgFdHoHAAAAADgk1555RWdd9552rFjh9566y11797d20MC0IqYvgcAAAAAAIB2R6UUAAAAAAAA2h2hFAAAAAAAANodoRQAAAAAAADaXcCsvud0OnXo0CFFRETIZDJ5ezgAACAAGIah4uJidevWTWZz4H2Xx/UTAABoC029hgqYUOrQoUNKTEz09jAAAEAA2r9/v3r06OHtYbQ6rp8AAEBbOtU1VMCEUhEREZJcJxwZGenl0QAAgEBQVFSkxMREz3VGoOH6CQAAtIWmXkMFTCjlLjmPjIzkogoAALSqQJ3axvUTAABoS6e6hgq85ggAAAAAAADweYRSAAAAAAAAaHeEUgAAAAAAAGh3AdNTCgCA9uRwOFRdXe3tYaAVWK1WWSwWbw/Dp/F5Dxx83gEAvoRQCgCAZjAMQ9nZ2SooKPD2UNCKOnXqpISEhIBtaN5SfN4DE593AICvIJQCAKAZ3L+gx8XFKTQ0lF/q/JxhGCorK1Nubq4kqWvXrl4ekW/h8x5Y+LwDAHwNoRQAAE3kcDg8v6DHxMR4ezhoJSEhIZKk3NxcxcXFMbWpFp/3wMTnHQDgS2h0DgBAE7l76oSGhnp5JGht7r9T+ibV4fMeuPi8AwB8BaEUAADNxBSmwNPWf6fr1q3TlClT1K1bN5lMJv3zn/885Ws+//xzDR8+XMHBwerdu7deeOGFBvu8++67GjhwoOx2uwYOHKj333+/1cfO5z3w8HcKAPAVhFIAAABtrLS0VEOHDtVzzz3XpP337t2rSy65ROPHj9fWrVv1+9//Xvfcc4/effddzz4bN27U9OnTNWPGDG3fvl0zZszQlVdeqU2bNrXVaQAAALQqQikAANAsycnJWrhwYZP3X7t2rUwmU4dewe3iiy/Wn/70J/3yl79s0v4vvPCCevbsqYULF2rAgAG6+eabdeONN+rJJ5/07LNw4UJNnDhRc+fOVf/+/TV37lxdcMEFzfq7wanxeQcAoO0QSgEA0AGcd955mjVrVqsc66uvvtKtt97a5P3Hjh2rrKwsRUVFtcr7dwQbN27UpEmT6m2bPHmyvv76a08foBPts2HDhnYbp6/i8w4AgH9g9T0AACDDMORwOBQUdOpLgy5dujTr2DabTQkJCS0dWoeUnZ2t+Pj4etvi4+NVU1OjvLw8de3a9YT7ZGdnn/C4lZWVqqys9DwuKipq3YH7CT7vAAD4BiqlAAAIcDNnztTnn3+uZ555RiaTSSaTSUuXLpXJZNKqVas0YsQI2e12rV+/Xrt379bUqVMVHx+v8PBwjRw5Up988km94x0/nclkMumVV17R5ZdfrtDQUPXr108ffvih5/njpzMtXbpUnTp10qpVqzRgwACFh4froosuUlZWluc1NTU1uueee9SpUyfFxMTogQce0A033KDLLrusLf+ofMrxzagNw2iwvbF9TtbEesGCBYqKivLcEhMTW3HEvoHPOwAA/oNQCgCAFjIMQ2VVNV65uQOKpnjmmWc0ZswY3XLLLcrKylJWVpYnjPjd736nBQsW6IcfftCQIUNUUlKiSy65RJ988om2bt2qyZMna8qUKcrMzDzpe8ybN09XXnmlvv32W11yySW69tprdeTIkRPuX1ZWpieffFJvvPGG1q1bp8zMTN1///2e5x977DG99dZbeu211/Tf//5XRUVFTVqxLlAkJCQ0qHjKzc1VUFCQYmJiTrrP8dVTx5o7d64KCws9t/379zdrXP7wmefzDgCA/2D6XhM4nIY27clXWk6xrh+TLIuZZXQBAFJ5tUMD/2eVV9575/zJCrU17Z/xqKgo2Ww2hYaGeqYV/fjjj5Kk+fPna+LEiZ59Y2JiNHToUM/jP/3pT3r//ff14Ycf6q677jrhe8ycOVNXX321JOnRRx/VX//6V23evFkXXXRRo/tXV1frhRdeUJ8+fSRJd911l+bPn+95/q9//avmzp2ryy+/XJL03HPPaeXKlU0630AwZswYffTRR/W2rV69WiNGjJDVavXss2bNGt1333319hk7duwJj2u322W321s8Ln/4zPN5BwA0l+tLF4dKK2tUXFmj0soalVTWqLTSoYpqh6wWs+xBrput9mYPstTem+vd2yzmk1Ytoz5CqSb69dKvVFnj1HmpceoVG+bt4QAA0CpGjBhR73FpaanmzZunf/3rXzp06JBqampUXl5+ysqRIUOGeH4OCwtTRESE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GD435nsdQ+8d+XryZ8X6OMa1x7heXlbmNN4hXKjAwKByXE5dwSLnAABgDBcUSu3YsUPPPPOMWlpatGTJEj377LNas2ZNyvb79u1TbW2tjh8/roqKCv30pz/Vpk2bktrs2bNHW7du1WeffaZFixZp27Zt+u53v3sh3QMAwFYMw5A7wyl3hlM+Ea5g9rjnhmrdveoSBcPRiRsDAIA5Z8qrqe7evVtbtmzRY489poaGBq1Zs0a33nqrGhsbx2z/xRdf6LbbbtOaNWvU0NCgRx99VPfff7/27NmTaHPgwAGtX79eGzdu1LFjx7Rx40bddddd+te//nXh3wwAAACWGxpxCAAAMJphmkOrWEzOypUrtXz5cu3cuTNxbvHixVq3bp3q6urOa//QQw9p7969+uijjxLnNm3apGPHjunAgQOSpPXr18vv9+u1115LtLnllltUUFCgl156aVL98vv98vl86u7uVl5e3lS+EgAAwJhme30x278fAACwxmRrjCmNlAqFQjp8+LDWrl2bdH7t2rV6++23x3zPgQMHzmv/zW9+U++++64GBwfHbZPqmpIUDAbl9/uTHgAAAAAAALCHKYVS7e3tikQiKisrSzpfVlam1tbWMd/T2to6ZvtwOKz29vZx26S6piTV1dXJ5/MlHpWVlVP5KgAAAAAAALDQlNeUknTelr6maY67ze9Y7Uefn+o1H3nkEXV3dyceTU1Nk+4/AAAAAAAArDWl3feKi4vldDrPG8HU1tZ23kinIfPmzRuzfUZGhoqKisZtk+qakuR2u+V2u6fSfQAAAAAAAMwQUxop5XK5tGLFCtXX1yedr6+v1+rVq8d8z6pVq85r//rrr6umpkaZmZnjtkl1TQAAAAAAANjblEZKSVJtba02btyompoarVq1Srt27VJjY6M2bdokKTatrrm5WX/84x8lxXba2759u2pra3XvvffqwIEDeu6555J21XvggQd000036amnntJ3vvMdvfLKK/r73/+u/fv3X6SvCQAAAAAAgJlkyqHU+vXr1dHRoSeeeEItLS1aunSpXn31VS1cuFCS1NLSosbGxkT76upqvfrqq3rwwQf1u9/9ThUVFfrNb36jO+64I9Fm9erVevnll/X4449r69atWrRokXbv3q2VK1dehK8IAAAAAACAmcYwh1Ydtzm/3y+fz6fu7m7l5eVZ3R0AADAL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",
"text/plain": [
"<Figure size 1200x500 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 8. Vẽ đồ thị loss, accuracy của training set và validation set\n",
"fig, axes = plt.subplots(1, 2, figsize=(12, 5))\n",
"numOfEpoch = 10\n",
"\n",
"axes[0].set_title('Loss')\n",
"axes[0].plot(np.arange(0, numOfEpoch), H.history['loss'], label='training')\n",
"axes[0].plot(np.arange(0, numOfEpoch), H.history['val_loss'], label='validation')\n",
"axes[0].legend()\n",
"\n",
"axes[1].set_title('Accuracy')\n",
"axes[1].plot(np.arange(0, numOfEpoch), H.history['accuracy'], label='training')\n",
"axes[1].plot(np.arange(0, numOfEpoch), H.history['val_accuracy'], label='validation')\n",
"axes[1].legend()\n",
"\n",
"fig.tight_layout()\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.03529682010412216, 0.9891999959945679]\n",
"Loss 0.035\n",
"Accuracy 0.989\n"
]
}
],
"source": [
"# 9. Đánh giá model với dữ liệu test set\n",
"score = model.evaluate(X_test, Y_test, verbose=0)\n",
"print(score)\n",
"print(f'Loss {score[0]:.3f}')\n",
"print(f'Accuracy {score[1]:.3f}')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.image.AxesImage at 0x283288a30>"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaEAAAGdCAYAAAC7EMwUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAZVUlEQVR4nO3df2hV9/3H8dfV6m3qbi7LNLk3M2ahKCvGufljaubvLwazTWrTgm1hxH9cu6ogaSt1Ugz+YYqglOF0rAynTDf3h3VuippVEytpRhQ7rXMuapwpGjJTe29M9Yr18/0jeOk1afRc7/WdmzwfcMGcez7ed08PPj3emxOfc84JAAADg6wHAAAMXEQIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCYecJ6gPvdvXtXV65cUSAQkM/nsx4HAOCRc04dHR3Kz8/XoEG9X+v0uQhduXJFBQUF1mMAAB5RS0uLRo4c2es+fe6f4wKBgPUIAIAUeJg/z9MWoc2bN6uoqEhPPvmkJk6cqA8//PCh1vFPcADQPzzMn+dpidCuXbu0YsUKrV69WidPntSMGTNUVlamy5cvp+PlAAAZypeOu2hPmTJFEyZM0JYtW+LbnnnmGS1cuFDV1dW9ro1GowoGg6keCQDwmEUiEWVnZ/e6T8qvhG7fvq0TJ06otLQ0YXtpaanq6+u77R+LxRSNRhMeAICBIeURunbtmr788kvl5eUlbM/Ly1Nra2u3/aurqxUMBuMPPhkHAANH2j6YcP8bUs65Ht+kWrVqlSKRSPzR0tKSrpEAAH1Myr9PaPjw4Ro8eHC3q562trZuV0eS5Pf75ff7Uz0GACADpPxKaOjQoZo4caJqamoSttfU1KikpCTVLwcAyGBpuWNCZWWlfvazn2nSpEmaNm2afvvb3+ry5ct69dVX0/FyAIAMlZYILVq0SO3t7Vq7dq2uXr2q4uJi7d+/X4WFhel4OQBAhkrL9wk9Cr5PCAD6B5PvEwIA4GERIQCAGSIEADBDhAAAZogQAMAMEQIAmCFCAAAzRAgAYIYIAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZogQAMAMEQIAmCFCAAAzRAgAYIYIAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZogQAMAMEQIAmCFCAAAzKY9QVVWVfD5fwiMUCqX6ZQAA/cAT6fhNx44dq7///e/xrwcPHpyOlwEAZLi0ROiJJ57g6gcA8EBpeU+oqalJ+fn5Kioq0osvvqiLFy9+7b6xWEzRaDThAQAYGFIeoSlTpmj79u06ePCg3nvvPbW2tqqkpETt7e097l9dXa1gMBh/FBQUpHokAEAf5XPOuXS+QGdnp55++mmtXLlSlZWV3Z6PxWKKxWLxr6PRKCECgH4gEokoOzu7133S8p7QVw0bNkzjxo1TU1NTj8/7/X75/f50jwEA6IPS/n1CsVhMZ8+eVTgcTvdLAQAyTMoj9MYbb6iurk7Nzc36xz/+oRdeeEHRaFQVFRWpfikAQIZL+T/Hffrpp3rppZd07do1jRgxQlOnTlVDQ4MKCwtT/VIAgAyX9g8meBWNRhUMBq3HAAA8oof5YAL3jgMAmCFCAAAzRAgAYIYIAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzKT9h9rh8XrhhRc8r1myZElSr3XlyhXPa27duuV5zY4dOzyvaW1t9bxGks6fP5/UOgDJ4UoIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZnzOOWc9xFdFo1EFg0HrMTLWxYsXPa/5zne+k/pBjHV0dCS17syZMymeBKn26aefel6zfv36pF7r+PHjSa1Dl0gkouzs7F734UoIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADDzhPUASK0lS5Z4XvO9730vqdc6e/as5zXPPPOM5zUTJkzwvGb27Nme10jS1KlTPa9paWnxvKagoMDzmsfpzp07ntf873//87wmHA57XpOMy5cvJ7WOG5imH1dCAAAzRAgAYIYIAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZbmDaz3zwwQePZU2yDhw48Fhe55vf/GZS677//e97XnPixAnPayZPnux5zeN069Ytz2v+85//eF6TzE1wc3JyPK+5cOGC5zV4PLgSAgCYIUIAADOeI3T06FEtWLBA+fn58vl82rNnT8LzzjlVVVUpPz9fWVlZmj17ts6cOZOqeQEA/YjnCHV2dmr8+PHatGlTj8+vX79eGzdu1KZNm9TY2KhQKKR58+apo6PjkYcFAPQvnj+YUFZWprKysh6fc87p3Xff1erVq1VeXi5J2rZtm/Ly8rRz50698sorjzYtAKBfSel7Qs3NzWptbVVpaWl8m9/v16xZs1RfX9/jmlgspmg0mvAAAAwMKY1Qa2urJCkvLy9he15eXvy5+1VXVysYDMYfBQUFqRwJANCHpeXTcT6fL+Fr51y3bfesWrVKkUgk/mhpaUnHSACAPiil36waCoUkdV0RhcPh+Pa2trZuV0f3+P1++f3+VI4BAMgQKb0SKioqUigUUk1NTXzb7du3VVdXp5KSklS+FACgH/B8JXTjxg2dP38+/nVzc7M+/vhj5eTkaNSoUVqxYoXWrVun0aNHa/To0Vq3bp2eeuopvfzyyykdHACQ+TxH6Pjx45ozZ07868rKSklSRUWFfv/732vlypW6efOmXnvtNV2/fl1TpkzRoUOHFAgEUjc1AKBf8DnnnPUQXxWNRhUMBq3HAODR888/73nNn//8Z89rPvnkE89rvvoXZy8+++yzpNahSyQSUXZ2dq/7cO84AIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZogQAMAMEQIAmEnpT1YF0D/k5uZ6XrN582bPawYN8v734LVr13pew92w+y6uhAAAZogQAMAMEQIAmCFCAAAzRAgAYIYIAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM9zAFEA3S5cu9bxmxIgRntdcv37d85pz5855XoO+iyshAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZogQAMAMNzAF+rEf/ehHSa176623UjxJzxYuXOh5zSeffJL6QWCGKyEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAw3MAX6sR//+MdJrRsyZIjnNR988IHnNR999JHnNehfuBICAJghQgAAM54jdPToUS1YsED5+fny+Xzas2dPwvOLFy+Wz+dLeEydOjVV8wIA+hHPEers7NT48eO1adOmr91n/vz5unr1avyxf//+RxoSANA/ef5gQllZmcrKynrdx+/3KxQKJT0UAGBgSMt7QrW1tcrNzdWYMWO0ZMkStbW1fe2+sVhM0Wg04QEAGBhSHqGysjLt2LFDhw8f1oYNG9TY2Ki5c+cqFov1uH91dbWCwWD8UVBQkOqRAAB9VMq/T2jRokXxXxcXF2vSpEkqLCzUvn37VF5e3m3/VatWqbKyMv51NBolRAAwQKT9m1XD4bAKCwvV1NTU4/N+v19+vz/dYwAA+qC0f59Qe3u7WlpaFA6H0/1SAIAM4/lK6MaNGzp//nz86+bmZn388cfKyclRTk6Oqqqq9PzzzyscDuvSpUv65S9/qeHDh+u5555L6eAAgMznOULHjx/XnDlz4l/fez+noqJCW7Zs0enTp7V9+3Z9/vnnCofDmjNnjnbt2qVAIJC6qQEA/YLPOeesh/iqaDSqYDBoPQbQ52RlZXlec+zYsaRea+zYsZ7XzJ071/Oa+vp6z2uQOSKRiLKzs3vdh3vHAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwEzaf7IqgNR48803Pa/5wQ9+kNRrHThwwPMa7oiNZHAlBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCY4QamgIGf/OQnnte8/fbbntdEo1HPayRp7dq1Sa0DvOJKCABghggBAMwQIQCAGSIEADBDhAAAZogQAMAMEQIAmCFCAAAzRAgAYIYIAQDMECEAgBkiBAAwww1MgUf0rW99y/OaX/3qV57XDB482POa/fv3e14jSQ0NDUmtA7ziSggAYIYIAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMMMNTIGvSOYmoQcOHPC8pqioyPOaCxcueF7z9ttve14DPE5cCQEAzBAhAIAZTxGqrq7W5MmTFQgElJubq4ULF+rcuXMJ+zjnVFVVpfz8fGVlZWn27Nk6c+ZMSocGAPQPniJUV1enpUuXqqGhQTU1Nbpz545KS0vV2dkZ32f9+vXauHGjNm3apMbGRoVCIc2bN08dHR0pHx4AkNk8fTDh/jdgt27dqtzcXJ04cUIzZ86Uc07vvvuuVq9erfLycknStm3blJeXp507d+qVV15J3eQAgIz3SO8JRSIRSVJOTo4kqbm5Wa2trSotLY3v4/f7NWvWLNXX1/f4e8RiMUWj0YQHAGBgSDpCzjlVVlZq+vTpKi4uliS1trZKkvLy8hL2zcvLiz93v+rqagWDwfijoKAg2ZEAABkm6QgtW7ZMp06d0h//+Mduz/l8voSvnXPdtt2zatUqRSKR+KOlpSXZkQAAGSapb1Zdvny59u7dq6NHj2rkyJHx7aFQSFLXFVE4HI5vb2tr63Z1dI/f75ff709mDABAhvN0JeSc07Jly7R7924dPny423d9FxUVKRQKqaamJr7t9u3bqqurU0lJSWomBgD0G56uhJYuXaqdO3fqL3/5iwKBQPx9nmAwqKysLPl8Pq1YsULr1q3T6NGjNXr0aK1bt05PPfWUXn755bT8BwAAMpenCG3ZskWSNHv27ITtW7du1eLFiyVJK1eu1M2bN/Xaa6/p+vXrmjJlig4dOqRAIJCSgQEA/YfPOeesh/iqaDSqYDBoPQYGqDFjxnhe8+9//zsNk3T37LPPel7z17/+NQ2TAA8nEokoOzu71324dxwAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZogQAMAMEQIAmCFCAAAzRAgAYIYIAQDMJPWTVYG+rrCwMKl1hw4dSvEkPXvzzTc9r/nb3/6WhkkAW1wJAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABmuIEp+qWf//znSa0bNWpUiifpWV1dnec1zrk0TALY4koIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADDDDUzR502fPt3zmuXLl6dhEgCpxpUQAMAMEQIAmCFCAAAzRAgAYIYIAQDMECEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGG5iiz5sxY4bnNd/4xjfSMEnPLly44HnNjRs30jAJkHm4EgIAmCFCAAAzniJUXV2tyZMnKxAIKDc3VwsXLtS5c+cS9lm8eLF8Pl/CY+rUqSkdGgDQP3iKUF1dnZYuXaqGhgbV1NTozp07Ki0tVWdnZ8J+8+fP19WrV+OP/fv3p3RoAED/4OmDCQcOHEj4euvWrcrNzdWJEyc0c+bM+Ha/369QKJSaCQEA/dYjvScUiUQkSTk5OQnba2trlZubqzFjxmjJkiVqa2v72t8jFospGo0mPAAAA0PSEXLOqbKyUtOnT1dxcXF8e1lZmXbs2KHDhw9rw4YNamxs1Ny5cxWLxXr8faqrqxUMBuOPgoKCZEcCAGSYpL9PaNmyZTp16pSOHTuWsH3RokXxXxcXF2vSpEkqLCzUvn37VF5e3u33WbVqlSorK+NfR6NRQgQAA0RSEVq+fLn27t2ro0ePauTIkb3uGw6HVVhYqKamph6f9/v98vv9yYwBAMhwniLknNPy5cv1/vvvq7a2VkVFRQ9c097erpaWFoXD4aSHBAD0T57eE1q6dKn+8Ic/aOfOnQoEAmptbVVra6tu3rwpqetWJG+88YY++ugjXbp0SbW1tVqwYIGGDx+u5557Li3/AQCAzOXpSmjLli2SpNmzZyds37p1qxYvXqzBgwfr9OnT2r59uz7//HOFw2HNmTNHu3btUiAQSNnQAID+wfM/x/UmKytLBw8efKSBAAADB3fRBr7in//8p+c1//d//+d5zWeffeZ5DdAfcQNTAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABghggBAMwQIQCAGSIEADBDhAAAZogQAMCMzz3o1tiPWTQaVTAYtB4DAPCIIpGIsrOze92HKyEAgBkiBAAwQ4QAAGaIEADADBECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABm+lyE+tit7AAASXqYP8/7XIQ6OjqsRwAApMDD/Hne5+6ifffuXV25ckWBQEA+ny/huWg0qoKCArW0tDzwzqz9GcehC8ehC8ehC8ehS184Ds45dXR0KD8/X4MG9X6t88RjmumhDRo0SCNHjux1n+zs7AF9kt3DcejCcejCcejCcehifRwe9kfy9Ll/jgMADBxECABgJqMi5Pf7tWbNGvn9futRTHEcunAcunAcunAcumTacehzH0wAAAwcGXUlBADoX4gQAMAMEQIAmCFCAAAzGRWhzZs3q6ioSE8++aQmTpyoDz/80Hqkx6qqqko+ny/hEQqFrMdKu6NHj2rBggXKz8+Xz+fTnj17Ep53zqmqqkr5+fnKysrS7NmzdebMGZth0+hBx2Hx4sXdzo+pU6faDJsm1dXVmjx5sgKBgHJzc7Vw4UKdO3cuYZ+BcD48zHHIlPMhYyK0a9curVixQqtXr9bJkyc1Y8YMlZWV6fLly9ajPVZjx47V1atX44/Tp09bj5R2nZ2dGj9+vDZt2tTj8+vXr9fGjRu1adMmNTY2KhQKad68ef3uPoQPOg6SNH/+/ITzY//+/Y9xwvSrq6vT0qVL1dDQoJqaGt25c0elpaXq7OyM7zMQzoeHOQ5ShpwPLkP88Ic/dK+++mrCtu9+97vurbfeMpro8VuzZo0bP3689RimJLn3338//vXdu3ddKBRy77zzTnzbrVu3XDAYdL/5zW8MJnw87j8OzjlXUVHhnn32WZN5rLS1tTlJrq6uzjk3cM+H+4+Dc5lzPmTEldDt27d14sQJlZaWJmwvLS1VfX290VQ2mpqalJ+fr6KiIr344ou6ePGi9Uimmpub1dramnBu+P1+zZo1a8CdG5JUW1ur3NxcjRkzRkuWLFFbW5v1SGkViUQkSTk5OZIG7vlw/3G4JxPOh4yI0LVr1/Tll18qLy8vYXteXp5aW1uNpnr8pkyZou3bt+vgwYN677331NraqpKSErW3t1uPZube//+Bfm5IUllZmXbs2KHDhw9rw4YNamxs1Ny5cxWLxaxHSwvnnCorKzV9+nQVFxdLGpjnQ0/HQcqc86HP3UW7N/f/aAfnXLdt/VlZWVn81+PGjdO0adP09NNPa9u2baqsrDSczN5APzckadGiRfFfFxcXa9KkSSosLNS+fftUXl5uOFl6LFu2TKdOndKxY8e6PTeQzoevOw6Zcj5kxJXQ8OHDNXjw4G5/k2lra+v2N56BZNiwYRo3bpyampqsRzFz79OBnBvdhcNhFRYW9svzY/ny5dq7d6+OHDmS8KNfBtr58HXHoSd99XzIiAgNHTpUEydOVE1NTcL2mpoalZSUGE1lLxaL6ezZswqHw9ajmCkqKlIoFEo4N27fvq26uroBfW5IUnt7u1paWvrV+eGc07Jly7R7924dPnxYRUVFCc8PlPPhQcehJ332fDD8UIQnf/rTn9yQIUPc7373O/evf/3LrVixwg0bNsxdunTJerTH5vXXX3e1tbXu4sWLrqGhwf30pz91gUCg3x+Djo4Od/LkSXfy5EknyW3cuNGdPHnS/fe//3XOOffOO++4YDDodu/e7U6fPu1eeuklFw6HXTQaNZ48tXo7Dh0dHe7111939fX1rrm52R05csRNmzbNffvb3+5Xx+EXv/iFCwaDrra21l29ejX++OKLL+L7DITz4UHHIZPOh4yJkHPO/frXv3aFhYVu6NChbsKECQkfRxwIFi1a5MLhsBsyZIjLz8935eXl7syZM9Zjpd2RI0ecpG6PiooK51zXx3LXrFnjQqGQ8/v9bubMme706dO2Q6dBb8fhiy++cKWlpW7EiBFuyJAhbtSoUa6iosJdvnzZeuyU6um/X5LbunVrfJ+BcD486Dhk0vnAj3IAAJjJiPeEAAD9ExECAJghQgAAM0QIAGCGCAEAzBAhAIAZIgQAMEOEAABmiBAAwAwRAgCYIUIAADNECABg5v8B02GnBBZO5SYAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 10 Dự đoán ảnh\n",
"plt.imshow(X_test[0].reshape(28, 28), cmap='gray')"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1/1 [==============================] - 0s 15ms/step\n",
"Giá trị dự đoán 7\n"
]
}
],
"source": [
"# 10 Dự đoán ảnh\n",
"y_predict = model.predict(X_test[[0]])\n",
"print('Giá trị dự đoán', np.argmax(y_predict))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.9.17"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment