Buckets:

download
raw
90.8 kB
{
"cells": [
{
"cell_type": "markdown",
"id": "8bdf6943-c8af-46a2-a1c1-e7a1b2b36b01",
"metadata": {
"id": "8bdf6943-c8af-46a2-a1c1-e7a1b2b36b01"
},
"source": [
"This notebook implementation incorporates elements from [this](https://keras.io/examples/vision/mnist_convnet/) Keras example."
]
},
{
"cell_type": "code",
"source": [
"!pip install rkan"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Pob05dFgsNwJ",
"outputId": "0f2c9bf7-95ad-45d6-9fc0-c067cdd155a3"
},
"id": "Pob05dFgsNwJ",
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Collecting rkan\n",
" Downloading rkan-0.0.3-py3-none-any.whl.metadata (3.2 kB)\n",
"Downloading rkan-0.0.3-py3-none-any.whl (7.3 kB)\n",
"Installing collected packages: rkan\n",
"Successfully installed rkan-0.0.3\n"
]
}
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0171f9c5-10dc-4a62-a973-06cced1558c6",
"metadata": {
"execution": {
"iopub.execute_input": "2024-06-21T00:03:34.138314Z",
"iopub.status.busy": "2024-06-21T00:03:34.137790Z",
"iopub.status.idle": "2024-06-21T00:03:34.790335Z",
"shell.execute_reply": "2024-06-21T00:03:34.787670Z",
"shell.execute_reply.started": "2024-06-21T00:03:34.138276Z"
},
"id": "0171f9c5-10dc-4a62-a973-06cced1558c6"
},
"outputs": [],
"source": [
"import numpy as np\n",
"import tensorflow as tf\n",
"import tensorflow.keras as keras\n",
"from rkan.tensorflow import JacobiRKAN\n",
"from sklearn.model_selection import train_test_split\n",
"from tensorflow.keras import layers"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "2faaf524-0295-4428-a09b-ffaa59e8d9d2",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2faaf524-0295-4428-a09b-ffaa59e8d9d2",
"outputId": "e8ce932c-980e-4ab2-d879-217328106e0a"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz\n",
"\u001b[1m11490434/11490434\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n"
]
}
],
"source": [
"# Model / data parameters\n",
"num_classes = 10\n",
"input_shape = (28, 28, 1)\n",
"\n",
"# Load the data and split it between train and test sets\n",
"(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()\n",
"\n",
"# Scale images to the [0, 1] range\n",
"x_train = x_train.astype(\"float32\") / 255\n",
"x_test = x_test.astype(\"float32\") / 255\n",
"# Make sure images have shape (28, 28, 1)\n",
"x_train = np.expand_dims(x_train, -1)\n",
"x_test = np.expand_dims(x_test, -1)\n",
"\n",
"\n",
"# assume x_train is your original dataset\n",
"x_train, x_valid, y_train, y_valid = train_test_split(\n",
" x_train, y_train, test_size=0.1, random_state=42\n",
")\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)\n",
"y_valid = keras.utils.to_categorical(y_valid, num_classes)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "de03cb3d-0a49-4b2f-b584-cb887460eaa5",
"metadata": {
"id": "de03cb3d-0a49-4b2f-b584-cb887460eaa5"
},
"outputs": [],
"source": [
"batch_size = 512\n",
"epochs = 30"
]
},
{
"cell_type": "markdown",
"id": "c06b037a-a833-460a-8dd3-d0db1cce6b7c",
"metadata": {
"id": "c06b037a-a833-460a-8dd3-d0db1cce6b7c"
},
"source": [
"If using a predefined Keras activation function, replace each `fJNB(q)` with: `layers.Activation(activation)`"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d8313a23-8eae-488a-95ac-18b3d431e352",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "d8313a23-8eae-488a-95ac-18b3d431e352",
"outputId": "a131c96a-46c0-4037-a297-060611da00b5"
},
"outputs": [
{
"metadata": {
"tags": null
},
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python3.11/dist-packages/keras/src/layers/core/input_layer.py:27: UserWarning: Argument `input_shape` is deprecated. Use `shape` instead.\n",
" warnings.warn(\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 53ms/step - accuracy: 0.4880 - loss: 1.5656 - val_accuracy: 0.9463 - val_loss: 0.2003\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 13ms/step - accuracy: 0.9323 - loss: 0.2187 - val_accuracy: 0.9703 - val_loss: 0.1088\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9572 - loss: 0.1401 - val_accuracy: 0.9783 - val_loss: 0.0821\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9650 - loss: 0.1142 - val_accuracy: 0.9792 - val_loss: 0.0723\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9704 - loss: 0.0954 - val_accuracy: 0.9832 - val_loss: 0.0598\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9738 - loss: 0.0806 - val_accuracy: 0.9848 - val_loss: 0.0545\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9778 - loss: 0.0711 - val_accuracy: 0.9858 - val_loss: 0.0494\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9793 - loss: 0.0664 - val_accuracy: 0.9872 - val_loss: 0.0454\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9802 - loss: 0.0636 - val_accuracy: 0.9872 - val_loss: 0.0434\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9820 - loss: 0.0571 - val_accuracy: 0.9885 - val_loss: 0.0394\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9835 - loss: 0.0519 - val_accuracy: 0.9873 - val_loss: 0.0411\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9838 - loss: 0.0507 - val_accuracy: 0.9895 - val_loss: 0.0372\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9848 - loss: 0.0489 - val_accuracy: 0.9893 - val_loss: 0.0349\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9851 - loss: 0.0470 - val_accuracy: 0.9893 - val_loss: 0.0341\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9882 - loss: 0.0415 - val_accuracy: 0.9892 - val_loss: 0.0353\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9852 - loss: 0.0440 - val_accuracy: 0.9907 - val_loss: 0.0324\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9873 - loss: 0.0387 - val_accuracy: 0.9902 - val_loss: 0.0321\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9876 - loss: 0.0393 - val_accuracy: 0.9898 - val_loss: 0.0322\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9895 - loss: 0.0340 - val_accuracy: 0.9902 - val_loss: 0.0304\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9890 - loss: 0.0345 - val_accuracy: 0.9910 - val_loss: 0.0285\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9884 - loss: 0.0334 - val_accuracy: 0.9898 - val_loss: 0.0290\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9891 - loss: 0.0343 - val_accuracy: 0.9913 - val_loss: 0.0286\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9899 - loss: 0.0305 - val_accuracy: 0.9910 - val_loss: 0.0279\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9905 - loss: 0.0286 - val_accuracy: 0.9913 - val_loss: 0.0288\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9909 - loss: 0.0273 - val_accuracy: 0.9915 - val_loss: 0.0261\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9913 - loss: 0.0264 - val_accuracy: 0.9907 - val_loss: 0.0287\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9899 - loss: 0.0306 - val_accuracy: 0.9920 - val_loss: 0.0256\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9905 - loss: 0.0281 - val_accuracy: 0.9908 - val_loss: 0.0285\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9914 - loss: 0.0257 - val_accuracy: 0.9915 - val_loss: 0.0285\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9916 - loss: 0.0244 - val_accuracy: 0.9920 - val_loss: 0.0267\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9895 - loss: 0.0260\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 52ms/step - accuracy: 0.6712 - loss: 1.0285 - val_accuracy: 0.9643 - val_loss: 0.1423\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9547 - loss: 0.1557 - val_accuracy: 0.9780 - val_loss: 0.0827\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9705 - loss: 0.0998 - val_accuracy: 0.9823 - val_loss: 0.0658\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9764 - loss: 0.0782 - val_accuracy: 0.9857 - val_loss: 0.0567\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9795 - loss: 0.0668 - val_accuracy: 0.9877 - val_loss: 0.0491\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9807 - loss: 0.0610 - val_accuracy: 0.9875 - val_loss: 0.0457\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9827 - loss: 0.0556 - val_accuracy: 0.9870 - val_loss: 0.0448\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9852 - loss: 0.0486 - val_accuracy: 0.9873 - val_loss: 0.0429\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 12ms/step - accuracy: 0.9845 - loss: 0.0496 - val_accuracy: 0.9887 - val_loss: 0.0406\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9863 - loss: 0.0425 - val_accuracy: 0.9895 - val_loss: 0.0392\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9877 - loss: 0.0383 - val_accuracy: 0.9887 - val_loss: 0.0394\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9876 - loss: 0.0380 - val_accuracy: 0.9900 - val_loss: 0.0370\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9876 - loss: 0.0385 - val_accuracy: 0.9900 - val_loss: 0.0376\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 12ms/step - accuracy: 0.9894 - loss: 0.0338 - val_accuracy: 0.9890 - val_loss: 0.0374\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9900 - loss: 0.0324 - val_accuracy: 0.9907 - val_loss: 0.0365\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 12ms/step - accuracy: 0.9897 - loss: 0.0317 - val_accuracy: 0.9898 - val_loss: 0.0358\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9895 - loss: 0.0313 - val_accuracy: 0.9902 - val_loss: 0.0346\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9907 - loss: 0.0288 - val_accuracy: 0.9905 - val_loss: 0.0351\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9901 - loss: 0.0286 - val_accuracy: 0.9908 - val_loss: 0.0360\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9921 - loss: 0.0253 - val_accuracy: 0.9898 - val_loss: 0.0348\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9901 - loss: 0.0282 - val_accuracy: 0.9912 - val_loss: 0.0318\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9910 - loss: 0.0258 - val_accuracy: 0.9913 - val_loss: 0.0327\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9925 - loss: 0.0230 - val_accuracy: 0.9902 - val_loss: 0.0331\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9925 - loss: 0.0220 - val_accuracy: 0.9908 - val_loss: 0.0312\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 12ms/step - accuracy: 0.9929 - loss: 0.0224 - val_accuracy: 0.9910 - val_loss: 0.0327\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 12ms/step - accuracy: 0.9925 - loss: 0.0214 - val_accuracy: 0.9915 - val_loss: 0.0305\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 12ms/step - accuracy: 0.9931 - loss: 0.0213 - val_accuracy: 0.9905 - val_loss: 0.0323\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9928 - loss: 0.0212 - val_accuracy: 0.9900 - val_loss: 0.0329\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9938 - loss: 0.0189 - val_accuracy: 0.9903 - val_loss: 0.0349\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9939 - loss: 0.0186 - val_accuracy: 0.9913 - val_loss: 0.0323\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9900 - loss: 0.0298\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 66ms/step - accuracy: 0.4643 - loss: 1.5997 - val_accuracy: 0.9127 - val_loss: 0.3012\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9029 - loss: 0.3181 - val_accuracy: 0.9620 - val_loss: 0.1492\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9451 - loss: 0.1818 - val_accuracy: 0.9708 - val_loss: 0.1075\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9594 - loss: 0.1360 - val_accuracy: 0.9755 - val_loss: 0.0873\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9645 - loss: 0.1148 - val_accuracy: 0.9780 - val_loss: 0.0763\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9694 - loss: 0.1024 - val_accuracy: 0.9797 - val_loss: 0.0723\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9715 - loss: 0.0894 - val_accuracy: 0.9808 - val_loss: 0.0674\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9744 - loss: 0.0819 - val_accuracy: 0.9823 - val_loss: 0.0606\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 13ms/step - accuracy: 0.9752 - loss: 0.0781 - val_accuracy: 0.9840 - val_loss: 0.0567\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9787 - loss: 0.0704 - val_accuracy: 0.9825 - val_loss: 0.0596\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9801 - loss: 0.0654 - val_accuracy: 0.9847 - val_loss: 0.0517\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9802 - loss: 0.0635 - val_accuracy: 0.9860 - val_loss: 0.0524\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9802 - loss: 0.0611 - val_accuracy: 0.9853 - val_loss: 0.0516\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 13ms/step - accuracy: 0.9827 - loss: 0.0563 - val_accuracy: 0.9868 - val_loss: 0.0474\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9811 - loss: 0.0573 - val_accuracy: 0.9863 - val_loss: 0.0496\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9832 - loss: 0.0517 - val_accuracy: 0.9863 - val_loss: 0.0457\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9856 - loss: 0.0467 - val_accuracy: 0.9873 - val_loss: 0.0456\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 13ms/step - accuracy: 0.9843 - loss: 0.0470 - val_accuracy: 0.9867 - val_loss: 0.0491\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9846 - loss: 0.0486 - val_accuracy: 0.9862 - val_loss: 0.0466\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9855 - loss: 0.0449 - val_accuracy: 0.9885 - val_loss: 0.0438\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 13ms/step - accuracy: 0.9857 - loss: 0.0428 - val_accuracy: 0.9888 - val_loss: 0.0397\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9867 - loss: 0.0426 - val_accuracy: 0.9888 - val_loss: 0.0400\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9867 - loss: 0.0392 - val_accuracy: 0.9885 - val_loss: 0.0401\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9866 - loss: 0.0408 - val_accuracy: 0.9890 - val_loss: 0.0384\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9875 - loss: 0.0363 - val_accuracy: 0.9895 - val_loss: 0.0377\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 13ms/step - accuracy: 0.9871 - loss: 0.0382 - val_accuracy: 0.9893 - val_loss: 0.0374\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9879 - loss: 0.0355 - val_accuracy: 0.9888 - val_loss: 0.0395\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9884 - loss: 0.0342 - val_accuracy: 0.9892 - val_loss: 0.0402\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9882 - loss: 0.0346 - val_accuracy: 0.9892 - val_loss: 0.0407\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9902 - loss: 0.0301 - val_accuracy: 0.9888 - val_loss: 0.0350\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 6ms/step - accuracy: 0.9900 - loss: 0.0332\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 86ms/step - accuracy: 0.6839 - loss: 1.0052 - val_accuracy: 0.9633 - val_loss: 0.1405\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 15ms/step - accuracy: 0.9592 - loss: 0.1448 - val_accuracy: 0.9772 - val_loss: 0.0851\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9703 - loss: 0.1009 - val_accuracy: 0.9843 - val_loss: 0.0637\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9776 - loss: 0.0771 - val_accuracy: 0.9843 - val_loss: 0.0566\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9821 - loss: 0.0626 - val_accuracy: 0.9862 - val_loss: 0.0486\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9823 - loss: 0.0597 - val_accuracy: 0.9883 - val_loss: 0.0443\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9839 - loss: 0.0509 - val_accuracy: 0.9883 - val_loss: 0.0431\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9859 - loss: 0.0455 - val_accuracy: 0.9887 - val_loss: 0.0390\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9875 - loss: 0.0395 - val_accuracy: 0.9890 - val_loss: 0.0382\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9867 - loss: 0.0435 - val_accuracy: 0.9895 - val_loss: 0.0381\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9892 - loss: 0.0347 - val_accuracy: 0.9898 - val_loss: 0.0359\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 17ms/step - accuracy: 0.9889 - loss: 0.0348 - val_accuracy: 0.9900 - val_loss: 0.0350\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 17ms/step - accuracy: 0.9898 - loss: 0.0320 - val_accuracy: 0.9900 - val_loss: 0.0365\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9905 - loss: 0.0312 - val_accuracy: 0.9903 - val_loss: 0.0343\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9901 - loss: 0.0302 - val_accuracy: 0.9907 - val_loss: 0.0335\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9916 - loss: 0.0277 - val_accuracy: 0.9898 - val_loss: 0.0341\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9902 - loss: 0.0297 - val_accuracy: 0.9908 - val_loss: 0.0312\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9918 - loss: 0.0255 - val_accuracy: 0.9907 - val_loss: 0.0332\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9906 - loss: 0.0267 - val_accuracy: 0.9903 - val_loss: 0.0330\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9920 - loss: 0.0248 - val_accuracy: 0.9910 - val_loss: 0.0314\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9937 - loss: 0.0204 - val_accuracy: 0.9897 - val_loss: 0.0326\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9919 - loss: 0.0248 - val_accuracy: 0.9915 - val_loss: 0.0297\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9927 - loss: 0.0213 - val_accuracy: 0.9905 - val_loss: 0.0301\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9924 - loss: 0.0230 - val_accuracy: 0.9893 - val_loss: 0.0327\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9927 - loss: 0.0219 - val_accuracy: 0.9908 - val_loss: 0.0298\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9931 - loss: 0.0211 - val_accuracy: 0.9917 - val_loss: 0.0303\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9930 - loss: 0.0200 - val_accuracy: 0.9920 - val_loss: 0.0306\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9938 - loss: 0.0180 - val_accuracy: 0.9912 - val_loss: 0.0317\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 17ms/step - accuracy: 0.9937 - loss: 0.0197 - val_accuracy: 0.9908 - val_loss: 0.0330\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9943 - loss: 0.0175 - val_accuracy: 0.9908 - val_loss: 0.0310\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9882 - loss: 0.0308\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 67ms/step - accuracy: 0.6591 - loss: 1.0644 - val_accuracy: 0.9623 - val_loss: 0.1540\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9527 - loss: 0.1664 - val_accuracy: 0.9758 - val_loss: 0.0914\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9680 - loss: 0.1085 - val_accuracy: 0.9808 - val_loss: 0.0699\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9749 - loss: 0.0847 - val_accuracy: 0.9840 - val_loss: 0.0589\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9794 - loss: 0.0725 - val_accuracy: 0.9863 - val_loss: 0.0502\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9811 - loss: 0.0619 - val_accuracy: 0.9873 - val_loss: 0.0457\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9832 - loss: 0.0557 - val_accuracy: 0.9888 - val_loss: 0.0405\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9846 - loss: 0.0497 - val_accuracy: 0.9883 - val_loss: 0.0383\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9861 - loss: 0.0457 - val_accuracy: 0.9892 - val_loss: 0.0356\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9873 - loss: 0.0408 - val_accuracy: 0.9892 - val_loss: 0.0356\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9872 - loss: 0.0416 - val_accuracy: 0.9903 - val_loss: 0.0331\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9875 - loss: 0.0409 - val_accuracy: 0.9903 - val_loss: 0.0325\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9887 - loss: 0.0345 - val_accuracy: 0.9905 - val_loss: 0.0311\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9887 - loss: 0.0342 - val_accuracy: 0.9908 - val_loss: 0.0306\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9884 - loss: 0.0348 - val_accuracy: 0.9907 - val_loss: 0.0300\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9903 - loss: 0.0293 - val_accuracy: 0.9902 - val_loss: 0.0299\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9901 - loss: 0.0311 - val_accuracy: 0.9913 - val_loss: 0.0273\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9919 - loss: 0.0262 - val_accuracy: 0.9905 - val_loss: 0.0289\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9911 - loss: 0.0277 - val_accuracy: 0.9907 - val_loss: 0.0284\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9911 - loss: 0.0288 - val_accuracy: 0.9915 - val_loss: 0.0274\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9921 - loss: 0.0250 - val_accuracy: 0.9915 - val_loss: 0.0278\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9917 - loss: 0.0253 - val_accuracy: 0.9928 - val_loss: 0.0266\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9924 - loss: 0.0246 - val_accuracy: 0.9928 - val_loss: 0.0267\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9922 - loss: 0.0244 - val_accuracy: 0.9915 - val_loss: 0.0295\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9923 - loss: 0.0231 - val_accuracy: 0.9922 - val_loss: 0.0254\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9923 - loss: 0.0220 - val_accuracy: 0.9923 - val_loss: 0.0273\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9923 - loss: 0.0232 - val_accuracy: 0.9918 - val_loss: 0.0267\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9923 - loss: 0.0227 - val_accuracy: 0.9922 - val_loss: 0.0279\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9938 - loss: 0.0189 - val_accuracy: 0.9927 - val_loss: 0.0255\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9925 - loss: 0.0209 - val_accuracy: 0.9922 - val_loss: 0.0256\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9920 - loss: 0.0274\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 50ms/step - accuracy: 0.4341 - loss: 1.7017 - val_accuracy: 0.9468 - val_loss: 0.2087\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9307 - loss: 0.2319 - val_accuracy: 0.9707 - val_loss: 0.1097\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9549 - loss: 0.1465 - val_accuracy: 0.9762 - val_loss: 0.0841\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9654 - loss: 0.1143 - val_accuracy: 0.9812 - val_loss: 0.0701\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9706 - loss: 0.0957 - val_accuracy: 0.9838 - val_loss: 0.0634\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9734 - loss: 0.0858 - val_accuracy: 0.9818 - val_loss: 0.0624\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9742 - loss: 0.0807 - val_accuracy: 0.9848 - val_loss: 0.0550\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9757 - loss: 0.0749 - val_accuracy: 0.9868 - val_loss: 0.0523\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9787 - loss: 0.0671 - val_accuracy: 0.9880 - val_loss: 0.0468\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9811 - loss: 0.0584 - val_accuracy: 0.9873 - val_loss: 0.0455\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9812 - loss: 0.0588 - val_accuracy: 0.9880 - val_loss: 0.0457\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9826 - loss: 0.0543 - val_accuracy: 0.9883 - val_loss: 0.0414\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9832 - loss: 0.0531 - val_accuracy: 0.9893 - val_loss: 0.0396\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9848 - loss: 0.0490 - val_accuracy: 0.9893 - val_loss: 0.0389\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9863 - loss: 0.0435 - val_accuracy: 0.9902 - val_loss: 0.0348\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9850 - loss: 0.0462 - val_accuracy: 0.9892 - val_loss: 0.0353\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9873 - loss: 0.0416 - val_accuracy: 0.9902 - val_loss: 0.0347\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9871 - loss: 0.0397 - val_accuracy: 0.9908 - val_loss: 0.0329\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9879 - loss: 0.0380 - val_accuracy: 0.9907 - val_loss: 0.0318\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9885 - loss: 0.0363 - val_accuracy: 0.9900 - val_loss: 0.0309\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9890 - loss: 0.0336 - val_accuracy: 0.9908 - val_loss: 0.0313\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9892 - loss: 0.0326 - val_accuracy: 0.9910 - val_loss: 0.0293\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9893 - loss: 0.0331 - val_accuracy: 0.9902 - val_loss: 0.0298\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9890 - loss: 0.0343 - val_accuracy: 0.9910 - val_loss: 0.0292\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9899 - loss: 0.0290 - val_accuracy: 0.9908 - val_loss: 0.0291\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9903 - loss: 0.0292 - val_accuracy: 0.9912 - val_loss: 0.0280\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9910 - loss: 0.0291 - val_accuracy: 0.9920 - val_loss: 0.0267\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9910 - loss: 0.0276 - val_accuracy: 0.9917 - val_loss: 0.0252\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9916 - loss: 0.0274 - val_accuracy: 0.9917 - val_loss: 0.0270\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9910 - loss: 0.0263 - val_accuracy: 0.9917 - val_loss: 0.0255\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9914 - loss: 0.0266\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 51ms/step - accuracy: 0.7027 - loss: 0.9685 - val_accuracy: 0.9683 - val_loss: 0.1274\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9608 - loss: 0.1396 - val_accuracy: 0.9807 - val_loss: 0.0770\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9722 - loss: 0.0954 - val_accuracy: 0.9832 - val_loss: 0.0616\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9774 - loss: 0.0750 - val_accuracy: 0.9855 - val_loss: 0.0519\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9818 - loss: 0.0631 - val_accuracy: 0.9845 - val_loss: 0.0507\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9817 - loss: 0.0574 - val_accuracy: 0.9870 - val_loss: 0.0462\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9845 - loss: 0.0494 - val_accuracy: 0.9877 - val_loss: 0.0417\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9847 - loss: 0.0487 - val_accuracy: 0.9883 - val_loss: 0.0413\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9865 - loss: 0.0426 - val_accuracy: 0.9895 - val_loss: 0.0387\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9863 - loss: 0.0436 - val_accuracy: 0.9892 - val_loss: 0.0372\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9881 - loss: 0.0389 - val_accuracy: 0.9903 - val_loss: 0.0356\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9880 - loss: 0.0371 - val_accuracy: 0.9893 - val_loss: 0.0370\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 12ms/step - accuracy: 0.9885 - loss: 0.0345 - val_accuracy: 0.9893 - val_loss: 0.0364\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9890 - loss: 0.0335 - val_accuracy: 0.9900 - val_loss: 0.0348\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9897 - loss: 0.0309 - val_accuracy: 0.9908 - val_loss: 0.0346\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9902 - loss: 0.0301 - val_accuracy: 0.9897 - val_loss: 0.0347\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9909 - loss: 0.0281 - val_accuracy: 0.9910 - val_loss: 0.0330\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9908 - loss: 0.0302 - val_accuracy: 0.9908 - val_loss: 0.0310\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9916 - loss: 0.0266 - val_accuracy: 0.9903 - val_loss: 0.0338\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9918 - loss: 0.0263 - val_accuracy: 0.9907 - val_loss: 0.0325\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9917 - loss: 0.0260 - val_accuracy: 0.9913 - val_loss: 0.0321\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9928 - loss: 0.0234 - val_accuracy: 0.9913 - val_loss: 0.0308\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9913 - loss: 0.0250 - val_accuracy: 0.9913 - val_loss: 0.0293\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9930 - loss: 0.0214 - val_accuracy: 0.9907 - val_loss: 0.0304\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9922 - loss: 0.0219 - val_accuracy: 0.9908 - val_loss: 0.0313\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9926 - loss: 0.0217 - val_accuracy: 0.9923 - val_loss: 0.0303\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9927 - loss: 0.0216 - val_accuracy: 0.9920 - val_loss: 0.0293\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9933 - loss: 0.0211 - val_accuracy: 0.9907 - val_loss: 0.0302\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 11ms/step - accuracy: 0.9937 - loss: 0.0190 - val_accuracy: 0.9908 - val_loss: 0.0311\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9934 - loss: 0.0186 - val_accuracy: 0.9918 - val_loss: 0.0307\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9895 - loss: 0.0321\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m14s\u001b[0m 59ms/step - accuracy: 0.5012 - loss: 1.4913 - val_accuracy: 0.9198 - val_loss: 0.2859\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9077 - loss: 0.3086 - val_accuracy: 0.9633 - val_loss: 0.1446\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9463 - loss: 0.1745 - val_accuracy: 0.9698 - val_loss: 0.1037\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9619 - loss: 0.1267 - val_accuracy: 0.9760 - val_loss: 0.0821\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 13ms/step - accuracy: 0.9671 - loss: 0.1095 - val_accuracy: 0.9800 - val_loss: 0.0722\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9703 - loss: 0.0953 - val_accuracy: 0.9808 - val_loss: 0.0641\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9733 - loss: 0.0826 - val_accuracy: 0.9822 - val_loss: 0.0574\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9754 - loss: 0.0767 - val_accuracy: 0.9837 - val_loss: 0.0569\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9774 - loss: 0.0733 - val_accuracy: 0.9838 - val_loss: 0.0554\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 13ms/step - accuracy: 0.9784 - loss: 0.0668 - val_accuracy: 0.9848 - val_loss: 0.0524\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9794 - loss: 0.0640 - val_accuracy: 0.9848 - val_loss: 0.0507\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9789 - loss: 0.0640 - val_accuracy: 0.9855 - val_loss: 0.0499\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9830 - loss: 0.0548 - val_accuracy: 0.9888 - val_loss: 0.0450\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9821 - loss: 0.0563 - val_accuracy: 0.9873 - val_loss: 0.0461\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9843 - loss: 0.0498 - val_accuracy: 0.9878 - val_loss: 0.0445\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9821 - loss: 0.0517 - val_accuracy: 0.9880 - val_loss: 0.0430\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9850 - loss: 0.0488 - val_accuracy: 0.9882 - val_loss: 0.0439\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9851 - loss: 0.0467 - val_accuracy: 0.9877 - val_loss: 0.0431\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9848 - loss: 0.0474 - val_accuracy: 0.9878 - val_loss: 0.0412\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9868 - loss: 0.0414 - val_accuracy: 0.9882 - val_loss: 0.0401\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9854 - loss: 0.0448 - val_accuracy: 0.9888 - val_loss: 0.0396\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9863 - loss: 0.0414 - val_accuracy: 0.9893 - val_loss: 0.0406\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9859 - loss: 0.0391 - val_accuracy: 0.9887 - val_loss: 0.0379\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9883 - loss: 0.0377 - val_accuracy: 0.9895 - val_loss: 0.0396\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.9879 - loss: 0.0363 - val_accuracy: 0.9905 - val_loss: 0.0379\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 13ms/step - accuracy: 0.9874 - loss: 0.0380 - val_accuracy: 0.9890 - val_loss: 0.0387\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9874 - loss: 0.0358 - val_accuracy: 0.9890 - val_loss: 0.0381\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9886 - loss: 0.0328 - val_accuracy: 0.9902 - val_loss: 0.0366\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9887 - loss: 0.0324 - val_accuracy: 0.9878 - val_loss: 0.0380\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9882 - loss: 0.0357 - val_accuracy: 0.9907 - val_loss: 0.0366\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9885 - loss: 0.0339\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m16s\u001b[0m 76ms/step - accuracy: 0.7011 - loss: 0.9851 - val_accuracy: 0.9663 - val_loss: 0.1383\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9590 - loss: 0.1469 - val_accuracy: 0.9798 - val_loss: 0.0812\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9722 - loss: 0.0985 - val_accuracy: 0.9852 - val_loss: 0.0627\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9771 - loss: 0.0756 - val_accuracy: 0.9847 - val_loss: 0.0535\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9798 - loss: 0.0633 - val_accuracy: 0.9857 - val_loss: 0.0498\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 17ms/step - accuracy: 0.9833 - loss: 0.0567 - val_accuracy: 0.9870 - val_loss: 0.0446\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9851 - loss: 0.0483 - val_accuracy: 0.9878 - val_loss: 0.0436\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9862 - loss: 0.0464 - val_accuracy: 0.9867 - val_loss: 0.0415\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9874 - loss: 0.0411 - val_accuracy: 0.9897 - val_loss: 0.0384\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9873 - loss: 0.0407 - val_accuracy: 0.9892 - val_loss: 0.0369\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 17ms/step - accuracy: 0.9884 - loss: 0.0351 - val_accuracy: 0.9905 - val_loss: 0.0344\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9896 - loss: 0.0324 - val_accuracy: 0.9905 - val_loss: 0.0330\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9898 - loss: 0.0326 - val_accuracy: 0.9895 - val_loss: 0.0345\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9904 - loss: 0.0292 - val_accuracy: 0.9917 - val_loss: 0.0309\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9907 - loss: 0.0291 - val_accuracy: 0.9917 - val_loss: 0.0314\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 17ms/step - accuracy: 0.9908 - loss: 0.0306 - val_accuracy: 0.9907 - val_loss: 0.0302\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9926 - loss: 0.0245 - val_accuracy: 0.9910 - val_loss: 0.0295\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9925 - loss: 0.0253 - val_accuracy: 0.9908 - val_loss: 0.0301\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9926 - loss: 0.0230 - val_accuracy: 0.9910 - val_loss: 0.0308\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9929 - loss: 0.0229 - val_accuracy: 0.9912 - val_loss: 0.0293\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9933 - loss: 0.0213 - val_accuracy: 0.9912 - val_loss: 0.0305\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9928 - loss: 0.0233 - val_accuracy: 0.9915 - val_loss: 0.0284\n",
"Epoch 23/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9935 - loss: 0.0195 - val_accuracy: 0.9913 - val_loss: 0.0287\n",
"Epoch 24/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9935 - loss: 0.0197 - val_accuracy: 0.9920 - val_loss: 0.0295\n",
"Epoch 25/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9950 - loss: 0.0166 - val_accuracy: 0.9920 - val_loss: 0.0288\n",
"Epoch 26/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9946 - loss: 0.0174 - val_accuracy: 0.9915 - val_loss: 0.0271\n",
"Epoch 27/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9948 - loss: 0.0165 - val_accuracy: 0.9912 - val_loss: 0.0286\n",
"Epoch 28/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9936 - loss: 0.0178 - val_accuracy: 0.9918 - val_loss: 0.0262\n",
"Epoch 29/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9945 - loss: 0.0173 - val_accuracy: 0.9923 - val_loss: 0.0257\n",
"Epoch 30/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9948 - loss: 0.0167 - val_accuracy: 0.9918 - val_loss: 0.0273\n",
"\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 4ms/step - accuracy: 0.9911 - loss: 0.0275\n",
"Epoch 1/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m15s\u001b[0m 76ms/step - accuracy: 0.6912 - loss: 0.9825 - val_accuracy: 0.9677 - val_loss: 0.1409\n",
"Epoch 2/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 16ms/step - accuracy: 0.9554 - loss: 0.1578 - val_accuracy: 0.9785 - val_loss: 0.0857\n",
"Epoch 3/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9694 - loss: 0.1020 - val_accuracy: 0.9815 - val_loss: 0.0662\n",
"Epoch 4/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9757 - loss: 0.0816 - val_accuracy: 0.9840 - val_loss: 0.0561\n",
"Epoch 5/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9790 - loss: 0.0683 - val_accuracy: 0.9845 - val_loss: 0.0526\n",
"Epoch 6/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9799 - loss: 0.0629 - val_accuracy: 0.9863 - val_loss: 0.0474\n",
"Epoch 7/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9834 - loss: 0.0550 - val_accuracy: 0.9882 - val_loss: 0.0409\n",
"Epoch 8/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9851 - loss: 0.0486 - val_accuracy: 0.9888 - val_loss: 0.0402\n",
"Epoch 9/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9861 - loss: 0.0452 - val_accuracy: 0.9890 - val_loss: 0.0374\n",
"Epoch 10/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9863 - loss: 0.0438 - val_accuracy: 0.9902 - val_loss: 0.0347\n",
"Epoch 11/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9873 - loss: 0.0415 - val_accuracy: 0.9890 - val_loss: 0.0367\n",
"Epoch 12/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9885 - loss: 0.0382 - val_accuracy: 0.9895 - val_loss: 0.0338\n",
"Epoch 13/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 15ms/step - accuracy: 0.9884 - loss: 0.0366 - val_accuracy: 0.9902 - val_loss: 0.0314\n",
"Epoch 14/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 15ms/step - accuracy: 0.9883 - loss: 0.0364 - val_accuracy: 0.9895 - val_loss: 0.0350\n",
"Epoch 15/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 16ms/step - accuracy: 0.9889 - loss: 0.0358 - val_accuracy: 0.9905 - val_loss: 0.0301\n",
"Epoch 16/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9906 - loss: 0.0297 - val_accuracy: 0.9897 - val_loss: 0.0304\n",
"Epoch 17/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9901 - loss: 0.0310 - val_accuracy: 0.9912 - val_loss: 0.0308\n",
"Epoch 18/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9899 - loss: 0.0320 - val_accuracy: 0.9908 - val_loss: 0.0306\n",
"Epoch 19/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 14ms/step - accuracy: 0.9903 - loss: 0.0278 - val_accuracy: 0.9922 - val_loss: 0.0299\n",
"Epoch 20/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9906 - loss: 0.0286 - val_accuracy: 0.9903 - val_loss: 0.0310\n",
"Epoch 21/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 16ms/step - accuracy: 0.9918 - loss: 0.0257 - val_accuracy: 0.9917 - val_loss: 0.0271\n",
"Epoch 22/30\n",
"\u001b[1m106/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 14ms/step - accuracy: 0.9911 - loss: 0.0272 - val_accuracy: 0.9915 - val_loss: 0.0283\n",
"Epoch 23/30\n",
"\u001b[1m 89/106\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m━━━━\u001b[0m \u001b[1m0s\u001b[0m 13ms/step - accuracy: 0.9929 - loss: 0.0236"
]
}
],
"source": [
"for trial in range(1, 5):\n",
" for q in range(2, 7):\n",
" model = keras.Sequential(\n",
" [\n",
" layers.InputLayer(input_shape=input_shape),\n",
" layers.Conv2D(32, kernel_size=(3, 3)),\n",
" JacobiRKAN(q),\n",
" layers.MaxPooling2D(pool_size=(2, 2)),\n",
" layers.Conv2D(64, kernel_size=(3, 3)),\n",
" JacobiRKAN(q),\n",
" layers.MaxPooling2D(pool_size=(2, 2)),\n",
" layers.Flatten(),\n",
" layers.Dropout(0.5),\n",
" layers.Dense(num_classes, activation=\"softmax\"),\n",
" ]\n",
" )\n",
"\n",
" model.compile(\n",
" loss=\"categorical_crossentropy\", optimizer=\"adam\", metrics=[\"accuracy\"]\n",
" )\n",
"\n",
" history = model.fit(\n",
" x_train,\n",
" y_train,\n",
" batch_size=batch_size,\n",
" epochs=epochs,\n",
" validation_data=(x_valid, y_valid),\n",
" verbose=1,\n",
" )\n",
" score = model.evaluate(x_test, y_test, verbose=1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ec04f232-fd98-45a8-bac7-5398fb8abaf0",
"metadata": {
"id": "ec04f232-fd98-45a8-bac7-5398fb8abaf0"
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.11.5"
},
"colab": {
"provenance": [],
"gpuType": "T4"
},
"accelerator": "GPU"
},
"nbformat": 4,
"nbformat_minor": 5
}

Xet Storage Details

Size:
90.8 kB
·
Xet hash:
4ea0d4d9beeb90a7f9d66a16170b3b91f0b298b42ecf50f020be5ab2575b4ff4

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.