From a9f8171d988bf6173dadb0c1b75afde2a5303f4b Mon Sep 17 00:00:00 2001 From: solvedbrunus Date: Mon, 7 Oct 2024 19:18:40 +0100 Subject: [PATCH] finished tic-tac-toe challenge --- your-code/challenge-1.ipynb | 1003 ++++++++++++++++++++++++++++++++++- your-code/tic-tac-toe.keras | Bin 0 -> 107854 bytes 2 files changed, 986 insertions(+), 17 deletions(-) create mode 100644 your-code/tic-tac-toe.keras diff --git a/your-code/challenge-1.ipynb b/your-code/challenge-1.ipynb index 2487c5f..df01ba3 100644 --- a/your-code/challenge-1.ipynb +++ b/your-code/challenge-1.ipynb @@ -34,11 +34,366 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Data Head:\n", + " TL TM TR ML MM MR BL BM BR class\n", + "0 x x x x o o x o o True\n", + "1 x x x x o o o x o True\n", + "2 x x x x o o o o x True\n", + "3 x x x x o o o b b True\n", + "4 x x x x o o b o b True\n", + "\n", + "Data Shape:\n", + " (958, 10)\n", + "\n", + "Data Describe:\n", + " TL TM TR ML MM MR BL BM BR class\n", + "count 958 958 958 958 958 958 958 958 958 958\n", + "unique 3 3 3 3 3 3 3 3 3 2\n", + "top x x x x x x x x x True\n", + "freq 418 378 418 378 458 378 418 378 418 626\n", + "\n", + "Missing Values:\n", + " TL 0\n", + "TM 0\n", + "TR 0\n", + "ML 0\n", + "MM 0\n", + "MR 0\n", + "BL 0\n", + "BM 0\n", + "BR 0\n", + "class 0\n", + "dtype: int64\n", + "\n", + "Data types:\n", + " TL object\n", + "TM object\n", + "TR object\n", + "ML object\n", + "MM object\n", + "MR object\n", + "BL object\n", + "BM object\n", + "BR object\n", + "class bool\n", + "dtype: object\n" + ] + } + ], + "source": [ + "# your code here\n", + "import pandas as pd\n", + "\n", + "df = pd.read_csv('tic-tac-toe.csv')\n", + "\n", + "print('Data Head:\\n', df.head())\n", + "print('\\nData Shape:\\n', df.shape)\n", + "print('\\nData Describe:\\n', df.describe())\n", + "print('\\nMissing Values:\\n', df.isnull().sum())\n", + "print('\\nData types:\\n', df.dtypes)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TL_bTL_oTL_xTM_bTM_oTM_xTR_bTR_oTR_xML_b...BL_oBL_xBM_bBM_oBM_xBR_bBR_oBR_xclass_Falseclass_True
0FalseFalseTrueFalseFalseTrueFalseFalseTrueFalse...FalseTrueFalseTrueFalseFalseTrueFalseFalseTrue
1FalseFalseTrueFalseFalseTrueFalseFalseTrueFalse...TrueFalseFalseFalseTrueFalseTrueFalseFalseTrue
2FalseFalseTrueFalseFalseTrueFalseFalseTrueFalse...TrueFalseFalseTrueFalseFalseFalseTrueFalseTrue
3FalseFalseTrueFalseFalseTrueFalseFalseTrueFalse...TrueFalseTrueFalseFalseTrueFalseFalseFalseTrue
4FalseFalseTrueFalseFalseTrueFalseFalseTrueFalse...FalseFalseFalseTrueFalseTrueFalseFalseFalseTrue
\n", + "

5 rows × 29 columns

\n", + "
" + ], + "text/plain": [ + " TL_b TL_o TL_x TM_b TM_o TM_x TR_b TR_o TR_x ML_b ... \\\n", + "0 False False True False False True False False True False ... \n", + "1 False False True False False True False False True False ... \n", + "2 False False True False False True False False True False ... \n", + "3 False False True False False True False False True False ... \n", + "4 False False True False False True False False True False ... \n", + "\n", + " BL_o BL_x BM_b BM_o BM_x BR_b BR_o BR_x class_False \\\n", + "0 False True False True False False True False False \n", + "1 True False False False True False True False False \n", + "2 True False False True False False False True False \n", + "3 True False True False False True False False False \n", + "4 False False False True False True False False False \n", + "\n", + " class_True \n", + "0 True \n", + "1 True \n", + "2 True \n", + "3 True \n", + "4 True \n", + "\n", + "[5 rows x 29 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# your code here" + "\n", + "# Convert the categorical values to numeric in all columns.\n", + "\n", + "df_encoded = pd.get_dummies(df, columns=['TL', 'TM', 'TR', 'ML', 'MM', 'MR', 'BL', 'BM', 'BR', 'class'])\n", + "\n", + "df_encoded.head()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "X Head:\n", + " TL_b TL_o TL_x TM_b TM_o TM_x TR_b TR_o TR_x ML_b ... \\\n", + "0 False False True False False True False False True False ... \n", + "1 False False True False False True False False True False ... \n", + "2 False False True False False True False False True False ... \n", + "3 False False True False False True False False True False ... \n", + "4 False False True False False True False False True False ... \n", + "\n", + " MR_x BL_b BL_o BL_x BM_b BM_o BM_x BR_b BR_o BR_x \n", + "0 False False False True False True False False True False \n", + "1 False False True False False False True False True False \n", + "2 False False True False False True False False False True \n", + "3 False False True False True False False True False False \n", + "4 False True False False False True False True False False \n", + "\n", + "[5 rows x 27 columns]\n", + "\n", + "Target y Head:\n", + " 0 True\n", + "1 True\n", + "2 True\n", + "3 True\n", + "4 True\n", + "Name: class_True, dtype: bool\n", + " TL_b TL_o TL_x TM_b TM_o TM_x TR_b TR_o TR_x ML_b ... MR_x \\\n", + "0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 ... 0.0 \n", + "1 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 ... 0.0 \n", + "2 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 ... 0.0 \n", + "3 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 ... 0.0 \n", + "4 0.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 1.0 0.0 ... 0.0 \n", + "\n", + " BL_b BL_o BL_x BM_b BM_o BM_x BR_b BR_o BR_x \n", + "0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 \n", + "1 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 \n", + "2 0.0 1.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 \n", + "3 0.0 1.0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 \n", + "4 1.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 \n", + "\n", + "[5 rows x 27 columns]\n" + ] + } + ], + "source": [ + "\n", + "#separate the inputs and output\n", + "\n", + "X = df_encoded.drop(columns=['class_True', 'class_False']) # Inputs: all except the target columns\n", + "y = df_encoded['class_True'] # Output: binary target (class_True)\n", + "\n", + "# Print the first few rows to verify\n", + "print('\\nX Head:\\n', X.head())\n", + "print('\\nTarget y Head:\\n', y.head())\n", + "\n", + "\n", + "#normalize the data the input data\n", + "\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "\n", + "# Initialize the scaler\n", + "scaler = MinMaxScaler()\n", + "\n", + "# Fit the scaler to X and transform X\n", + "X_normalized = scaler.fit_transform(X)\n", + "\n", + "# Optionally, convert the normalized data back to a DataFrame\n", + "X_normalized = pd.DataFrame(X_normalized, columns=X.columns)\n", + "\n", + "# Verify the normalization\n", + "print(X_normalized.head())\n", + "\n" ] }, { @@ -60,11 +415,315 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X_train shape: (670, 27)\n", + "X_test shape: (288, 27)\n", + "y_train shape: (670,)\n", + "y_test shape: (288,)\n" + ] + } + ], + "source": [ + "# your code here\n", + "#split the data into training and testing data\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n", + "\n", + "print('X_train shape:', X_train.shape)\n", + "print('X_test shape:', X_test.shape)\n", + "print('y_train shape:', y_train.shape)\n", + "print('y_test shape:', y_test.shape)\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-10-07 19:01:05.207977: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n", + "To enable the following instructions: AVX2 FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "/opt/anaconda3/lib/python3.12/site-packages/keras/src/layers/core/dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", + " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" + ] + } + ], + "source": [ + "# create a sequential model\n", + "from keras.models import Sequential\n", + "from keras.layers import Dense\n", + "\n", + "model = Sequential()\n", + "\n", + "# add several layers to model Relu activation function for middle layers and sothmax for output layer\n", + "\n", + "model = Sequential()\n", + "model.add(Dense(64, input_dim=X_train.shape[1], activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(20, activation='softmax')) \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ - "# your code here" + "# compile the model \n", + "\n", + "model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.7544e-05\n", + "Epoch 2/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 4.1729e-05\n", + "Epoch 3/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 5.3416e-05\n", + "Epoch 4/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 4.3604e-05\n", + "Epoch 5/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.9041e-05\n", + "Epoch 6/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.6462e-05\n", + "Epoch 7/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 3.4782e-05\n", + "Epoch 8/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.7347e-05\n", + "Epoch 9/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 2.9915e-05\n", + "Epoch 10/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 4.3908e-05\n", + "Epoch 11/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.7921e-05\n", + "Epoch 12/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.6068e-05\n", + "Epoch 13/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.7378e-05\n", + "Epoch 14/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.4524e-05\n", + "Epoch 15/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.4223e-05\n", + "Epoch 16/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.7369e-05\n", + "Epoch 17/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 2.4310e-05\n", + "Epoch 18/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 2.1491e-05\n", + "Epoch 19/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.3930e-05\n", + "Epoch 20/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 1.6795e-05\n", + "Epoch 21/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.4180e-05\n", + "Epoch 22/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.0886e-05\n", + "Epoch 23/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 2.1314e-05\n", + "Epoch 24/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.9246e-05\n", + "Epoch 25/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.1005e-05\n", + "Epoch 26/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 1.5527e-05\n", + "Epoch 27/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.6134e-05\n", + "Epoch 28/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 1.3395e-05\n", + "Epoch 29/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.5804e-05\n", + "Epoch 30/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.6422e-05\n", + "Epoch 31/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.4734e-05\n", + "Epoch 32/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 1.0458e-05\n", + "Epoch 33/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 1.1358e-05\n", + "Epoch 34/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.3995e-05\n", + "Epoch 35/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.3116e-05\n", + "Epoch 36/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.2524e-05\n", + "Epoch 37/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1039e-05\n", + "Epoch 38/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1021e-05\n", + "Epoch 39/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 8.3580e-06\n", + "Epoch 40/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1423e-05\n", + "Epoch 41/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.0053e-05\n", + "Epoch 42/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 7.8263e-06\n", + "Epoch 43/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 8.4150e-06\n", + "Epoch 44/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.0082e-05\n", + "Epoch 45/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 6.7387e-06\n", + "Epoch 46/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 7.2870e-06\n", + "Epoch 47/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 7.7618e-06\n", + "Epoch 48/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.1338e-06\n", + "Epoch 49/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.4263e-06\n", + "Epoch 50/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 7.2902e-06\n", + "Epoch 51/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 5.4138e-06\n", + "Epoch 52/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.8124e-06\n", + "Epoch 53/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.3089e-06\n", + "Epoch 54/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 6.4138e-06\n", + "Epoch 55/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.7562e-06\n", + "Epoch 56/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.6210e-06\n", + "Epoch 57/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.5309e-06\n", + "Epoch 58/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 3.8430e-06\n", + "Epoch 59/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 3.7493e-06\n", + "Epoch 60/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 3.8361e-06\n", + "Epoch 61/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 2.9144e-06\n", + "Epoch 62/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.0521e-06\n", + "Epoch 63/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 3.8231e-06\n", + "Epoch 64/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.6298e-06\n", + "Epoch 65/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.1892e-06\n", + "Epoch 66/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 3.8710e-06\n", + "Epoch 67/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.8950e-06\n", + "Epoch 68/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.5315e-06\n", + "Epoch 69/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 8ms/step - accuracy: 1.0000 - loss: 2.9638e-06\n", + "Epoch 70/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.6232e-06\n", + "Epoch 71/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 2.4338e-06\n", + "Epoch 72/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.6771e-06\n", + "Epoch 73/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.3973e-06\n", + "Epoch 74/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 2.2011e-06\n", + "Epoch 75/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.1228e-06\n", + "Epoch 76/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.6590e-06\n", + "Epoch 77/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.7616e-06\n", + "Epoch 78/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.8671e-06\n", + "Epoch 79/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 2.0232e-06\n", + "Epoch 80/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.4026e-06\n", + "Epoch 81/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 1.5357e-06\n", + "Epoch 82/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 1.3583e-06\n", + "Epoch 83/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.4840e-06\n", + "Epoch 84/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.7381e-06\n", + "Epoch 85/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.2544e-06\n", + "Epoch 86/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 1.8184e-06\n", + "Epoch 87/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 1.4177e-06\n", + "Epoch 88/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.2044e-06\n", + "Epoch 89/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1445e-06\n", + "Epoch 90/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.2081e-06\n", + "Epoch 91/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.0525e-06\n", + "Epoch 92/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1221e-06\n", + "Epoch 93/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 8.7150e-07\n", + "Epoch 94/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 8.8632e-07\n", + "Epoch 95/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1350e-06\n", + "Epoch 96/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1ms/step - accuracy: 1.0000 - loss: 8.5389e-07\n", + "Epoch 97/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.0332e-06\n", + "Epoch 98/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 8.7564e-07\n", + "Epoch 99/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 7.7648e-07\n", + "Epoch 100/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.9613e-07\n", + "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9782 - loss: 0.0851 \n", + "Loss: 0.038903698325157166\n", + "Accuracy: 0.9895833134651184\n" + ] + } + ], + "source": [ + "#fit the training data to the model\n", + "model.fit(X_train, y_train, epochs=100, batch_size=10)\n", + "\n", + "#evaluate the model\n", + "loss, accuracy = model.evaluate(X_test, y_test)\n", + "print('Loss:', loss)\n", + "print('Accuracy:', accuracy)\n", + "\n", + "#save the model tic-tac-toe.model\n", + "model.save('tic-tac-toe.keras')\n", + "\n", + "\n" ] }, { @@ -78,11 +737,67 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m1/1\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 60ms/step\n", + "Predictions: [[9.99998808e-01 1.21164157e-06 1.17257537e-09 1.04843290e-09\n", + " 1.06021303e-09 2.27796310e-10 3.04640491e-09 7.46223305e-10\n", + " 5.12185072e-10 3.89698857e-10 6.72540912e-10 5.16859333e-10\n", + " 4.18046220e-09 4.27051311e-10 5.87501992e-10 3.71828429e-10\n", + " 1.98496286e-09 2.30055175e-09 1.87335214e-09 8.32556413e-10]\n", + " [4.25119575e-12 1.00000000e+00 3.05437468e-12 3.59492622e-12\n", + " 5.41220931e-12 2.32209499e-12 1.15343256e-11 5.00137215e-12\n", + " 4.08206281e-12 6.60550130e-12 6.20435951e-12 1.29164023e-11\n", + " 3.55819822e-12 1.72028440e-12 1.33034295e-11 9.62825045e-12\n", + " 1.91063988e-11 1.03245815e-11 1.59104310e-11 6.73350958e-12]\n", + " [4.45420301e-05 9.99955058e-01 1.64953704e-08 1.07772324e-08\n", + " 2.21519869e-08 4.87088148e-09 4.08996961e-08 1.50749120e-08\n", + " 1.31913245e-08 1.70037069e-08 2.39241107e-08 4.81501807e-08\n", + " 2.57460098e-08 4.30121982e-09 2.79374355e-08 2.61465605e-08\n", + " 2.10475353e-08 2.75491434e-08 2.40176998e-08 1.43645931e-08]\n", + " [1.00000000e+00 4.12076062e-09 6.87357948e-11 6.40243275e-11\n", + " 6.54425680e-11 1.52858316e-11 6.00811234e-10 9.55361831e-11\n", + " 2.51503124e-11 1.20094811e-11 2.99031008e-11 5.78899498e-11\n", + " 2.47760895e-10 1.57770741e-11 2.92451827e-11 1.25584916e-11\n", + " 3.15573505e-11 6.05794512e-11 4.61585561e-11 1.93044643e-11]\n", + " [1.00000000e+00 6.63370137e-10 2.44996662e-11 2.18440942e-11\n", + " 1.88611262e-11 6.45894969e-12 1.30933153e-10 1.79807679e-11\n", + " 2.30995691e-11 7.59269730e-12 1.95073350e-11 3.49875511e-11\n", + " 1.46853127e-10 3.95511271e-12 1.13186769e-11 5.91160888e-12\n", + " 1.20749643e-11 3.80424997e-11 1.91056702e-11 6.26621368e-12]]\n", + "Actual: 836 False\n", + "477 True\n", + "350 True\n", + "891 False\n", + "855 False\n", + "Name: class_True, dtype: bool\n", + "Loss: 0.0646730288863182\n", + "Accuracy: 0.9861111044883728\n" + ] + } + ], "source": [ - "# your code here" + "# your code here\n", + "\n", + "# load the model and make a prediction on a few random rows of the testing data set\n", + "\n", + "from keras.models import load_model\n", + "\n", + "model = load_model('tic-tac-toe.keras')\n", + "\n", + "predictions = model.predict(X_test[:5])\n", + "print('Predictions:', predictions)\n", + "print('Actual:', y_test[:5])\n", + "\n", + "print('Loss:', loss)\n", + "print('Accuracy:', accuracy)\n", + "\n", + "\n" ] }, { @@ -104,11 +819,253 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/100\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/anaconda3/lib/python3.12/site-packages/keras/src/layers/core/dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", + " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 2ms/step - accuracy: 0.5420 - loss: 1.9100\n", + "Epoch 2/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 0.6891 - loss: 0.5739\n", + "Epoch 3/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.7873 - loss: 0.4854\n", + "Epoch 4/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.7948 - loss: 0.4553\n", + "Epoch 5/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 0.8393 - loss: 0.3507\n", + "Epoch 6/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 0.9177 - loss: 0.2335\n", + "Epoch 7/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9748 - loss: 0.1138\n", + "Epoch 8/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 0.9822 - loss: 0.0723\n", + "Epoch 9/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 0.9891 - loss: 0.0440\n", + "Epoch 10/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 0.9912 - loss: 0.0310\n", + "Epoch 11/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9999 - loss: 0.0111\n", + "Epoch 12/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9965 - loss: 0.0107\n", + "Epoch 13/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 0.9994 - loss: 0.0048\n", + "Epoch 14/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 0.0030\n", + "Epoch 15/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 0.0025\n", + "Epoch 16/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 0.0016\n", + "Epoch 17/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 0.0014\n", + "Epoch 18/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 9.3714e-04\n", + "Epoch 19/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.2269e-04\n", + "Epoch 20/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.7542e-04\n", + "Epoch 21/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.1218e-04\n", + "Epoch 22/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.7892e-04\n", + "Epoch 23/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.2855e-04\n", + "Epoch 24/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.6014e-04\n", + "Epoch 25/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.8788e-04\n", + "Epoch 26/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.4123e-04\n", + "Epoch 27/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.8406e-04\n", + "Epoch 28/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.7055e-04\n", + "Epoch 29/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.1340e-04\n", + "Epoch 30/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 1.8996e-04\n", + "Epoch 31/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 5ms/step - accuracy: 1.0000 - loss: 1.9503e-04\n", + "Epoch 32/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.0287e-04\n", + "Epoch 33/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.7825e-04\n", + "Epoch 34/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 1.1530e-04\n", + "Epoch 35/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1480e-04\n", + "Epoch 36/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.2512e-04\n", + "Epoch 37/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.0536e-04\n", + "Epoch 38/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.1255e-04\n", + "Epoch 39/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 8.3439e-05\n", + "Epoch 40/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 7.6521e-05\n", + "Epoch 41/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 7.2811e-05\n", + "Epoch 42/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 7.3856e-05\n", + "Epoch 43/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.6644e-05\n", + "Epoch 44/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.7390e-05\n", + "Epoch 45/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 5.4862e-05\n", + "Epoch 46/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.5454e-05\n", + "Epoch 47/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.3105e-05\n", + "Epoch 48/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.1189e-05\n", + "Epoch 49/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.7723e-05\n", + "Epoch 50/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.9658e-05\n", + "Epoch 51/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.8468e-05\n", + "Epoch 52/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.0538e-05\n", + "Epoch 53/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 3.3781e-05\n", + "Epoch 54/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 3.3778e-05\n", + "Epoch 55/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.9497e-05\n", + "Epoch 56/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.0332e-05\n", + "Epoch 57/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.7649e-05\n", + "Epoch 58/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 2.7163e-05\n", + "Epoch 59/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.1352e-05\n", + "Epoch 60/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.9776e-05\n", + "Epoch 61/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.6612e-05\n", + "Epoch 62/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.9506e-05\n", + "Epoch 63/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.9881e-05\n", + "Epoch 64/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.4900e-05\n", + "Epoch 65/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.4997e-05\n", + "Epoch 66/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.8138e-05\n", + "Epoch 67/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.3440e-05\n", + "Epoch 68/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.2548e-05\n", + "Epoch 69/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.3216e-05\n", + "Epoch 70/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.2075e-05\n", + "Epoch 71/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.3600e-05\n", + "Epoch 72/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 9.8530e-06\n", + "Epoch 73/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.0548e-05\n", + "Epoch 74/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 1.0378e-05\n", + "Epoch 75/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 8.8091e-06\n", + "Epoch 76/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 7.7474e-06\n", + "Epoch 77/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.8197e-06\n", + "Epoch 78/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 6.9053e-06\n", + "Epoch 79/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 6.6713e-06\n", + "Epoch 80/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.1032e-06\n", + "Epoch 81/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 6.6657e-06\n", + "Epoch 82/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 7.0469e-06\n", + "Epoch 83/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.3847e-06\n", + "Epoch 84/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.3945e-06\n", + "Epoch 85/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 5.2749e-06\n", + "Epoch 86/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.3498e-06\n", + "Epoch 87/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.7246e-06\n", + "Epoch 88/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 4ms/step - accuracy: 1.0000 - loss: 4.1598e-06\n", + "Epoch 89/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 5.1328e-06\n", + "Epoch 90/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.6077e-06\n", + "Epoch 91/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 3.4887e-06\n", + "Epoch 92/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.2313e-06\n", + "Epoch 93/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 4.7472e-06\n", + "Epoch 94/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.2849e-06\n", + "Epoch 95/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.4349e-06\n", + "Epoch 96/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.0069e-06\n", + "Epoch 97/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 2.8594e-06\n", + "Epoch 98/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.2847e-06\n", + "Epoch 99/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 1.0000 - loss: 3.1686e-06\n", + "Epoch 100/100\n", + "\u001b[1m67/67\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3ms/step - accuracy: 1.0000 - loss: 2.8279e-06\n", + "\u001b[1m9/9\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 2ms/step - accuracy: 0.9704 - loss: 0.1212 \n", + "Loss: 0.0646730288863182\n", + "Accuracy: 0.9861111044883728\n" + ] + } + ], "source": [ - "# your code here" + "# add a few more layers to the model and see if the accuracy improves\n", + "model = Sequential()\n", + "model.add(Dense(64, input_dim=X_train.shape[1], activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(20, activation='softmax'))\n", + "\n", + "model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n", + "\n", + "model.fit(X_train, y_train, epochs=100, batch_size=10)\n", + "\n", + "loss, accuracy = model.evaluate(X_test, y_test)\n", + "print('Loss:', loss)\n", + "print('Accuracy:', accuracy)\n", + "\n", + "\n", + "\n", + "\n" ] }, { @@ -119,18 +1076,30 @@ ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "# your answer here" + "# your answer here\n", + "\n", + "The first as a lower Loss perfomed better then the second model with more layers but i cant understand, why \n", + "\n", + "\n", + "\n", + "First Model \n", + "\n", + "Loss: 0.038903698325157166 \n", + "Accuracy: 0.9895833134651184\n", + "\n", + "Second model:\n", + "\n", + "Loss: 0.0646730288863182\n", + "Accuracy: 0.9861111044883728\n" ] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "base", "language": "python", "name": "python3" }, @@ -144,7 +1113,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.12.2" } }, "nbformat": 4, diff --git a/your-code/tic-tac-toe.keras b/your-code/tic-tac-toe.keras new file mode 100644 index 0000000000000000000000000000000000000000..8016a4ad91ef94528f1e2af5d8d4a49a9a25d806 GIT binary patch literal 107854 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 XS+