diff --git a/your-code/challenge-1.ipynb b/your-code/challenge-1.ipynb index 2487c5f..8258759 100644 --- a/your-code/challenge-1.ipynb +++ b/your-code/challenge-1.ipynb @@ -34,11 +34,355 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, + "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", + "
TLTMTRMLMMMRBLBMBRclass
0xxxxooxooTrue
1xxxxoooxoTrue
2xxxxooooxTrue
3xxxxooobbTrue
4xxxxoobobTrue
\n", + "
" + ], + "text/plain": [ + " 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" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# your code here\n", + "\n", + "import pandas as pd\n", + "\n", + "data = pd.read_csv('tic-tac-toe.csv')\n", + "data.head()" + ] + }, + { + "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", + "
classTL_bTL_oTL_xTM_bTM_oTM_xTR_bTR_oTR_x...MR_xBL_bBL_oBL_xBM_bBM_oBM_xBR_bBR_oBR_x
0True001001001...0001010010
1True001001001...0010001010
2True001001001...0010010001
3True001001001...0010100100
4True001001001...0100010100
\n", + "

5 rows × 28 columns

\n", + "
" + ], + "text/plain": [ + " class TL_b TL_o TL_x TM_b TM_o TM_x TR_b TR_o TR_x ... MR_x \\\n", + "0 True 0 0 1 0 0 1 0 0 1 ... 0 \n", + "1 True 0 0 1 0 0 1 0 0 1 ... 0 \n", + "2 True 0 0 1 0 0 1 0 0 1 ... 0 \n", + "3 True 0 0 1 0 0 1 0 0 1 ... 0 \n", + "4 True 0 0 1 0 0 1 0 0 1 ... 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 1 0 1 0 0 1 0 \n", + "1 0 1 0 0 0 1 0 1 0 \n", + "2 0 1 0 0 1 0 0 0 1 \n", + "3 0 1 0 1 0 0 1 0 0 \n", + "4 1 0 0 0 1 0 1 0 0 \n", + "\n", + "[5 rows x 28 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_dummys = pd.get_dummies(data, columns=['TL','TM','TR','ML','MM','MR','BL','BM','BR'])\n", + "data_dummys.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ - "# your code here" + "data_dummys['class'] = data_dummys['class'].apply(lambda x : 1 if x == True else 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "inputs = data_dummys.drop(columns='class')\n", + "outputs = data_dummys['class']" ] }, { @@ -60,11 +404,274 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pip in /home/jorgebra/anaconda3/lib/python3.7/site-packages (21.2.2)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install --upgrade pip" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: tensorflow in /home/jorgebra/anaconda3/lib/python3.7/site-packages (2.5.0)\n", + "Requirement already satisfied: flatbuffers~=1.12.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.12)\n", + "Requirement already satisfied: grpcio~=1.34.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.34.1)\n", + "Requirement already satisfied: keras-nightly~=2.5.0.dev in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (2.5.0.dev2021032900)\n", + "Requirement already satisfied: google-pasta~=0.2 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (0.2.0)\n", + "Requirement already satisfied: wheel~=0.35 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (0.36.2)\n", + "Requirement already satisfied: termcolor~=1.1.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.1.0)\n", + "Requirement already satisfied: absl-py~=0.10 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (0.13.0)\n", + "Requirement already satisfied: typing-extensions~=3.7.4 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (3.7.4.3)\n", + "Requirement already satisfied: gast==0.4.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (0.4.0)\n", + "Requirement already satisfied: six~=1.15.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.15.0)\n", + "Requirement already satisfied: opt-einsum~=3.3.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (3.3.0)\n", + "Requirement already satisfied: keras-preprocessing~=1.1.2 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.1.2)\n", + "Requirement already satisfied: tensorboard~=2.5 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (2.5.0)\n", + "Requirement already satisfied: astunparse~=1.6.3 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.6.3)\n", + "Requirement already satisfied: wrapt~=1.12.1 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.12.1)\n", + "Requirement already satisfied: protobuf>=3.9.2 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (3.17.3)\n", + "Requirement already satisfied: numpy~=1.19.2 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (1.19.5)\n", + "Requirement already satisfied: h5py~=3.1.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (3.1.0)\n", + "Requirement already satisfied: tensorflow-estimator<2.6.0,>=2.5.0rc0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorflow) (2.5.0)\n", + "Requirement already satisfied: cached-property in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from h5py~=3.1.0->tensorflow) (1.5.2)\n", + "Requirement already satisfied: markdown>=2.6.8 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (3.3.4)\n", + "Requirement already satisfied: setuptools>=41.0.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (45.2.0.post20200210)\n", + "Requirement already satisfied: werkzeug>=0.11.15 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (1.0.0)\n", + "Requirement already satisfied: requests<3,>=2.21.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (2.26.0)\n", + "Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (0.6.1)\n", + "Requirement already satisfied: google-auth<2,>=1.6.3 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (1.34.0)\n", + "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (1.8.0)\n", + "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow) (0.4.5)\n", + "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (4.2.2)\n", + "Requirement already satisfied: pyasn1-modules>=0.2.1 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (0.2.8)\n", + "Requirement already satisfied: rsa<5,>=3.1.4 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (4.7.2)\n", + "Requirement already satisfied: requests-oauthlib>=0.7.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow) (1.3.0)\n", + "Requirement already satisfied: importlib-metadata in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from markdown>=2.6.8->tensorboard~=2.5->tensorflow) (1.5.0)\n", + "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from pyasn1-modules>=0.2.1->google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow) (0.4.8)\n", + "Requirement already satisfied: idna<4,>=2.5 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (2.8)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (2019.11.28)\n", + "Requirement already satisfied: charset-normalizer~=2.0.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (2.0.2)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow) (1.25.8)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow) (3.1.1)\n", + "Requirement already satisfied: zipp>=0.5 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from importlib-metadata->markdown>=2.6.8->tensorboard~=2.5->tensorflow) (2.2.0)\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install tensorflow" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting protobuf==3.9.2\n", + " Using cached protobuf-3.9.2-cp37-cp37m-manylinux1_x86_64.whl (1.2 MB)\n", + "Requirement already satisfied: six>=1.9 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from protobuf==3.9.2) (1.15.0)\n", + "Requirement already satisfied: setuptools in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from protobuf==3.9.2) (45.2.0.post20200210)\n", + "Installing collected packages: protobuf\n", + " Attempting uninstall: protobuf\n", + " Found existing installation: protobuf 3.17.3\n", + " Uninstalling protobuf-3.17.3:\n", + " Successfully uninstalled protobuf-3.17.3\n", + "Successfully installed protobuf-3.9.2\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install -U protobuf==3.9.2" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: protobuf in /home/jorgebra/anaconda3/lib/python3.7/site-packages (3.9.2)\n", + "Collecting protobuf\n", + " Using cached protobuf-3.17.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl (1.0 MB)\n", + "Requirement already satisfied: six>=1.9 in /home/jorgebra/anaconda3/lib/python3.7/site-packages (from protobuf) (1.15.0)\n", + "Installing collected packages: protobuf\n", + " Attempting uninstall: protobuf\n", + " Found existing installation: protobuf 3.9.2\n", + " Uninstalling protobuf-3.9.2:\n", + " Successfully uninstalled protobuf-3.9.2\n", + "Successfully installed protobuf-3.17.3\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install --upgrade protobuf" + ] + }, + { + "cell_type": "code", + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ - "# your code here" + "from sklearn.model_selection import train_test_split\n", + "import numpy as np\n", + "\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(inputs, outputs, test_size=0.2)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.5975 - accuracy: 0.6514\n", + "Epoch 2/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.5260 - accuracy: 0.7154\n", + "Epoch 3/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.4692 - accuracy: 0.7728\n", + "Epoch 4/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.3971 - accuracy: 0.8120\n", + "Epoch 5/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.3323 - accuracy: 0.8799\n", + "Epoch 6/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.2846 - accuracy: 0.9426\n", + "Epoch 7/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.2567 - accuracy: 0.9700\n", + "Epoch 8/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.2393 - accuracy: 0.9621\n", + "Epoch 9/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.2201 - accuracy: 0.9830\n", + "Epoch 10/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.2050 - accuracy: 0.9791\n", + "Epoch 11/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1914 - accuracy: 0.9948\n", + "Epoch 12/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1798 - accuracy: 0.9935\n", + "Epoch 13/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1694 - accuracy: 0.9987\n", + "Epoch 14/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1615 - accuracy: 1.0000\n", + "Epoch 15/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1548 - accuracy: 0.9987\n", + "Epoch 16/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1500 - accuracy: 0.9987\n", + "Epoch 17/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1452 - accuracy: 0.9987\n", + "Epoch 18/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1405 - accuracy: 0.9987\n", + "Epoch 19/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1340 - accuracy: 0.9974\n", + "Epoch 20/20\n", + "24/24 [==============================] - 0s 2ms/step - loss: 0.1277 - accuracy: 1.0000\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import tensorflow as tf\n", + "from tensorflow import keras\n", + "from tensorflow.keras import layers\n", + "from keras.layers import Activation, Dense\n", + "\n", + "model = keras.Sequential()\n", + "model.add(Dense(2000, input_dim=27, activation='relu'))\n", + "model.add(Dense(2, activation='relu'))\n", + "model.add(Dense(2, activation='relu'))\n", + "model.add(Dense(2, activation=tf.nn.softmax))\n", + "\n", + "model.compile(optimizer='adam', loss='sparse_categorical_crossentropy',metrics='accuracy')\n", + "\n", + "model.fit(X_train, y_train, epochs=20)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6/6 [==============================] - 0s 1ms/step - loss: 0.1608 - accuracy: 0.9688\n", + "0.16077129542827606 0.96875\n" + ] + } + ], + "source": [ + "val_loss, val_acc = model.evaluate(X_test, y_test)\n", + "print(val_loss, val_acc)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:absl:Found untraced functions such as dense_layer_call_fn, dense_layer_call_and_return_conditional_losses, dense_1_layer_call_fn, dense_1_layer_call_and_return_conditional_losses, dense_2_layer_call_fn while saving (showing 5 of 20). These functions will not be directly callable after loading.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:tensorflow:Assets written to: tic-tac-toe.model/assets\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:tensorflow:Assets written to: tic-tac-toe.model/assets\n" + ] + } + ], + "source": [ + "model.save('tic-tac-toe.model')" ] }, { @@ -78,11 +685,240 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ - "# your code here" + "# your code here\n", + "\n", + "new_model = tf.keras.models.load_model('tic-tac-toe.model')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1.16968737e-03 9.98830259e-01]\n", + " [2.45361263e-03 9.97546375e-01]\n", + " [7.01979734e-04 9.99297976e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [6.18303136e-04 9.99381661e-01]\n", + " [5.20406757e-05 9.99947906e-01]\n", + " [7.03739293e-04 9.99296188e-01]\n", + " [6.99184043e-03 9.93008137e-01]\n", + " [1.60781480e-03 9.98392165e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.56076538e-04 9.99843955e-01]\n", + " [6.86507165e-01 3.13492894e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.39573807e-01 7.60426164e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.05853956e-02 9.89414573e-01]\n", + " [1.41677842e-03 9.98583198e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [6.12757094e-02 9.38724279e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [5.17631590e-01 4.82368439e-01]\n", + " [2.98314644e-05 9.99970198e-01]\n", + " [1.19529280e-03 9.98804688e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [5.44694841e-01 4.55305129e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.86345283e-04 9.99713600e-01]\n", + " [7.49805331e-05 9.99925017e-01]\n", + " [7.61217816e-05 9.99923825e-01]\n", + " [1.69340000e-02 9.83065963e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [6.88149214e-01 3.11850727e-01]\n", + " [7.13926041e-04 9.99286115e-01]\n", + " [3.71222792e-04 9.99628782e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [4.43375617e-01 5.56624413e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.00180693e-03 9.98998225e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.13971594e-04 9.99786079e-01]\n", + " [3.87115229e-04 9.99612868e-01]\n", + " [3.62690655e-04 9.99637246e-01]\n", + " [9.61851096e-04 9.99038219e-01]\n", + " [1.36963592e-03 9.98630404e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [6.76365942e-02 9.32363451e-01]\n", + " [6.63590789e-01 3.36409211e-01]\n", + " [1.59905976e-04 9.99840021e-01]\n", + " [2.35016807e-04 9.99764979e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.04027040e-05 9.99989629e-01]\n", + " [1.41516313e-04 9.99858499e-01]\n", + " [1.18041649e-01 8.81958306e-01]\n", + " [2.21204114e-04 9.99778807e-01]\n", + " [2.12152823e-04 9.99787867e-01]\n", + " [6.66383858e-05 9.99933362e-01]\n", + " [1.08790083e-03 9.98912096e-01]\n", + " [3.23141250e-03 9.96768594e-01]\n", + " [1.70212053e-02 9.82978761e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [5.43193135e-04 9.99456823e-01]\n", + " [6.25090599e-01 3.74909401e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.03455684e-04 9.99896526e-01]\n", + " [8.68030693e-05 9.99913216e-01]\n", + " [2.86603376e-04 9.99713361e-01]\n", + " [3.13830649e-04 9.99686241e-01]\n", + " [8.49233067e-04 9.99150753e-01]\n", + " [1.32370926e-03 9.98676240e-01]\n", + " [1.49529660e-04 9.99850392e-01]\n", + " [7.02514430e-04 9.99297500e-01]\n", + " [1.80338066e-05 9.99981999e-01]\n", + " [7.95934349e-04 9.99204099e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [4.03884530e-01 5.96115410e-01]\n", + " [7.18950061e-04 9.99281108e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.21661199e-04 9.99278367e-01]\n", + " [1.66962767e-04 9.99832988e-01]\n", + " [1.57349166e-02 9.84265089e-01]\n", + " [1.04739063e-03 9.98952627e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.75420072e-03 9.97245789e-01]\n", + " [8.08498356e-03 9.91914988e-01]\n", + " [1.05168911e-04 9.99894857e-01]\n", + " [1.59314903e-03 9.98406827e-01]\n", + " [3.48364731e-04 9.99651670e-01]\n", + " [1.83967597e-04 9.99816000e-01]\n", + " [3.19690630e-03 9.96803045e-01]\n", + " [3.51835042e-04 9.99648213e-01]\n", + " [1.88387639e-04 9.99811590e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.45871237e-01 8.54128778e-01]\n", + " [4.02476908e-05 9.99959707e-01]\n", + " [6.53283358e-01 3.46716583e-01]\n", + " [2.70081306e-04 9.99729931e-01]\n", + " [6.06181383e-01 3.93818647e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [3.08306335e-04 9.99691725e-01]\n", + " [1.06704763e-04 9.99893308e-01]\n", + " [1.18688017e-03 9.98813152e-01]\n", + " [4.24328260e-04 9.99575675e-01]\n", + " [5.79157029e-04 9.99420881e-01]\n", + " [1.96267036e-04 9.99803722e-01]\n", + " [5.46826632e-04 9.99453127e-01]\n", + " [6.25399351e-01 3.74600619e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.52182886e-04 9.99747813e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [6.36087265e-04 9.99363959e-01]\n", + " [4.98117149e-01 5.01882911e-01]\n", + " [1.48307136e-03 9.98516977e-01]\n", + " [3.87204229e-04 9.99612868e-01]\n", + " [3.18713501e-05 9.99968171e-01]\n", + " [1.58985102e-04 9.99840975e-01]\n", + " [1.39834464e-03 9.98601615e-01]\n", + " [1.84575409e-01 8.15424621e-01]\n", + " [1.50537153e-03 9.98494625e-01]\n", + " [6.08852088e-01 3.91147852e-01]\n", + " [1.71763659e-05 9.99982834e-01]\n", + " [2.92514205e-01 7.07485795e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.08634767e-03 9.97913659e-01]\n", + " [4.94185719e-04 9.99505758e-01]\n", + " [6.11573341e-05 9.99938846e-01]\n", + " [1.04879297e-03 9.98951197e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [6.79258083e-04 9.99320745e-01]\n", + " [3.30368592e-03 9.96696353e-01]\n", + " [7.77848414e-04 9.99222159e-01]\n", + " [1.30253134e-03 9.98697460e-01]\n", + " [2.56448577e-04 9.99743521e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.42847731e-04 9.99757111e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [6.67859852e-01 3.32140207e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [3.12424847e-04 9.99687552e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [5.53121266e-04 9.99446929e-01]\n", + " [3.46819055e-04 9.99653220e-01]\n", + " [7.77548339e-05 9.99922276e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [5.47652540e-04 9.99452293e-01]\n", + " [2.22418690e-03 9.97775853e-01]\n", + " [1.36561663e-04 9.99863386e-01]\n", + " [5.35144063e-04 9.99464810e-01]\n", + " [1.93574466e-03 9.98064220e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [2.28486868e-04 9.99771535e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.17302127e-03 9.98826921e-01]\n", + " [1.45642436e-04 9.99854326e-01]\n", + " [5.55395440e-04 9.99444544e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.19702134e-03 9.98803020e-01]\n", + " [6.11572623e-01 3.88427377e-01]\n", + " [2.28324509e-03 9.97716784e-01]\n", + " [3.70910129e-05 9.99962926e-01]\n", + " [2.12546368e-03 9.97874498e-01]\n", + " [1.48890147e-04 9.99851108e-01]\n", + " [1.10419653e-02 9.88958001e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [3.76680642e-01 6.23319328e-01]\n", + " [6.38218343e-01 3.61781687e-01]\n", + " [9.59764235e-04 9.99040186e-01]\n", + " [1.88946584e-03 9.98110533e-01]\n", + " [5.66005940e-04 9.99433935e-01]\n", + " [1.67299004e-04 9.99832630e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.82446442e-04 9.99817550e-01]\n", + " [8.82466789e-04 9.99117553e-01]\n", + " [4.95226239e-04 9.99504805e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [4.18142183e-03 9.95818555e-01]\n", + " [3.37593810e-04 9.99662399e-01]\n", + " [7.00993836e-01 2.99006194e-01]\n", + " [1.80695090e-04 9.99819338e-01]\n", + " [1.17888258e-05 9.99988198e-01]\n", + " [5.56285024e-01 4.43715006e-01]\n", + " [7.67971063e-03 9.92320240e-01]\n", + " [1.15086511e-03 9.98849154e-01]]\n" + ] + } + ], + "source": [ + "pred = new_model.predict([X_test])\n", + "\n", + "print(pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n" + ] + } + ], + "source": [ + "print(np.argmax(pred[0]))" ] }, { @@ -104,7 +940,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -120,7 +956,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -144,7 +980,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.3" + "version": "3.7.6" } }, "nbformat": 4, diff --git a/your-code/tic-tac-toe.model/keras_metadata.pb b/your-code/tic-tac-toe.model/keras_metadata.pb new file mode 100644 index 0000000..0e57220 --- /dev/null +++ b/your-code/tic-tac-toe.model/keras_metadata.pb @@ -0,0 +1,8 @@ + + root"_tf_keras_sequential* {"name": "sequential", "trainable": true, "expects_training_arg": true, "dtype": "float32", "batch_input_shape": null, "must_restore_from_config": false, "class_name": "Sequential", "config": {"name": "sequential", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": {"class_name": "__tuple__", "items": [null, 27]}, "dtype": "uint8", "sparse": false, "ragged": false, "name": "module_wrapper_input"}}, {"class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}, {"class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}, {"class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}, {"class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}]}, "shared_object_id": 1, "build_input_shape": {"class_name": "TensorShape", "items": [null, 27]}, "is_graph_network": true, "save_spec": {"class_name": "TypeSpec", "type_spec": "tf.TensorSpec", "serialized": [{"class_name": "TensorShape", "items": [null, 27]}, "uint8", "module_wrapper_input"]}, "keras_version": "2.5.0", "backend": "tensorflow", "model_config": {"class_name": "Sequential"}, "training_config": {"loss": "sparse_categorical_crossentropy", "metrics": [[{"class_name": "MeanMetricWrapper", "config": {"name": "accuracy", "dtype": "float32", "fn": "sparse_categorical_accuracy"}, "shared_object_id": 2}]], "weighted_metrics": null, "loss_weights": null, "optimizer_config": {"class_name": "Adam", "config": {"name": "Adam", "learning_rate": 0.0010000000474974513, "decay": 0.0, "beta_1": 0.8999999761581421, "beta_2": 0.9990000128746033, "epsilon": 1e-07, "amsgrad": false}}}}2 +root.layer_with_weights-0"_tf_keras_layer*{"name": "module_wrapper", "trainable": true, "expects_training_arg": true, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}2 +root.layer_with_weights-1"_tf_keras_layer*{"name": "module_wrapper_1", "trainable": true, "expects_training_arg": true, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}2 +root.layer_with_weights-2"_tf_keras_layer*{"name": "module_wrapper_2", "trainable": true, "expects_training_arg": true, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}2 +root.layer_with_weights-3"_tf_keras_layer*{"name": "module_wrapper_3", "trainable": true, "expects_training_arg": true, "dtype": "float32", "batch_input_shape": null, "stateful": false, "must_restore_from_config": false, "class_name": "ModuleWrapper", "config": {"layer was saved without config": true}}2 +Uroot.keras_api.metrics.0"_tf_keras_metric*{"class_name": "Mean", "name": "loss", "dtype": "float32", "config": {"name": "loss", "dtype": "float32"}, "shared_object_id": 3}2 +Vroot.keras_api.metrics.1"_tf_keras_metric*{"class_name": "MeanMetricWrapper", "name": "accuracy", "dtype": "float32", "config": {"name": "accuracy", "dtype": "float32", "fn": "sparse_categorical_accuracy"}, "shared_object_id": 2}2 \ No newline at end of file diff --git a/your-code/tic-tac-toe.model/saved_model.pb b/your-code/tic-tac-toe.model/saved_model.pb new file mode 100644 index 0000000..7c9cfdd Binary files /dev/null and b/your-code/tic-tac-toe.model/saved_model.pb differ diff --git a/your-code/tic-tac-toe.model/variables/variables.data-00000-of-00001 b/your-code/tic-tac-toe.model/variables/variables.data-00000-of-00001 new file mode 100644 index 0000000..38f6ff1 Binary files /dev/null and b/your-code/tic-tac-toe.model/variables/variables.data-00000-of-00001 differ diff --git a/your-code/tic-tac-toe.model/variables/variables.index b/your-code/tic-tac-toe.model/variables/variables.index new file mode 100644 index 0000000..f15ee52 Binary files /dev/null and b/your-code/tic-tac-toe.model/variables/variables.index differ