diff --git a/01_materials/labs/lab_1.ipynb b/01_materials/labs/lab_1.ipynb index 667fd306..1b6b3aae 100644 --- a/01_materials/labs/lab_1.ipynb +++ b/01_materials/labs/lab_1.ipynb @@ -31,7 +31,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -45,9 +45,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1797, 8, 8)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "digits.images.shape" ] @@ -63,9 +74,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1797, 64)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "digits.data.shape" ] @@ -81,9 +103,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(1797,)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "digits.target.shape" ] @@ -99,9 +132,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Selecting 9 random indices\n", "random_indices = np.random.choice(len(digits.images), 9, replace=False)\n", @@ -131,11 +175,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Selecting 9 random indices of images labelled as 9\n", "random_indices = np.random.choice(np.where(digits.target == 9)[0], 9, replace=False)\n", @@ -176,7 +231,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -202,11 +257,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X_train shape: (1437, 64)\n", + "y_train shape: (1437,)\n", + "X_test shape: (360, 64)\n", + "y_test shape: (360,)\n" + ] + } + ], "source": [ "print(f'X_train shape: {X_train.shape}')\n", "print(f'y_train shape: {y_train.shape}')\n", @@ -240,9 +306,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Before one-hot encoding: 6\n", + "After one-hot encoding: [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n" + ] + } + ], "source": [ "from tensorflow.keras.utils import to_categorical\n", "\n", @@ -273,11 +348,93 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
Model: \"sequential_1\"\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1mModel: \"sequential_1\"\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n",
+       "┃ Layer (type)                     Output Shape                  Param # ┃\n",
+       "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n",
+       "│ dense_3 (Dense)                 │ (None, 64)             │         4,160 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_4 (Dense)                 │ (None, 64)             │         4,160 │\n",
+       "├─────────────────────────────────┼────────────────────────┼───────────────┤\n",
+       "│ dense_5 (Dense)                 │ (None, 10)             │           650 │\n",
+       "└─────────────────────────────────┴────────────────────────┴───────────────┘\n",
+       "
\n" + ], + "text/plain": [ + "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓\n", + "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", + "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩\n", + "│ dense_3 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m4,160\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_4 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m4,160\u001b[0m │\n", + "├─────────────────────────────────┼────────────────────────┼───────────────┤\n", + "│ dense_5 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m10\u001b[0m) │ \u001b[38;5;34m650\u001b[0m │\n", + "└─────────────────────────────────┴────────────────────────┴───────────────┘\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Total params: 8,970 (35.04 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m8,970\u001b[0m (35.04 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Trainable params: 8,970 (35.04 KB)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m8,970\u001b[0m (35.04 KB)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
 Non-trainable params: 0 (0.00 B)\n",
+       "
\n" + ], + "text/plain": [ + "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from tensorflow.keras.models import Sequential\n", "from tensorflow.keras.layers import Input, Dense\n", @@ -310,7 +467,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": { "collapsed": false }, @@ -340,11 +497,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 68ms/step - accuracy: 0.5335 - loss: 1.6952 - val_accuracy: 0.7708 - val_loss: 0.6818\n", + "Epoch 2/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - accuracy: 0.8416 - loss: 0.5399 - val_accuracy: 0.8750 - val_loss: 0.3941\n", + "Epoch 3/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - accuracy: 0.9043 - loss: 0.3362 - val_accuracy: 0.9097 - val_loss: 0.2873\n", + "Epoch 4/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9339 - loss: 0.2447 - val_accuracy: 0.9062 - val_loss: 0.2744\n", + "Epoch 5/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 25ms/step - accuracy: 0.9434 - loss: 0.2031 - val_accuracy: 0.9167 - val_loss: 0.2393\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.fit(\n", " X_train, # Training data\n", @@ -368,11 +552,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 21ms/step - accuracy: 0.9639 - loss: 0.1643\n", + "Loss: 0.16\n", + "Accuracy: 96.39%\n" + ] + } + ], "source": [ "loss, accuracy = model.evaluate(X_test, y_test)\n", "\n", @@ -391,11 +585,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m12/12\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 40ms/step\n" + ] + }, + { + "data": { + "image/png": "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k10RQpLdeeedFggErLq62j7//HMbOXKkJSYm2ocffhicb+bMmRYZGVnncNaf//xnk2RLly49Yf2jR49aIBCw+fPnW1RUlO3fvz/4byc6HDN9+nSLioqylStXntF2HDlyxNLS0iwrK+uMlmsu4d6P5eXlNnbsWHv11VdtzZo1VlRUZAMGDDBJNmfOnDPdHUHh3o9///vfQ16fF198se3Zs6eeW9+8wr0nR40aZcnJyVZVVRUyfdCgQSbJZsyYUa/98EPh3pO1/D5k7Usg//DRp08fe++994Lz1TbbD89B3nzzzZacnGzV1dUWCARCHp06dbIbb7zRzMxmz55tkkKeKDOzQCBg0dHRDT4/sn//fuvfv7/9+Mc/tqKiIlu9erXNnj3bOnfubMOHD7dAINCguifaJzExMVZSUhIy36WXXmp9+/ats+1VVVUWERFhkydPDs67ceNGu/rqq61t27Z1aq9fvz44n5/n7EpKShrlnGZjCfd+PJHq6mrr16+ftWvX7pztx0AgYBs2bLD33nvP5syZY7169bLevXtbeXm5p7pNIdx7csWKFRYREWGjR4+2L774wvbu3WuPPvqoRUVFmSQrKChoUN1w78lafgeyL4es58+fr+zsbEVHR6tjx47q3LlznXni4+PrnIPct2+fKioqFBsbe8K6//znPyUp+BWkTp06hfx7dHS0p6ssn3zySW3atEk7d+4MjnnQoEHKysrSkCFDVFRUpLy8vAbVvvHGGzVp0iQFAgFt2bJFDz30kH75y19q48aNwStm9+3bp+3btwfPZf9Q7fbv2rVLgwYN0nnnnafnn39eGRkZiouL0wcffKC77rpL3333XYPGeDovvfSSYmJidOuttzZK/cYSrv14IjExMfrFL36hBx98UNu2bWvwaZRw7sfo6GhdeOGFkqRLL71UV155pbp3766CggI9//zzvq6rsYRrTw4dOlRz587VxIkTlZmZKUn60Y9+pMcff1wPP/xwyLnlMxXOPdlYfAnk7Ozs4AvmZE70Xa327durXbt2euutt064TGJioiQFG2rv3r0hDXDkyBFP3xfetGmT0tLS6rw4+vfvL0n69NNPG1w7JSUluE8GDhyo7Oxs5eTkaMKECSopKZF0bPtbtmx50vMb7du3l3Tsa0cHDx7U4sWLlZ6eHjL+xvKPf/xDJSUlGjlypDp06NBo62kM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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Get the predictions for the test data\n", "predictions = model.predict(X_test)\n", @@ -468,30 +680,187 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 62ms/step - accuracy: 0.1401 - loss: 3.7726 - val_accuracy: 0.2812 - val_loss: 2.3412\n", + "Epoch 2/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.3455 - loss: 2.0041 - val_accuracy: 0.5000 - val_loss: 1.6267\n", + "Epoch 3/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 23ms/step - accuracy: 0.5257 - loss: 1.4462 - val_accuracy: 0.6076 - val_loss: 1.2738\n", + "Epoch 4/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 27ms/step - accuracy: 0.6432 - loss: 1.1419 - val_accuracy: 0.6806 - val_loss: 1.0431\n", + "Epoch 5/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - accuracy: 0.7084 - loss: 0.9483 - val_accuracy: 0.7431 - val_loss: 0.8945\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# 1. Decreasing the learning rate\n", - "from tensorflow.keras.optimizers import SGD\n" + "\n", + "from tensorflow.keras.optimizers import SGD\n", + "\n", + "# Define model\n", + "model = Sequential()\n", + "model.add(Input(shape=(64,)))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(10, activation='softmax'))\n", + "\n", + "# Compile with SGD using lower learning rate\n", + "optimizer = SGD(learning_rate=0.001)\n", + "model.compile(\n", + " loss='categorical_crossentropy',\n", + " optimizer=optimizer,\n", + " metrics=['accuracy']\n", + ")\n", + "\n", + "# Train model\n", + "model.fit(\n", + " X_train,\n", + " y_train,\n", + " epochs=5,\n", + " batch_size=32,\n", + " validation_split=0.2\n", + ")\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 62ms/step - accuracy: 0.1462 - loss: 4.1021 - val_accuracy: 0.1667 - val_loss: 2.1729\n", + "Epoch 2/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 29ms/step - accuracy: 0.1758 - loss: 2.2374 - val_accuracy: 0.2708 - val_loss: 2.0784\n", + "Epoch 3/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - accuracy: 0.2045 - loss: 2.1119 - val_accuracy: 0.2500 - val_loss: 2.0791\n", + "Epoch 4/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 27ms/step - accuracy: 0.1749 - loss: 2.1861 - val_accuracy: 0.1771 - val_loss: 2.1570\n", + "Epoch 5/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.1976 - loss: 2.0735 - val_accuracy: 0.1806 - val_loss: 2.1287\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# 2. Increasing the learning rate\n" + "# 2. Increasing the learning rate\n", + "\n", + "# Define model\n", + "model = Sequential()\n", + "model.add(Input(shape=(64,)))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(10, activation='softmax'))\n", + "\n", + "# Compile with SGD using higher learning rate\n", + "optimizer = SGD(learning_rate=0.1)\n", + "model.compile(\n", + " loss='categorical_crossentropy',\n", + " optimizer=optimizer,\n", + " metrics=['accuracy']\n", + ")\n", + "\n", + "# Train model\n", + "model.fit(\n", + " X_train,\n", + " y_train,\n", + " epochs=5,\n", + " batch_size=32,\n", + " validation_split=0.2\n", + ")\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m7s\u001b[0m 60ms/step - accuracy: 0.6171 - loss: 1.6046 - val_accuracy: 0.8889 - val_loss: 0.3337\n", + "Epoch 2/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 35ms/step - accuracy: 0.9243 - loss: 0.2270 - val_accuracy: 0.9167 - val_loss: 0.2252\n", + "Epoch 3/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - accuracy: 0.9521 - loss: 0.1370 - val_accuracy: 0.9062 - val_loss: 0.2818\n", + "Epoch 4/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 26ms/step - accuracy: 0.9782 - loss: 0.0981 - val_accuracy: 0.9410 - val_loss: 0.1466\n", + "Epoch 5/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9791 - loss: 0.0598 - val_accuracy: 0.9549 - val_loss: 0.1327\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# 3. SGD with momentum\n" + "# 3. SGD with momentum\n", + "\n", + "# Define model\n", + "model = Sequential()\n", + "model.add(Input(shape=(64,)))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(10, activation='softmax'))\n", + "\n", + "# Compile with SGD using lower learning rate and momentum\n", + "optimizer = SGD(learning_rate=0.005, momentum=0.9)\n", + "model.compile(\n", + " loss='categorical_crossentropy',\n", + " optimizer=optimizer,\n", + " metrics=['accuracy']\n", + ")\n", + "\n", + "# Train model\n", + "model.fit(\n", + " X_train,\n", + " y_train,\n", + " epochs=5,\n", + " batch_size=32,\n", + " validation_split=0.2\n", + ")\n", + "\n" ] }, { @@ -509,21 +878,121 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 60ms/step - accuracy: 0.4169 - loss: 2.5347 - val_accuracy: 0.7326 - val_loss: 0.8271\n", + "Epoch 2/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 24ms/step - accuracy: 0.8364 - loss: 0.5329 - val_accuracy: 0.8819 - val_loss: 0.4323\n", + "Epoch 3/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 21ms/step - accuracy: 0.9182 - loss: 0.2838 - val_accuracy: 0.8993 - val_loss: 0.3113\n", + "Epoch 4/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.9487 - loss: 0.1932 - val_accuracy: 0.9097 - val_loss: 0.2702\n", + "Epoch 5/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 22ms/step - accuracy: 0.9634 - loss: 0.1509 - val_accuracy: 0.9167 - val_loss: 0.2577\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Adam optimizer\n", - "from tensorflow.keras.optimizers import Adam" + "from tensorflow.keras.optimizers import Adam\n", + "\n", + "# Define model\n", + "model = Sequential()\n", + "model.add(Input(shape=(64,)))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(64, activation='relu'))\n", + "model.add(Dense(10, activation='softmax'))\n", + "\n", + "\n", + "# compile with Adam optimizer\n", + "optimizer = Adam(learning_rate=0.001) # You can increase this if needed\n", + "model.compile(optimizer=optimizer,\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", + "\n", + "# Train model\n", + "model.fit(\n", + " X_train,\n", + " y_train,\n", + " epochs=5,\n", + " batch_size=32,\n", + " validation_split=0.2\n", + ")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 55ms/step - accuracy: 0.2933 - loss: 2.4603 - val_accuracy: 0.6042 - val_loss: 1.2518\n", + "Epoch 2/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 19ms/step - accuracy: 0.7763 - loss: 0.7678 - val_accuracy: 0.7986 - val_loss: 0.5710\n", + "Epoch 3/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.9112 - loss: 0.3531 - val_accuracy: 0.8681 - val_loss: 0.3883\n", + "Epoch 4/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.9452 - loss: 0.2150 - val_accuracy: 0.8854 - val_loss: 0.3247\n", + "Epoch 5/5\n", + "\u001b[1m36/36\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.9547 - loss: 0.1661 - val_accuracy: 0.9062 - val_loss: 0.2891\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "# Extra hidden layer\n" + "# Extra hidden layer\n", + "\n", + "# define the model\n", + "model = Sequential()\n", + "model.add(Input(shape=(64,))) # Input layer\n", + "model.add(Dense(64, activation='relu')) # Hidden layer 1\n", + "model.add(Dense(64, activation='relu')) # Hidden layer 2\n", + "model.add(Dense(32, activation='relu')) # New hidden layer\n", + "model.add(Dense(10, activation='softmax')) # Output layer\n", + "\n", + "# compile with Adam optimizer\n", + "optimizer = Adam(learning_rate=0.001) # You can increase this if needed\n", + "model.compile(optimizer=optimizer,\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", + "\n", + "# Train model\n", + "model.fit(\n", + " X_train,\n", + " y_train,\n", + " epochs=5,\n", + " batch_size=32,\n", + " validation_split=0.2\n", + ")" ] }, { @@ -539,9 +1008,35 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "predictions_tf = model(X_test)\n", "predictions_tf[:5]" @@ -549,9 +1044,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(tensorflow.python.framework.ops.EagerTensor, TensorShape([360, 10]))" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "type(predictions_tf), predictions_tf.shape" ] @@ -565,9 +1071,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import tensorflow as tf\n", "\n", @@ -592,9 +1111,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "predicted_labels_tf = tf.argmax(predictions_tf, axis=1)\n", "predicted_labels_tf[:5]" @@ -611,11 +1141,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Get the values corresponding to the predicted labels for each sample\n", "predicted_values_tf = tf.reduce_max(predictions_tf, axis=1)\n", @@ -671,9 +1212,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\annam\\miniconda3\\envs\\dsi_participant\\Lib\\site-packages\\keras\\src\\layers\\core\\dense.py:92: 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": [ "from tensorflow.keras import initializers\n", "from tensorflow.keras import optimizers\n", @@ -698,9 +1248,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.layers" ] @@ -714,18 +1277,67 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 47, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.layers[0].weights" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.00015817, -0.01590087, 0.00103594, ..., 0.00962818,\n", + " 0.00624957, 0.00994726],\n", + " [ 0.0081879 , 0.00756818, -0.00668142, ..., 0.01084459,\n", + " -0.00317478, -0.00549116],\n", + " [-0.00086618, -0.00287623, 0.00391693, ..., 0.00064558,\n", + " -0.00420471, 0.00174566],\n", + " ...,\n", + " [-0.0029006 , -0.0091218 , 0.00804327, ..., -0.01407086,\n", + " 0.00952832, -0.01348555],\n", + " [ 0.00375078, 0.00967842, 0.00098119, ..., -0.00413454,\n", + " 0.01695471, 0.00025196],\n", + " [ 0.00459809, 0.01223094, -0.00213172, ..., 0.01246831,\n", + " -0.00714749, -0.00868595]], shape=(64, 64), dtype=float32)" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "w = model.layers[0].weights[0].numpy()\n", "w" @@ -733,18 +1345,43 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 49, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float32(0.008835949)" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "w.std()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 50, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,\n", + " 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "b = model.layers[0].weights[1].numpy()\n", "b" @@ -752,9 +1389,56 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 23ms/step - accuracy: 0.2324 - loss: 2.2862\n", + "Epoch 2/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 20ms/step - accuracy: 0.4871 - loss: 1.7287\n", + "Epoch 3/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 22ms/step - accuracy: 0.7035 - loss: 1.0160\n", + "Epoch 4/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 13ms/step - accuracy: 0.8553 - loss: 0.5649\n", + "Epoch 5/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9088 - loss: 0.3504\n", + "Epoch 6/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9388 - loss: 0.2415\n", + "Epoch 7/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9443 - loss: 0.2160\n", + "Epoch 8/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9569 - loss: 0.1498\n", + "Epoch 9/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 11ms/step - accuracy: 0.9645 - loss: 0.1219\n", + "Epoch 10/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9729 - loss: 0.1011\n", + "Epoch 11/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9729 - loss: 0.0957\n", + "Epoch 12/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 12ms/step - accuracy: 0.9736 - loss: 0.0946\n", + "Epoch 13/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step - accuracy: 0.9916 - loss: 0.0553\n", + "Epoch 14/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 18ms/step - accuracy: 0.9944 - loss: 0.0465\n", + "Epoch 15/15\n", + "\u001b[1m45/45\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 17ms/step - accuracy: 0.9916 - loss: 0.0466\n" + ] + }, + { + "data": { + "image/png": "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mzdv1nPPPafnn39e//jHP6yOhnrKz89Xz549NXXq1OM+/txzz+nFF1/U1KlTtWLFCsXFxelXv/qVcnNzT3NS1MfJPt+CggKtXr1aDz/8sFavXq2PP/5Y27Zt029/+1sLkqK+fulnuMInn3yi77//XgkJCacpme9xnWof6d+/v/r06aNXXnmlcl2XLl00dOhQTZo0ycJk8LUDBw4oJiZGixcv1vnnn291HPhQXl6e+vTpo2nTpunJJ59Ur169muxfTFHdAw88oG+//ZYZRH7sN7/5jWJjY/Xmm29Wrrv22msVHBysd99918Jk8AXDMDRv3jwNHTpUUtkodUJCgsaOHasJEyZIkoqLixUbG6tnn31Wd9xxh4VpUVfHfr7Hs2LFCp199tnatWuXkpKSTl84+MSJPuO9e/eqf//++uKLL3TllVdq7NixTXKmICPVPlBSUqJVq1Zp8ODB1dYPHjxYy5YtsygVGkp2drYkKSoqyuIk8LW77rpLV155pS699FKro8DH5s+fr5SUFA0bNkwxMTHq3bu3Xn/9datjwYfOO+88ff3119q2bZskad26dfrmm290xRVXWJwMDSE1NVUZGRnVfvdyuVy64IIL+N3LT2VnZ8swDGYY+RGv16sbb7xR9913n7p27Wp1nFPisDqAP8jKypLH41FsbGy19bGxscrIyLAoFRqCaZoaN26czjvvPHXr1s3qOPChf/7zn1q9erVWrFhhdRQ0gJ9++kmvvPKKxo0bpwcffFA//PCD7r77brlcLo0cOdLqePCBCRMmKDs7W507d5bdbpfH49FTTz2l//u//7M6GhpAxe9Xx/vda9euXVZEQgMqKirSAw88oOuvv17h4eFWx4GPPPvss3I4HLr77rutjnLKKNU+ZBhGtfumadZYh6ZtzJgxWr9+vb755huro8CHdu/erXvuuUdffvmlAgMDrY6DBuD1epWSkqKnn35aktS7d29t3LhRr7zyCqXaT8yePVuzZs3S+++/r65du2rt2rUaO3asEhISdNNNN1kdDw2E3738X2lpqX73u9/J6/Vq2rRpVseBj6xatUp///vftXr1ar/4mWX6tw+0bNlSdru9xqh0ZmZmjb+goun605/+pPnz52vhwoVq06aN1XHgQ6tWrVJmZqb69u0rh8Mhh8OhxYsX66WXXpLD4ZDH47E6Ik5RfHy8zjrrrGrrunTpwskk/ch9992nBx54QL/73e/UvXt33Xjjjbr33ns5r4mfiouLkyR+9/JzpaWlGj58uFJTU7VgwQJGqf3I0qVLlZmZqaSkpMrfvXbt2qU///nPateundXx6oxS7QMBAQHq27evFixYUG39ggULNHDgQItSwVdM09SYMWP08ccf63//+5+Sk5OtjgQfu+SSS7RhwwatXbu2cklJSdENN9ygtWvXym63Wx0Rp+jcc8+tcSm8bdu2qW3bthYlgq8VFBTIZqv+a43dbueSWn4qOTlZcXFx1X73Kikp0eLFi/ndy09UFOrt27frq6++UnR0tNWR4EM33nij1q9fX+13r4SEBN1333364osvrI5XZ0z/9pFx48bpxhtvVEpKigYMGKDp06crLS1No0ePtjoaTtFdd92l999/X//6178UFhZW+VfxiIgIBQUFWZwOvhAWFlbjGPmQkBBFR0dz7LyfuPfeezVw4EA9/fTTGj58uH744QdNnz5d06dPtzoafGTIkCF66qmnlJSUpK5du2rNmjV68cUXdcstt1gdDfWUl5enHTt2VN5PTU3V2rVrFRUVpaSkJI0dO1ZPP/20OnbsqI4dO+rpp59WcHCwrr/+egtTo7ZO9vkmJCTouuuu0+rVq/Wf//xHHo+n8vevqKgoBQQEWBUbdfBLP8PH/qHE6XQqLi5OnTp1Ot1RT50Jn3n55ZfNtm3bmgEBAWafPn3MxYsXWx0JPiDpuMvMmTOtjoYGdMEFF5j33HOP1THgQ//+97/Nbt26mS6Xy+zcubM5ffp0qyPBh3Jycsx77rnHTEpKMgMDA8327dubDz30kFlcXGx1NNTTwoULj/v/35tuusk0TdP0er3mI488YsbFxZkul8s8//zzzQ0bNlgbGrV2ss83NTX1hL9/LVy40OroqKVf+hk+Vtu2bc2//e1vpzWjr3CdagAAAAAA6oljqgEAAAAAqCdKNQAAAAAA9USpBgAAAACgnijVAAAAAADUE6UaAAAAAIB6olQDAAAAAFBPlGoAAAAAAOqJUg0AAAAAQD1RqgEAAAAAqCdKNQAAAAAA9USpBgAAAACgnv4fsvf3zRYIp9sAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "history = model.fit(X_train, y_train, epochs=15, batch_size=32)\n", "\n", @@ -772,9 +1456,48 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ]" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.layers[0].weights" ] @@ -802,18 +1525,71 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 59, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "🔍 Training with stddev=0.001\n", + "Final validation accuracy: 0.2986\n", + "\n", + "🔍 Training with stddev=1\n", + "Final validation accuracy: 0.7604\n", + "\n", + "🔍 Training with stddev=10\n", + "Final validation accuracy: 0.1806\n" + ] + } + ], "source": [ - "# Your code here" + "# Split training data for validation\n", + "X_train_sub, X_val, y_train_sub, y_val = train_test_split(X_train, y_train, test_size=0.2, random_state=42)\n", + "\n", + "# Define initializer scales to test\n", + "stddevs = [1e-3, 1, 10]\n", + "results = {}\n", + "\n", + "# Loop over each initialization scale\n", + "for sd in stddevs:\n", + " print(f\"\\n🔍 Training with stddev={sd}\")\n", + " \n", + " # Define initializer\n", + " normal_init = initializers.TruncatedNormal(stddev=sd, seed=42)\n", + " \n", + " # Build model\n", + " model = Sequential()\n", + " model.add(Dense(64, input_dim=64, activation=\"tanh\", kernel_initializer=normal_init))\n", + " model.add(Dense(64, activation=\"tanh\", kernel_initializer=normal_init))\n", + " model.add(Dense(10, activation=\"softmax\", kernel_initializer=normal_init))\n", + " \n", + " # Compile with SGD\n", + " model.compile(optimizer=optimizers.SGD(learning_rate=0.1),\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", + " \n", + " # Train model\n", + " history = model.fit(X_train_sub, y_train_sub,\n", + " epochs=15,\n", + " batch_size=32,\n", + " validation_data=(X_val, y_val),\n", + " verbose=0)\n", + " \n", + " # Store results\n", + " results[sd] = history\n", + " final_acc = history.history['val_accuracy'][-1]\n", + " print(f\"Final validation accuracy: {final_acc:.4f}\")\n", + "\n", + "\n" ] } ], "metadata": { "file_extension": ".py", "kernelspec": { - "display_name": ".venv", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -827,7 +1603,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.12" + "version": "3.13.5" }, "mimetype": "text/x-python", "name": "python", diff --git a/01_materials/labs/lab_2.ipynb b/01_materials/labs/lab_2.ipynb index a45b46e9..d483b095 100644 --- a/01_materials/labs/lab_2.ipynb +++ b/01_materials/labs/lab_2.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -36,9 +36,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "sample_index = 45\n", "plt.figure(figsize=(3, 3))\n", @@ -58,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -91,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -101,18 +112,43 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 0., 0., 1., 0., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "one_hot(n_classes=10, y=3)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],\n", + " [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.],\n", + " [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "one_hot(n_classes=10, y=[0, 4, 9, 1])" ] @@ -143,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -164,9 +200,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9.99662391e-01 3.35349373e-04 2.25956630e-06]\n" + ] + } + ], "source": [ "print(softmax([10, 2, -3]))" ] @@ -181,9 +225,18 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[9.99662391e-01 3.35349373e-04 2.25956630e-06]\n", + " [2.47262316e-03 9.97527377e-01 1.38536042e-11]]\n" + ] + } + ], "source": [ "X = np.array([[10, 2, -3],\n", " [-1, 5, -20]])\n", @@ -199,18 +252,36 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n" + ] + } + ], "source": [ "print(np.sum(softmax([10, 2, -3])))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "softmax of 2 vectors:\n", + "[[9.99662391e-01 3.35349373e-04 2.25956630e-06]\n", + " [2.47262316e-03 9.97527377e-01 1.38536042e-11]]\n" + ] + } + ], "source": [ "print(\"softmax of 2 vectors:\")\n", "X = np.array([[10, 2, -3],\n", @@ -227,9 +298,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1. 1.]\n" + ] + } + ], "source": [ "print(np.sum(softmax(X), axis=1))" ] @@ -251,9 +330,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.01005033585350145\n" + ] + } + ], "source": [ "def nll(Y_true, Y_pred):\n", " Y_true = np.asarray(Y_true)\n", @@ -279,9 +366,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.605170185988091\n" + ] + } + ], "source": [ "print(nll([1, 0, 0], [0.01, 0.01, .98]))" ] @@ -295,9 +390,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.010050335853503449\n" + ] + } + ], "source": [ "# Check that the average NLL of the following 3 almost perfect\n", "# predictions is close to 0\n", @@ -329,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -350,8 +453,8 @@ " \n", " def forward(self, X):\n", " # Compute the linear combination of the input and weights\n", - " Z = None\n", - " return None\n", + " Z = np.dot(X,self.W) + self.b\n", + " return softmax(Z)\n", " \n", " def predict(self, X):\n", " # Return the most probable class for each sample in X\n", @@ -363,7 +466,8 @@ " def loss(self, X, y):\n", " # Compute the negative log likelihood over the data provided\n", " y_onehot = one_hot(self.output_size, y.astype(int))\n", - " return None\n", + " y_pred = self.forward(X)\n", + " return nll(y_onehot, y_pred)\n", "\n", " def grad_loss(self, X, y_true, y_pred):\n", " # Compute the gradient of the loss with respect to W and b for a single sample (X, y_true)\n", @@ -388,7 +492,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -411,11 +515,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUNtJREFUeJzt3XlcVGX///H3yDIsKu4sioDmmmvSAmaipoXLN1styx3L3ELuFs3KJYts8aZyy1LJMvPbolm5RLlkqaUmZeptdruACpKW4FIocH5/9GO+jgzI4GEG7PV8PM7j4bnmOuf6zJnxXHzmus45FsMwDAEAAADAZari7gAAAAAAXBlILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILiowi8VSqmX9+vVujTMmJkYxMTFujaG8TZ48WRaLpUzbDh48WFWrVjU1nsGDBys8PLxM2+bk5Oi5555TTEyMgoKCVLVqVbVu3VrTp0/XX3/9ZWqcwJVqy5YtuvvuuxUcHCxvb28FBQXprrvu0ubNmy9rv88//7yWL19uTpCXcPToUU2ePFmpqakuac8ZBw8elMVi0csvv2zaPtevXy+LxaIPP/zwknUdnfMd9XUWi0WTJ0+2re/evVuTJ0/WwYMHi+zzcs7bl6tbt24aMWKEW9ouycXHLzk5WRaLxeHxK8nKlSvt9nOh8PBwDR48uMwxmu3jjz/Wfffdp6uuukq+vr4KDw/X/fffr3379tnVO3/+vBo3bqykpCT3BHoZSC4qsM2bN9stPXv2lK+vb5Hya665xq1xzp49W7Nnz3ZrDCi9tLQ0JSUl6ZprrtG8efO0YsUK3XXXXZo8ebJ69+4twzDcHSJQob3++uvq2LGjDh8+rBdffFFffvmlXn75ZR05ckQ33nijZs6cWeZ9uzq5mDJlSoVMLtwtLi6uVIni5s2bFRcXZ1vfvXu3pkyZ4vCP46efflrLli0zM8xS+eSTT/Ttt9/q6aefdnnbzurVq5c2b96s4OBgp7ZbuXKlpkyZ4vC1ZcuWVaj3Pn36dJ09e1YTJ07U6tWrNW3aNO3YsUPXXHONdu3aZavn5eWlZ555RlOnTtWJEyfcGLHzPN0dAIp3ww032K3XrVtXVapUKVJ+sbNnz8rPz688Q7PTsmVLl7WFyxcREaGDBw/K39/fVta1a1f5+/vrscce07fffqsbb7zRjRECFde3336r+Ph49ezZU8uWLZOn5/91o/fee69uv/12PfLII2rfvr06duzoxkgrHlf3TZejQYMGatCgwSXrXao/vlDjxo0vJ6Qye/7553X77berfv36pu2zvD7LunXrqm7duqbus3379qbu73J9+umnqlevnl1Z165dFR4ern//+9966623bOX33XefEhIS9MYbb+jJJ590dahlxshFJRcTE6NWrVrp66+/VnR0tPz8/DR06FBJRYcbCzkaIszMzNRDDz2kBg0ayNvbWxEREZoyZYry8vJKFcOFQ8WFw9kvvfSSpk+frvDwcPn6+iomJka//PKLzp8/r/HjxyskJEQBAQG6/fbblZWVZbfPpUuXqkePHgoODpavr69atGih8ePH68yZM0Xaf/PNN9W0aVNZrVa1bNlS7733nsPh53PnzmnatGlq3ry5rFar6tatqyFDhui333675Ht0xJkYJWnXrl3q1q2b/P39VbduXY0ePVpnz561q2MYhmbPnq127drJ19dXNWvW1F133aX9+/eXKUZH/P397RKLQtddd50kKT093bS2gCtNYmKiLBaL5syZY5dYSJKnp6dmz54ti8WiF154wVZe3HSYi6feWCwWnTlzRm+//bZt2mvhubVwukhKSoqGDBmiWrVqyd/fX3369ClyfihuGsiF5+r169fr2muvlSQNGTLE1l5xU0ucjaGkviktLU0PPPCA6tWrJ6vVqhYtWuiVV15RQUFBkTYLCgr03HPPqWHDhvLx8VFkZKS++uoruzq//vqrhgwZoiZNmsjPz0/169dXnz59tHPnTofv46+//lJCQoKCgoLk6+urzp07a8eOHXZ1SjsV9sJjlpycrLvvvluS1KVLF9sxTU5OluT4e1Dac/6OHTvUu3dv2zELCQlRr169dPjw4RLj27Fjh77//nsNGDDArtyszzInJ0ePPvqoIiIi5O3trfr16ys+Pr5IP5iTk6Phw4erdu3aqlq1qm699Vb98ssvReItblrU6tWr1a1bNwUEBMjPz08tWrRQYmKi7bjOmjVLkv108sJ9OPr/UJrv4IVT82bMmKGIiAhVrVpVUVFR2rJlS4nHvSQXJxaSFBISogYNGhTpf729vdWvXz/NmzevUs0qILm4AmRkZOiBBx5Q//79tXLlSo0cOdKp7TMzM3XddddpzZo1euaZZ7Rq1SoNGzZMiYmJGj58eJnjmjVrlr799lvNmjVLb731lv7zn/+oT58+GjZsmH777TctWLDANqXgwmFlSdq3b5969uyp+fPna/Xq1YqPj9f//u//qk+fPnb15s2bpwcffFBt2rTRxx9/rKeeekpTpkwpch1KQUGBbrvtNr3wwgvq37+/Pv/8c73wwgtKSUlRTEyM/vzzT6ffX2ljlP6eO9mzZ09169ZNy5cv1+jRo/XGG2+oX79+dvUeeughxcfH6+abb9by5cs1e/Zs7dq1S9HR0Tp27FiJ8RR2hmW9Bmft2rWSpKuvvrpM2wNXuvz8fK1bt06RkZHF/qodGhqqDh06aO3atcrPz3dq/5s3b5avr6969uxpm/Z68ZTTYcOGqUqVKnrvvfeUlJSk77//XjExMTp58qRTbV1zzTVauHChJOmpp56ytXfxudiR0sbgqG/67bffFB0drS+++ELPPvusVqxYoZtvvlmPPvqoRo8eXaStmTNnavXq1UpKStK7776rKlWqKDY21m7K0tGjR1W7dm298MILWr16tWbNmiVPT09df/312rt3b5F9Pvnkk9q/f7/eeustvfXWWzp69KhiYmIu+0ecXr166fnnn5f0d/9XeEx79epV7DalOeefOXNG3bt317FjxzRr1iylpKQoKSlJDRs21KlTp0qM6bPPPpOHh4duuukmh69fzmd59uxZde7cWW+//bbGjh2rVatW6YknnlBycrL+53/+x/bHsGEY6tu3r9555x3961//0rJly3TDDTcoNja2VMd1/vz56tmzpwoKCjR37lx9+umnGjt2rC2xevrpp3XXXXdJsp9OXtzUKme/gxce88WLF+vMmTPq2bOnsrOzbXUKE5GyXtuxf/9+HTp0yGH/GxMTo0OHDunnn38u077dwkClMWjQIMPf39+urHPnzoYk46uvvipSX5IxadKkIuVhYWHGoEGDbOsPPfSQUbVqVePQoUN29V5++WVDkrFr164S4+rcubPRuXNn2/qBAwcMSUbbtm2N/Px8W3lSUpIhyfif//kfu+3j4+MNSUZ2drbD/RcUFBjnz583NmzYYEgyfvzxR8MwDCM/P98ICgoyrr/+erv6hw4dMry8vIywsDBb2ZIlSwxJxkcffWRXd+vWrYYkY/bs2SW+x0mTJhkl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3m1r++mnn9bu3bu1atUq1alTR7/++qv+/PPP0h4mwCkkFwAA4B+refPm+umnnxy+tnjxYlksFr355pvy8fFRy5YtdeTIEQ0fPtxhfW9vbwUEBMhisSgoKKjEdp977jnde++9mjJliq2sbdu2xda/MKmJiIjQs88+q4cfftiWXKSlpenOO+9U69atJUmNGjWy1U9LS1P79u0VGRkp6e+LxYHywrQoAADwj2UYRrHXS+zdu1dt2rSRj4+Prey6664zpd3U1FR169at1PXXrVun7t27q379+qpWrZoGDhyoEydO6MyZM5KksWPHatq0aerYsaMmTZpklzA9/PDDev/999WuXTs9/vjj2rRpkynvAXCE5AIAAPxj7dmzRxEREQ5fc5R4GIZhSru+vr6lrnvo0CH17NlTrVq10kcffaTt27dr1qxZkqTz589LkuLi4rR//34NGDBAO3fuVGRkpF5//XVJUmxsrG1K19GjR9WtWzc9+uijprwP4GIkFwAA4B9p7dq12rlzp+68806HrxdOmcrNzbWVbdu2rcR9ent7Kz8//5Jtt2nTRl999VWp4ty2bZvy8vL0yiuv6IYbblDTpk119OjRIvVCQ0M1YsQIffzxx/rXv/6lN9980/Za3bp1NXjwYL377rtKSkrSvHnzStU24CySCwAAcMXLzc1VZmamjhw5oh9++EHPP/+8brvtNvXu3VsDBw50uE3//v1VUFCgBx98UHv27NGaNWv08ssvS1KxU6nCw8N1+vRpffXVVzp+/LjOnj3rsN6kSZO0ZMkSTZo0SXv27NHOnTv14osvOqzbuHFj5eXl6fXXX9f+/fv1zjvvaO7cuXZ14uPjtWbNGh04cEA//PCD1q5dqxYtWkiSnnnmGX3yySf69ddftWvXLn322We21wCzkVwAAIAr3urVqxUcHKzw8HDdeuutWrdunV577TV98skn8vDwcLhN9erV9emnnyo1NVXt2rXTxIkT9cwzz0iS3XUYF4qOjtaIESPUr18/1a1bt9iEISYmRh988IFWrFihdu3aqWvXrvruu+8c1m3Xrp1mzJih6dOnq1WrVlq8eLESExPt6uTn52vUqFFq0aKFbr31VjVr1sx2sbe3t7cmTJigNm3a6KabbpKHh4fef//9Uh03wFkWw6zJgwAAAFe4xYsX255l4cx1E8A/BbeiBQAAKMaiRYvUqFEj1a9fXz/++KOeeOIJ3XPPPSQWQDFILgAAAIqRmZmpZ555RpmZmQoODtbdd9+t5557zt1hARUW06IAAAAAmIILugEAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgCn+H+b/+fBJD3nyAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def plot_prediction(model, sample_idx=0, classes=range(10)):\n", " fig, (ax0, ax1) = plt.subplots(nrows=1, ncols=2, figsize=(10, 4))\n", @@ -449,11 +564,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Average NLL over the last 100 samples at step 100: 165\n", + "Average NLL over the last 100 samples at step 200: 101\n", + "Average NLL over the last 100 samples at step 300: 698\n", + "Average NLL over the last 100 samples at step 400: 234\n", + "Average NLL over the last 100 samples at step 500: 307\n", + "Average NLL over the last 100 samples at step 600: 73\n", + "Average NLL over the last 100 samples at step 700: 518\n", + "Average NLL over the last 100 samples at step 800: 86\n", + "Average NLL over the last 100 samples at step 900: 209\n", + "Average NLL over the last 100 samples at step 1000: 256\n", + "Average NLL over the last 100 samples at step 1100: 264\n", + "Average NLL over the last 100 samples at step 1200: 111\n", + "Average NLL over the last 100 samples at step 1300: 306\n", + "Average NLL over the last 100 samples at step 1400: 64\n", + "Average NLL over the last 100 samples at step 1500: 64\n" + ] + } + ], "source": [ "lr = LogisticRegression(input_size=X_train.shape[1], output_size=10)\n", "\n", @@ -489,11 +626,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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fLmGDx/u1PKZmZm64YYbtGrVKj333HNasWKFhgwZosTERA0dOrTUdc2YMUPffvutZsyYoXfeeUf/+c9/1KtXLw0ZMkS//fab3n33XdspBRceVpakffv2qXv37po7d65Wrlyp+Ph4/e///q969epl12/OnDl6+OGH1bJlSy1evFjPPPOMJk2aVOQ6lIKCAt1xxx166aWX1LdvX3355Zd66aWXlJKSopiYGP35559OP7+S1ij9fe5k9+7d1aVLFy1dulQjR47UW2+9pT59+tj1e+SRRxQfH69bb71VS5cu1cyZM7Vr1y5FR0fr2LFjl6yncGdY2mtw1qxZI0m67rrrSrU8cLXLz8/X2rVrFRkZWey32qGhoWrXrp3WrFmj/Px8p9a/efNm+fr6qnv37rbTXi8+5XTIkCGqVKmSPvzwQyUlJen7779XTEyMTp486dRYbdu21bx58yRJzzzzjG28i7fFjpS0Bkf7pt9++03R0dFavXq1nn/+eS1btky33nqrHn/8cY0cObLIWNOnT9fKlSuVlJSkDz74QJUqVVJsbKzdKUtHjx5VjRo19NJLL2nlypWaMWOGPD09deONN2rv3r1F1vn0009r//79euedd/TOO+/o6NGjiomJueIvcXr06KEXX3xR0t/7v8LXtEePHsUuU5Jt/pkzZ9S1a1cdO3ZMM2bMUEpKipKSklSvXj2dOnXqkjV98cUX8vDw0C233OLw8St5L8+ePauOHTvqvffe0+jRo7VixQo99dRTSk5O1v/8z//Y/hg2DEO9e/fW+++/r3/9619asmSJbrrpJsXGxpbodZ07d666d++ugoICzZ49W59//rlGjx5tC1bPPvus7rnnHkn2p5MXd2qVs5/BC1/zBQsW6MyZM+revbuys7NtfQqDSGmv7di/f78OHTrkcP8bExOjQ4cO6eeffy7Vut3CQIUxYMAAw9/f366tY8eOhiTj66+/LtJfkjFhwoQi7WFhYcaAAQNs84888ohRuXJl49ChQ3b9Xn31VUOSsWvXrkvW1bFjR6Njx462+QMHDhiSjFatWhn5+fm29qSkJEOS8T//8z92y8fHxxuSjOzsbIfrLygoMM6fP2+sX7/ekGT8+OOPhmEYRn5+vhEUFGTceOONdv0PHTpkeHl5GWFhYba2hQsXGpKMTz/91K7v1q1bDUnGzJkzL/kcJ0yYYFzq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qa5du16ynpiYGL377rv65Zdfiry20pW9l/Hx8fr00091yy23aMyYMWrZsqUKCgqUlpam1atX61//+pduvPFGdevWTbfccouefPJJnTlzRpGRkfr222/1/vvvX3aMypUr67XXXlNcXJxuvfVWDR06VIGBgfr111/1448/2n6wsjCITZ061XbUsGXLlg5PhXb2M1gShw4dUoMGDTRgwIDLXncxevRozZ07V4MHD1aLFi3sbmtrtVqL/C7Hli1bLnnHr3LJ1VeQo/SKu1vUdddd57B/bm6u8eSTTxqhoaGGr6+v0bFjRyM1NdXhnUR+++03Y/To0UZERITh5eVlVK9e3WjXrp0xfvx44/Tp05esq7i7Rb3yyit2/Qrv1PHxxx/btRfeHeLCO05s2rTJiIqKMvz8/IxatWoZcXFxxg8//ODwziZz5swxrr32WsPb29to1KiR8e677xp33HGH0aZNG7t+58+fN1599VWjVatWho+Pj1G5cmWjSZMmxiOPPGLs27fvks/R0Z1DSlpj4fv2008/GTExMYavr69RvXp149FHH3X42r777rvGjTfeaPj7+xu+vr5GgwYNjP79+xvbtm2zW+fFd58prNHRXUouVPg+FDc5usMYAHubN2827rnnHiMwMNDw9PQ0ateubdx1113Gpk2bHPZfvny50bp1a8PX19eoX7++MX36dIfbldTUVKN9+/aGn5+fIcm2bS3cTq5evdro16+fUa1aNcPX19fo3r17ke1XQUGB8fLLLxv169c3fHx8jMjISGPNmjUO73a0cOFCo0mTJoaXl9dl//87U8Ol9k2HDh0y+vbta9SoUcPw8vIyGjdubLzyyit2dxcs3I9MnTrVmDRpklG3bl3D29vbaNOmjbFq1Sq79f3xxx/GkCFDjNq1axt+fn7GzTffbGzcuLHI8y3c9r3//vvG6NGjjVq1ahlWq9Xo0KGD3fbVMEp/tyjD+PvOiBEREYaHh4fd/qC4u4Zdbpv/n//8x3jggQeMBg0aGL6+vkZAQIBxww03GMnJyQ5f3wtlZ2cblStXNl5++WW7drPey9OnTxvPPPOM0bhxY8Pb29sICAgwWrRoYYwZM8bIzMy09Tt58qQxePBgo1q1aoafn5/RtWtX4z//+c9l7xZVaPny5UbHjh0Nf39/w8/Pz2jWrJkxdepU2+O5ublGXFycUatWLcNi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LU0rVqzQli1bdOONN0qS5s6dq6ZNmxZbw4cffqjffvtNW7duVfXq1SVJ1157re3xypUry9PT85KnQS1YsEB//vmn5s+fL39/f0nS9OnT1atXL02dOlWBgYGSpGuuuUbTp0+Xh4eHmjRpoh49eujrr78u83DBaVEAAAC46t10002yXHCnqaioKO3bt0/5+fmSpMjISLv+27dvV3JysipXrmybbrvtNhUUFOjAgQPas2ePPD097ZZr0qSJqlWrVmwNqampatOmjS1YlMaePXvUqlUrW7CQpPbt26ugoEB79+61tV133XXy8PCwzQcHB1/yqIpZOHIBAACAf7wL/1iXpIKCAj3yyCMaPXp0kb716tWz/SFvceLWuL6+vldWpCTDMIod88J2Ly+vIo8VFBRc8fiXw5ELAAAAXPW2bNlSZL5hw4Z23+5fqG3bttq1a5euvfbaIpO3t7eaNm2qvLw8bdu2zbbM3r17dfLkyWJraNmypVJTU/X77787fNzb29t2JKU4zZo1U2pqqt2F5d9++60qVaqkRo0aXXJZVyBcAAAA4KqXnp6uhIQE7d27VwsXLtSbb755yZvSPPXUU9q8ebNGjBih1NRU7du3T8uWLdOoUaMkSY0bN9btt9+uoUOH6rvvvtP27dsVFxd3yaMTDzzwgIKCgtS7d299++232r9/vz799FNt3rxZ0t93rTpw4IBSU1N1/Phx5ebmFlnHgw8+KB8fHw0YMEA///yz1q5dq1GjRqlfv3626y3ciXABAACAK2MYrp1KoX///vrzzz91ww03aMSIERo1apQefvjhYvu3bNlS69ev1759+9ShQwe1adNGzz77rIKDg2195s2bp9DQUHXs2FF33XWXHn74YdWuXbvYdXp7e2v16tWqXbu2unfvrhYtWuill16yHT25++67dfvtt6tTp06qVauWFi5cWGQdfn5+WrVqlX7//Xddf/31uueee9SlSxdNnz69VK+L2bjmAgAAAFc9Ly8vJSUladasWUUeO3jwoMNlrr/+eq1evbrYdQYFBemLL76wa+vXr5/dvHFRGAoLC9Mnn3zicH1Wq9XhYxevo0WLFlqzZk2xdV14S9pCSUlJxfY3E0cuAAAAAJiCcAEAAADAFJwWBQAAgKvaunXr3F3CPwZHLgAAAACYgnABAAAAp1x8gTGuDma8r4QLAAAAlEjhLVPP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HzVr1kxHjhzR0KFDHfb39vZWQECALBaLgoKCLjnuCy+8oPvvv1+TJk2ytbVq1arY/heGmoiICD3//PN69NFHbeEiLS1Nd999t1q0aCFJql+/vq1/Wlqa2rRpo8jISEl/XywOlBVOiwIAAP9YhmEUe73E3r171bJlS/n4+NjabrjhBlPGTU1NVZcuXUrcf+3ateratavq1KmjKlWqqH///jpx4oTOnDkjSRo9erSmTJmi9u3ba8KECXaB6dFHH9VHH32k1q1b68knn9SmTZtMeQ6AI4QLAADwj7Vnzx5FREQ4fMxR8DAMw5RxfX19S9z30KFD6t69u5o3b65PP/1U27dv14wZMyRJ58+flyTFxcVp//796tevn3bu3KnIyEi9+eabkqTY2FjbKV1Hjx5Vly5d9Pjjj5vyPICLES4AAMA/0po1a7Rz507dfffdDh8vPGUqNzfX1rZt27ZLrtPb21v5+fmXHbtly5b6+uuvS1Tntm3blJeXp9dee0033XSTGjVqpKNHjxbpFxoaqmHDhmnx4sX617/+pbffftv2WK1atTRw4EB98MEHSkpK0pw5c0o0NuAswgUAALjq5ebmKjMzU0eOHNEPP/ygF198UXfccYd69uyp/v37O1ymb9++Kigo0MMPP6w9e/Zo1apVevXVVyWp2FOpwsPDdfr0aX399dc6fvy4zp4967DfhAkTtHDhQk2YMEF79uzRzp079fLLLzvs26BBA+Xl5enNN9/U/v379f7772v27Nl2feLj47Vq1SodOHBAP/zwg9asWaOmTZtKkp577jl99tln+vXXX7Vr1y598cUXtscAsxEuAADAVW/lypUKDg5WeHi4br/9dq1du1ZvvPGGPvvsM3l4eDhcpmrVqvr888+Vmpqq1q1ba/z48Xruueckye46jAtFR0dr2LBh6tOnj2rVqlVsYIiJidHHH3+sZcuWqXXr1urcubO+++47h31bt26tadOmaerUqWrevLkWLFigxMREuz75+fkaMWKEmjZtqttvv12NGze2Xezt7e2tcePGqWXLlrrlllvk4eGhjz76qESvG+Asi2HWyYMAAABXuQULFth+y8KZ6yaAfwpuRQsAAFCM+fPnq379+qpTp45+/PFHPfXUU7rvvvsIFkAxCBcAAADFyMzM1HPPPafMzEwFBwfr3nvv1QsvvODusoByi9OiAAAAAJiCC7oBAAAAmIJwAQAAAMAUhAsAAAAApiBcAAAAADAF4QIAAACAKQgXAAAAAExBuAAAAABgCsIFAAAAAFP8PysQ6wxh6cVLAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plot_prediction(lr, sample_idx=0)" ] @@ -525,18 +673,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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nHcA2Kq/2t/999/Pjz/+yKJFi4iKiuKhhx4iMTGRnj17snbtWu666y7eeecdBg4cSHZ2NitWrDjpY40fP56srCx++uknvL29mTJlChkZGSe0e/TRR3nmmWd45plnmDp1Ktdccw1t2rRh2rRptG7dmhtvvJG///3vfP311wAsWrSIu+++mzlz5jBixAi++uorbrjhBlq1asWwYcNOePyCggIuuugizjvvPN5991327dvH3XffXe3viYi4rqSsAp77YRefbziI8+ismD6xTbhjWDuGdmyOrQbvj9K4uF8YKSuEf7ew5rkfSgWfwGo1zc/P5/XXX+ftt9/m/PPPB+Ctt96iVatWACQnJxMYGMhFF11EcHAwsbGxnHXWWVU+1vbt2/n+++9Zs2YNffr0AeC1116jffv2J7S94YYbuOqqqwCYOnUqAwYM4J///CejRo0C4O677+aGG26oaP/UU08xYcIEbr/9dgCmTJnC6tWreeqpp6oMI++99x4Oh4M33niDgIAAunTpwoEDB7jtttuq9X0REddzMKeIF37YxceJB3AcTSHndmjOHcPa0S++4VxSlobL/cKIi9izZw+lpaUMGDCg4lx4eDgdO3YE4Pzzzyc2NpY2bdpwwQUXcMEFF3DppZcSEHDiSPMdO3bg5eVFr169Ks61a9euykGl3bt3r/h7ZGQkAN26dat0rri4GLvdTkhICNu2beOWW26p9BiDBg3iueeeq/J1bdu2jR49elSq8/jXKCLuIyu/hBeX7ub9X5MpdTgBGNaxOVPO70i3VqEWVyeuxP3CiHeA2UNh1XNXk3H87k5VCA4OZt26dfz000989913zJgxg0ceeYQ1a9YQFhZWrceq6vzxM3D+6DKt6pzT6Tzh3PGPe7Lu1j97XSLi+orLHLz5SxIv/bib/JJyAM5uE859IzvSJ049IVJz7jeA1WYzL5VYcdTgemi7du3w9vZm9erVFeeOHDnCzp07K257eXkxYsQInnzySTZt2kRSUhJLly494bE6depEeXl5pYGiu3fvJicn5/S+h8dJSEjg559/rnRu5cqVJCQkVNm+c+fObNy4kaKioopzx79GEXFdhmHw5cZUhj+9jCe+2U5+STndWoby7sT+fHDz2Qoictrcr2fERQQFBTFx4kTuv/9+mjZtSmRkJNOnT8fDw8yHX331FXv37mXIkCE0adKE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "def sigmoid(X):\n", " # Clip X to prevent overflow or underflow\n", " X = np.clip(X, -500, 500) # This ensures that np.exp(X) doesn't overflow\n", - " return None\n", + " return 1 / (1+np.exp(-X))\n", "\n", "\n", - "def dsigmoid(X):\n", - " return None\n", + "def dsigmoid(X): \n", + " return sigmoid(X) * (1 - sigmoid(X))\n", "\n", "\n", "x = np.linspace(-5, 5, 100)\n", @@ -556,7 +715,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -581,17 +740,17 @@ "\n", " def forward_hidden(self, X):\n", " # Compute the linear combination of the input and weights\n", - " self.Z_h = None\n", + " self.Z_h = np.dot(X, self.W_h) + self.b_h\n", "\n", " # Apply the sigmoid activation function\n", - " return None\n", + " return sigmoid(self.Z_h)\n", "\n", " def forward_output(self, H):\n", " # Compute the linear combination of the hidden layer activation and weights\n", - " self.Z_o = None\n", + " self.Z_o = np.dot(H, self.W_o) + self.b_o\n", "\n", " # Apply the sigmoid activation function\n", - " return None\n", + " return sigmoid(self.Z_o)\n", "\n", " def forward(self, X):\n", " # Compute the forward activations of the hidden and output layers\n", @@ -602,7 +761,13 @@ "\n", " def loss(self, X, y):\n", " y = y.astype(int)\n", - " return None\n", + " y_pred = self.forward(X)\n", + " y_true = one_hot(self.output_size, y)\n", + " #Clip predictions to avoid log(0)\n", + " y_pred = np.clip(y_pred, 1e-10, 1 - 1e-10)\n", + " # Compute binary cross-entropy loss for multi-label setup \n", + " loss = -np.mean(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))\n", + " return loss \n", "\n", " def grad_loss(self, X, y_true):\n", " y_true = one_hot(self.output_size, y_true)\n", @@ -665,7 +830,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, "outputs": [], "source": [ @@ -675,27 +840,60 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 25, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.6776155877366775)" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.loss(X_train, y_train)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.float64(0.10216110019646366)" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "model.accuracy(X_train, y_train)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 27, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAULdJREFUeJzt3XlcVGX///H3yDKAC+YGqKhorilq0AJmaqaFy7c9y3LHMreQu7tcyi2LbPGmcstSyTL1W6lZuUS5ZC6lKGXqbZoLqKBpCS4FAuf3Rz/m68iADB5mwF7Px+M8Hp5rrnOuzzkznovPXNc5YzEMwxAAAAAAXKUK7g4AAAAAwLWB5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5KIMs1gsxVrWr1/v1jg7duyojh07ujWG0jZx4kRZLJYSbdu/f39VqlTJ1Hj69++vBg0alHj7L774Qn379lWrVq3k5eVV4mMD/qm2bt2qhx56SEFBQfL29lZgYKAefPBBbdmy5ar2+/LLL2v58uXmBHkFx48f18SJE5WcnOyS9pxx+PBhWSwWvf7666btc/369bJYLPrkk0+uWNfRNd9RX2exWDRx4kTb+p49ezRx4kQdPny4wD6v9rp9NTp37qwhQ4a4pe2iXH7+EhISZLFYHJ6/oqxcudJuP5dq0KCB+vfvX+IYS8OaNWvUrl07+fr6yt/fXz179tTu3bvt6ly8eFGNGjVSfHy8e4K8CiQXZdiWLVvslm7dusnX17dA+Y033ujWOGfOnKmZM2e6NQY4Z9myZdq6datatGih1q1buzscoFx5++231a5dOx09elSvvvqqvv76a73++us6duyYbrvtNk2fPr3E+3Z1cjFp0qQymVy4W3R0dLESxS1btig6Otq2vmfPHk2aNMnhH8cvvPCCli1bZmaYxfLZZ59p06ZNeuGFF1zetrO6d++uLVu2KCgoyKntVq5cqUmTJjl8bdmyZWXq2D/77DNFRUWpVq1a+vTTTzV79mzt379f7du316+//mqr5+XlpfHjx2vy5Mk6ffq0GyN2nqe7A0Dhbr31Vrv1mjVrqkKFCgXKL3fhwgX5+fmVZmh2WrRo4bK2YI53331XFSr8/d3C8OHDlZSU5OaIgPJh06ZNiomJUbdu3bRs2TJ5ev5fN/rII4/ovvvu09NPP622bduqXbt2boy07HF133Q16tatq7p1616x3pX640s1atToakIqsZdffln33Xef6tSpY9o+S+u9rFmzpmrWrGnqPtu2bWvq/q7Wc889p1atWmnp0qW20bHIyEg1adJE48eP18KFC211H330UcXGxuqdd97R2LFj3RWy0xi5KOc6duyoli1b6ttvv1VkZKT8/Pw0cOBASQWHG/M5GiJMT0/Xk08+qbp168rb21shISGaNGmScnJyihXDpUPF+cPZr732mqZOnaoGDRrI19dXHTt21C+//KKLFy9q9OjRql27tvz9/XXffffp5MmTdvtcsmSJunbtqqCgIPn6+qp58+YaPXq0zp8/X6D9d999V02aNJHValWLFi300UcfORx+zs7O1pQpU9SsWTNZrVbVrFlTAwYM0G+//XbFY3TEmRglaffu3ercubMqVqyomjVravjw4bpw4YJdHcMwNHPmTLVp00a+vr667rrr9OCDD+rgwYMlirEw+YkFAOfExcXJYrFo1qxZdomFJHl6emrmzJmyWCx65ZVXbOWFTYe5fOqNxWLR+fPn9f7779umveZfW/OniyQmJmrAgAGqVq2aKlasqJ49exa4PhQ2DeTSa/X69et10003SZIGDBhga6+wqSXOxlBU35SSkqLHH39ctWrVktVqVfPmzfXGG28oLy+vQJt5eXl66aWXVK9ePfn4+Cg8PFzffPONXZ0DBw5owIABaty4sfz8/FSnTh317NlTu3btcngcf/31l2JjYxUYGChfX1916NBBO3futKtT3Kmwl56zhIQEPfTQQ5KkTp062c5pQkKCJMefg+Je83fu3KkePXrYzlnt2rXVvXt3HT16tMj4du7cqR9++EF9+vSxKzfrvczMzNQzzzyjkJAQeXt7q06dOoqJiSnQD2ZmZmrw4MGqXr26KlWqpLvvvlu//PJLgXgLmxa1evVqde7cWf7+/vLz81Pz5s0VFxdnO68zZsyQZD+dPH8fjv4/FOczeOnUvGnTpikkJESVKlVSRESEtm7dWuR5L8zp06e1b98+RUVF2X2+6tevr5YtW2r58uXKzc21lXt7e6tXr16aM2eODMMoUZvuwF8Y14C0tDQ9/vjj6t27t1auXKmhQ4c6tX16erpuvvlmrVmzRuPHj9eqVas0aNAgxcXFafDgwSWOa8aMGdq0aZNmzJih9957T//973/Vs2dPDRo0SL/99pvmzZtnm1Jw6bCyJO3fv1/dunXT3LlztXr1asXExOh///d/1bNnT7t6c+bM0RNPPKHQ0FAtXbpUzz//vCZNmlTgPpS8vDzdc889euWVV9S7d299+eWXeuWVV5SYmKiOHTvqzz//dPr4ihuj9PfcyW7duqlz585avny5hg8frnfeeUe9evWyq/fkk08qJiZGd955p5YvX66ZM2dq9+7dioyM1IkTJ4qMJ78zdPc9OMC1Kjc3V+vWrVN4eHih32oHBwcrLCxMa9eutfsjoTi2bNkiX19fdevWzTbt9fIpp4MGDVKFChX00UcfKT4+Xj/88IM6duyoM2fOONXWjTfeqPnz50uSnn/+eVt7l1+LHSluDI76pt9++02RkZH66quv9OKLL2rFihW688479cwzz2j48OEF2po+fbpWr16t+Ph4ffjhh6pQoYKioqLspiwdP35c1atX1yuvvKLVq1drxowZ8vT01C233KJ9+/YV2OfYsWN18OBBvffee3rvvfd0/PhxdezY8aq/xOnevbtefvllSX/3f/nntHv37oVuU5xr/vnz59WlSxedOHFCM2bMUGJiouLj41WvXj2dPXu2yJi++OILeXh46Pbbb3f4+tW8lxcuXFCHDh30/vvva+TIkVq1apWee+45JSQk6H/+539sfwwbhqF7771XH3zwgf71r39p2bJluvXWWxUVFVWs8zp37lx169ZNeXl5mj17tj7//HONHDnSlli98MILevDBByXZTycvbGqVs5/BS8/5woULdf78eXXr1k0ZGRm2OvmJyJXu7cjOzpYkWa3WAq9ZrVZduHDBbmqU9Hdyd+TIEf38889F7rtMMVBu9OvXz6hYsaJdWYcOHQxJxjfffFOgviRjwoQJBcrr169v9OvXz7b+5JNPGpUqVTKOHDliV+/11183JBm7d+8uMq4OHToYHTp0sK0fOnTIkGS0bt3ayM3NtZXHx8cbkoz/+Z//sds+JibGkGRkZGQ43H9eXp5x8eJFY8OGDYYk48cffzQMwzByc3ONwMBA45ZbbrGrf+TIEcPLy8uoX7++rWzRokWGJOPTTz+1q7tt2zZDkjFz5swij3HChAlGUf9dCovRMP5+3yQZb775pt02L730kiHJ+O677wzDMIwtW7YYkow33njDrl5q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OWL3xD5H1/5ffvmlwM3NJf0GtjgxFKZz587as2ePduzYYVe+YMECWSwWderUya586dKltlFtSTp79qw+//xztW/f3pa8WSyWAtfiL7/8stBpJIsWLbJ78s6RI0e0efNmU34M1plzWpJrvsViUevWrfWf//xHVatWLXAeL9esWbMib1S/mveyR48e+vXXX1W9enWH8eePDuS/p4X1gUWJjIyUv7+/Zs+eXeTTkpw5785+BktLpUqV1KpVKwUFBWnHjh365ptv9PTTTxeol//+lafH/jNycQ3r06ePXnjhBY0fP14dOnTQnj17NH36dPn7+9vVmzx5shITExUZGamRI0eqadOm+uuvv3T48GGtXLlSs2fPNnVI8koiIyN13XXXaciQIZowYYK8vLy0cOHCAkPWFSpU0KRJk/Tkk0/qwQcf1MCBA3XmzBlNmjRJQUFBdvMWH3nkES1cuFDdunXT008/rZtvvlleXl46evSo1q1bp3vuuUf33Xef6THm8/b21htvvKFz587ppptu0ubNmzVlyhRFRUXptttukyS1a9dOTzzxhAYMGKDt27fr9ttvV8WKFZWWlqbvvvtOrVq10lNPPVVoTJMnT9bkyZP1zTffXPG+iyNHjmjbtm2SZHsyRf6v1jZo0EDh4eHFPhfAP0m7du0UHx+vmJgY3XbbbRo+fLjq1aunlJQUzZgxQ99//73i4+MVGRlp26ZXr14aP368HnnkEf373//WX3/9pbfeesvh06RatWql9evX6/PPP1dQUJAqV65s9+XH9u3bFR0drYceekipqakaN26c6tSpY/eUwD59+ujxxx/X0KFD9cADD+jIkSN69dVXC/x+QKNGjeTr66uFCxeqefPmqlSpkmrXrn3FL5SKE0NhRo0apQULFqh79+6aPHmy6tevry+//FIzZ87UU089pSZNmtjV9/DwUJcuXRQbG6u8vDxNnTpVmZmZdj+Y1qNHDyUkJKhZs2YKDQ1VUlKSXnvttUL7rZMnT+q+++7T4MGDlZGRoQkTJsjHx8cuISypli1bSvr7SYaVK1eWj4+PQkJCHI6KFPea/8UXX2jmzJm699571bBhQxmGoaVLl+rMmTPq0qVLkfF07NhR8+bN0y+//FLg3EpX917GxMTo008/1e23365Ro0YpNDRUeXl5SklJ0VdffaV//etfuuWWW9S1a1fdfvvt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ioYMGVIa8QEAAKCMK+s/2vjMM8+oX79+atGihf7880/Nnz/fYb277rpLL7zwgp599ln99ddfGjhwoPr27atdu3bZ6rz44ouqVauW4uLidPDgQVWtWlU33nijxo4d66rDKdOcTi569eql06dPa/LkyUpLS1PLli21cuVK1a9fvzTiAwAAAK5KkyZNtGXLFruy/v37O6w7adKkIh9GZLFYNHLkSI0cOdLMEK8ZJbqhe+jQoRo6dKjZsQAAAAAox5z+ET0AAAAAcITkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAABwdSwW1y5lWIMGDRQfH29bt1gsWr58+VXt04x9uEqJfqEbAAAAwJWlpaXpuuuuK1bdiRMnavny5UpOTi7xPtyN5AIAAAC4RHZ2try9vU3ZV2BgYJnYh6swLQoAAADXtI4dO2r48OEaPny4qlatqurVq+v555+XYRiS/p7KNGXKFPXv31/+/v4aPHiwJGnz5s26/fbb5evrq+DgYI0cOVLnz5+37ffkyZPq2bOnfH19FRISooULFxZo+/IpTUePHtUjjzyiatWqqWLFigoPD9f333+vhIQETZo0ST/++KMsFossFosSEhIc7mPXrl2644475Ovrq+rVq+uJJ57QuXPnbK/3799f9957r15//XUFBQWpevXqGjZsmC5evGjiWXWMkYty4tK5e2XNpEmT3B1CuXP48GF3h1Co9evXuzsEAABM9/7772vQoEH6/vvvtX37dj3xxBOqX7++LZF47bXX9MILL+j555+X9Pcf8HfddZdefPFFzZ07V7/99pstQZk/f76kv/+IT01N1dq1a+Xt7a2RI0fq5MmThcZw7tw5dejQQXXq1NGKFSsUGBioHTt2KC8vT7169dLPP/+s1atX6+uvv5Yk+fv7F9jHhQsXdPfdd+vWW2/Vtm3bdPLkSUVHR2v48OG2ZESS1q1bp6CgIK1bt04HDhxQr1691KZNG9vxlhaSCwAAAFzzgoOD9Z///EcWi0VNmzbVrl279J///Mf2x/Ydd9yhZ555xla/b9++6t27t2JiYiRJjRs31ltvvaUOHTpo1qxZSklJ0apVq7R161bdcsstkqS5c+eqefPmhcbw0Ucf6bffftO2bdtUrVo1SdL1119ve71SpUry9PQs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RCdOnNCUKVMUGRmp3bt3q3r16i6Joaxd35cvX64zZ86of//+LmvzueeeU0ZGhpo1ayYPDw/l5ubqpZde0qOPPuqyGCpXrqyIiAi9+OKLat68uQICArRo0SJ9//33aty4scviuJJyl1zkuzxTNQzDZdlreTZ8+HD99NNPZSrDLYtSU1P19NNP66uvvirwDQEcy8vLU3h4uF5++WVJUtu2bbV7927NmjWL5ALlFn3N39zZdzRt2lTJyck6c+aMPv30U/Xr108bNmxwSYJRFvqCqKgo279btWqliIgINWrUSO+//75iY2NdEkNZu77PnTtXUVFRql27tsvaXLJkiT788EN99NFHuuGGG5ScnKyYmBjVrl1b/fr1c1kcH3zwgQYOHKg6derIw8NDN954o3r37q0dO3a4LIYrKXfTomrUqCEPD48C3xydPHmywDdMsDdixAitWLFC69atU926dd0dTpmWlJSkkydPKiwsTJ6envL09NSGDRv01ltvydPTU7m5ue4OscwJCgoq0Nk3b96cBy2gXKKv+T/u7ju8vb11/fXXKzw8XHFxcWrdurXefPNNl7RdFvuCihUrqlWrVtq/f7/L2ixL1/cjR47o66+/VnR0tEvb/fe//63Ro0frkUceUatWrdSnTx+NGjVKcXFxLo2jUaNG2rBhg86dO6fU1FT98MMPunjxokJCQlwaR1HKXXLh7e2tsLAw21MC8iUmJioyMtJNUZVthmFo+PDhWrp0qdauXVumPoBlVefOnbVr1y4lJyfblvDwcD322GNKTk6Wh4eHu0Msc9q1a1fgMZW//PKL6tev76aIgJKjrym7fYdhGMrKynJJW2WxL8jKytLevXsVFBTksjbL0vV9/vz5qlWrlrp37+7Sdi9cuKAKFez/bPbw8HD5o2jzVaxYUUFBQfrjjz+0Zs0a3XPPPW6Jw5FyOS0qNjZWffr0UXh4uCIiIjRnzhylpKRoyJAh7g6tTBo2bJg++ugjffbZZ6pcubLtmzh/f3/5+vq6ObqyqXLlygXmFVesWFHVq1fnXpVCjBo1SpGRkXr55Zf18MMP64cfftCcOXM0Z84cd4cGlIi7+5pz587pwIEDtvVDhw4pOTlZ1apVU7169Uq9/bLQd4wdO1ZRUVEKDg7W2bNntXjxYq1fv16rV692SftloS945pln1LNnT9WrV08nT57UlClT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plot_prediction(model, sample_idx=5)" ] @@ -711,9 +909,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Random init: train loss: 0.67762, train acc: 0.102, test acc: 0.089\n", + "Epoch #1, train loss: 0.30934, train acc: 0.252, test acc: 0.196\n", + "Epoch #2, train loss: 0.26383, train acc: 0.600, test acc: 0.537\n", + "Epoch #3, train loss: 0.21871, train acc: 0.713, test acc: 0.689\n", + "Epoch #4, train loss: 0.18290, train acc: 0.821, test acc: 0.785\n", + "Epoch #5, train loss: 0.14755, train acc: 0.889, test acc: 0.885\n", + "Epoch #6, train loss: 0.12316, train acc: 0.905, test acc: 0.904\n", + "Epoch #7, train loss: 0.10697, train acc: 0.916, test acc: 0.907\n", + "Epoch #8, train loss: 0.09611, train acc: 0.915, test acc: 0.904\n", + "Epoch #9, train loss: 0.08782, train acc: 0.916, test acc: 0.900\n", + "Epoch #10, train loss: 0.08132, train acc: 0.921, test acc: 0.907\n", + "Epoch #11, train loss: 0.07615, train acc: 0.923, test acc: 0.904\n", + "Epoch #12, train loss: 0.07195, train acc: 0.925, test acc: 0.900\n", + "Epoch #13, train loss: 0.06886, train acc: 0.926, test acc: 0.893\n", + "Epoch #14, train loss: 0.06529, train acc: 0.927, test acc: 0.896\n", + "Epoch #15, train loss: 0.05866, train acc: 0.940, test acc: 0.900\n" + ] + } + ], "source": [ "losses, accuracies, accuracies_test = [], [], []\n", "losses.append(model.loss(X_train, y_train))\n", @@ -736,19 +957,51 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Training loss')" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGxCAYAAACwbLZkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQnBJREFUeJzt3Xl8VPW9//H3ZCYz2SckgUAghESQLbgQKhJAXEpuca/XSouArdjKLS6ItUKxV0utqdgibRWU4vLTimKvVK1FbazIIioYwA1QlEgCSQgJkD2TZOb8/kgyEAIhEyY5Seb1fDzOw8x3zpn5DOjk7fd8F4thGIYAAABMEmR2AQAAILARRgAAgKkIIwAAwFSEEQAAYCrCCAAAMBVhBAAAmIowAgAATEUYAQAApiKMAAAAUxFGgG7IYrG06XjvvffO6H0eeOABWSyWdl373nvv+aWG7vbeAHxnM7sAAL774IMPmj3+7W9/q3Xr1undd99t1j5ixIgzep9bbrlF3/ve99p17ejRo/XBBx+ccQ0Aej7CCNANXXjhhc0e9+7dW0FBQS3aT1RVVaWwsLA2v8+AAQM0YMCAdtUYFRV12noAQOI2DdBjXXzxxUpNTdWGDRuUnp6usLAw3XzzzZKk1atXKyMjQ/369VNoaKiGDx+u+fPnq7KystlrnOw2zaBBg3TllVfqrbfe0ujRoxUaGqphw4bp6aefbnbeyW6V/PjHP1ZERIS+/vprXX755YqIiFBiYqLuvvtuuVyuZtfv379f119/vSIjIxUdHa0bb7xRW7dulcVi0bPPPtuuP5PXX39d48aNU1hYmCIjIzV58uQWvUyHDh3Sz372MyUmJsrhcKh3794aP3683nnnHe8527dv15VXXqk+ffrI4XAoISFBV1xxhfbv39+uuoBAR88I0IMVFBRo+vTp+uUvf6mHHnpIQUEN//+xZ88eXX755Zo7d67Cw8O1e/duPfzww9qyZUuLWz0n88knn+juu+/W/PnzFR8fr5UrV2rWrFkaPHiwLrroolavraur09VXX61Zs2bp7rvv1oYNG/Tb3/5WTqdT//u//ytJqqys1CWXXKLDhw/r4Ycf1uDBg/XWW29p6tSp7f6zWLVqlW688UZlZGToxRdflMvl0uLFi3XxxRfrP//5jyZMmCBJmjFjhrZt26bf/e53Ovvss3X06FFt27ZNJSUl3tomT56s5ORkPf7444qPj1dhYaHWrVun8vLydtcHBDQDQLd30003GeHh4c3aJk2aZEgy/vOf/7R6rcfjMerq6oz169cbkoxPPvnE+9z9999vnPg1kZSUZISEhBj79u3ztlVXVxsxMTHGrbfe6m1bt26dIclYt25dszolGS+//HKz17z88suNoUOHeh8//vjjhiTjzTffbHberbfeakgynnnmmVY/04nv7Xa7jYSEBGPUqFGG2+32nldeXm706dPHSE9P97ZFREQYc+fOPeVrf/zxx4Yk49VXX221BgBtx20aoAfr1auXLr300hbte/fu1bRp09S3b19ZrVYFBwdr0qRJkqRdu3ad9nXPO+88DRw40Ps4JCREZ599tvbt23faay0Wi6666qpmbeecc06za9evX6/IyMgWg2d/9KMfnfb1T+bLL79Ufn6+ZsyY4e0dkqSIiAj993//tz788ENVVVVJki644AI9++yzevDBB/Xhhx+qrq6u2WsNHjxYvXr10r333qsnnnhCO3fubFdNAI4hjAA9WL9+/Vq0VVRUaOLEifroo4/04IMP6r333tPWrVu1Zs0aSVJ1dfVpXzc2NrZFm8PhaNO1YWFhCgkJaXFtTU2N93FJSYni4+NbXHuytrZousVysj+PhIQEeTweHTlyRFLDeJqbbrpJK1eu1Lhx4xQTE6OZM2eqsLBQkuR0OrV+/Xqdd955+tWvfqWRI0cqISFB999/f4vgAqBtGDMC9GAnWyPk3XffVX5+vt577z1vb4gkHT16tBMra11sbKy2bNnSor0pELTn9aSGMTQnys/PV1BQkHr16iVJiouL09KlS7V06VLl5ubq9ddf1/z581VUVKS33npLkjRq1Ci99NJLMgxDn376qZ599lktWrRIoaGhmj9/frtqBAIZPSNAgGkKKA6Ho1n7k08+aUY5JzVp0iSVl5frzTffbNb+0ksvtev1hg4dqv79+2vVqlUyDMPbXllZqVdeecU7w+ZEAwcO1G233abJkydr27ZtLZ63WCw699xz9eijjyo6Ovqk5wA4PXpGgACTnp6uXr16afbs2br//vsVHBysF154QZ988onZpXnddNNNevTRRzV9+nQ9+OCDGjx4sN588029/fbbktRs3EdbBAUFafHixbrxxht15ZVX6tZbb5XL5dIjjzyio0eP6ve//70kqbS0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PSRJOv/88/XFF19o+fLlPTKMrF69Wn/729+0atUqjRw5Ujt27NDcuXOVkJCgm266yezyOk0gfn/V1dXphz/8oTwej5YtW2Z2OR0iOztbf/rTn7Rt27Ye//d5vIC8TRMXFyer1dqiF6SoqKjF/230JLfffrtef/11rVu3TgMGDDC7nA6TnZ2toqIipaWlyWazyWazaf369frzn/8sm80mt9ttdol+1a9fP40YMaJZ2/Dhw3vkYGxJuueeezR//nz98Ic/1KhRozRjxgzdddddyszMNLu0TtG3b19JCrjvr7q6Ot1www3KyclRVlZWj+0V2bhxo4qKijRw4EDv99e+fft09913a9CgQWaX12ECMozY7XalpaUpKyurWXtWVpbS09NNqqrjGIah2267TWvWrNG7776r5ORks0vqUJdddpk+++wz7dixw3uMGTNGN954o3bs2CGr1Wp2iX41fvz4FlO1v/rqKyUlJZlUUceqqqpSUFDzry6r1dqjpva2Jjk5WX379m32/VVbW6v169f3yO8v6VgQ2bNnj9555x3FxsaaXVKHmTFjhj799NNm318JCQm655579Pbbb5tdXocJ2Ns08+bN04wZMzRmzBiNGzdOK1asUG5urmbPnm12aX43Z84crVq1Sq+99poiIyO9/0fldDoVGhpqcnX+FxkZ2WI8THh4uGJjY3vkOJm77rpL6enpeuihh3TDDTdoy5YtWrFihVasWGF2aR3iqquu0u9+9zsNHDhQI0eO1Pbt27VkyRLdfPPNZpfmNxUVFfr666+9j3NycrRjxw7FxMRo4MCBmjt3rh566CENGTJEQ4YM0UMPPaSwsDBNmzbNxKrbr7XPm5CQoOuvv17btm3TG2+8Ibfb7f0Oi4mJkd1uN6vsdjvd3++JYSs4OFh9+/bV0KFDO7vUzmPuZB5zPf7440ZSUpJht9uN0aNH99iprpJOejzzzDNml9ZpevLUXsMwjH/+859Gamqq4XA4jGHDhhkrVqwwu6QOU1ZWZtx5553GwIEDjZCQECMlJcVYuHCh4XK5zC7Nb9atW3fS/2ZvuukmwzAapvfef//9Rt++fQ2Hw2FcdNFFxmeffWZu0Wegtc+bk5Nzyu+wdevWmV16u5zu7/dEgTC112IYhtFJuQcAAKCFgBwzAgAAug7CCAAAMBVhBAAAmIowAgAATEUYAQAApiKMAAAAUxFGAACAqQgjAADAVIQRAABgKsIIAAAwFWEEAACY6v8DOKTeX7Nb638AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.plot(losses)\n", - "plt.title(\"Training loss\");" + "plt.title(\"Training loss\")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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cJOfn8/69etZv3494J7qvX79+ooVSadPn86ECRMq+k+aNIldu3Yxbdo0tm7dyoIFC3jttde4++67zShfRESkdoYBJQWev53Cethz5sxh4MCB/OlPfyIjI4OMjAx8fHwYNmwY/fr1Y82aNXzxxRfs37+fMWPGAJCRkcG1117LTTfdxNatW/n++++54oorMAyDu+++mzFjxnDJJZdUvN6gQYMa6xOulamnpdasWcP5559fcX/atGkA3HDDDbzxxhtkZGRUWXo9Li6OxYsXc9ddd/H3v/+d6OhoXnzxRU0DFxGRpqe0EGZFe/59H0gH36CT6hoSEoKvry+BgYFERUUB8PDDDzNgwABmzZpV0W/BggXExMSwbds28vPzcTgcXHHFFcTGxgLQp0+fir4BAQEUFxdXvJ4ZTA035513XsWA4Jq88cYb1dqGDRvG2rVrG7EqERGRlislJYXvvvuOVq1aVXts+/btJCUlceGFF9KnTx+GDx9OUlISV111FW3btjWh2po1qwHFIiIizYZPoPsoihnvWw8ul4vRo0fz1FNPVXusffv22Gw2kpOTWb58OV999RUvvfQSM2bMYOXKlcTFxdXrvRuKwo2IiEhjsFhO+vSQmXx9fXE6nRX3BwwYwIcffkjnzp2x22uOCRaLhcGDBzN48GAefvhhYmNj+eijj5g2bVq11zNDs5otJSIiIg2rc+fOrFy5kp07d5KVlcXkyZPJzs7m2muvZdWqVezYsYOvvvqKm266CafTycqVK5k1axZr1qwhLS2NRYsWceDAAXr16lXxej///DO//vorWVlZta4g0JgUbkRERFqwu+++G5vNRu/evYmIiKCkpIRly5bhdDoZPnw48fHx3HnnnYSEhGC1WgkODuaHH35g5MiRdO/enQcffJBnn322Yq3IP/3pT/To0YPExEQiIiJYtmyZx/fJYhxvRK8Xys3NJSQkhJycHIKDg80uR0REvEBRURGpqanExcXh7+9vdjnN1vE+x1P5/taRGxEREfEqCjciIiLiVRRuRERExKso3IiIiIhXUbgRERERr6JwIyIi0kBa2ATkBtdQn5/CjYiISD35+PgAUFhYaHIlzVtJSQkANputXq+j5RdERETqyWaz0aZNGzIzMwEIDAzEYrGYXFXjMwyDUqdBqdNJicOg1Omi1OkCoEPbU1vjyuVyceDAAQIDA2td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jWrv3r1cf/31hIWFERgYSL9+/UhJSTG7rEbhcDh48MEHiYuLIyAggC5dujBz5kxcLpfZpTWIH374gdGjRxMdHY3FYuHjjz+u8rhhGDz66KNER0cTEBDAeeedx+bNm80ptgEcb39LS0u577776NOnD0FBQURHRzNhwgTS09PNK7ieTvT7rezWW2/FYrHwwgsveKw+syjcNICFCxcydepUZsyYwbp16xg6dCgjRoyoMo3dmyxZsoTJkyfz008/kZycjMPhICkpiYKCArNLa1SrV69m/vz59O3b1+xSGtWhQ4cYPHgwPj4+fP7552zZsoVnn3220a/sbZannnqKV155hblz57J161aefvppnnnmGV566SWzS2sQBQUFnHHGGcydO7fGx59++mmee+455s6dy+rVq4mKiuLiiy8mLy/Pw5U2jOPtb2FhIWvXruWhhx5i7dq1LFq0iG3btvGHP/zBhEobxol+v+U+/vhjVq5ceVJLF3gFQ+rtrLPOMiZNmlSlrWfPnsb9999vUkWelZmZaQDGkiVLzC6l0eTl5RndunUzkpOTjWHDhhl33nmn2SU1mvvuu88YMmSI2WV4zKhRo4ybbrqpStsVV1xhXH/99SZV1HgA46OPPqq473K5jKioKOPJJ5+saCsqKjJCQkKMV155xYQKG9ax+1uTVatWGYCxa9cuzxTViGrb3z179hgdOnQwNm3aZMTGxhrPP/+8x2vzNB25qaeSkhJSUlJISkqq0p6UlMTy5ctNqsqzcnJyAAgNDTW5ksYzefJkRo0axUUXXWR2KY3u008/JTExkauvvpp27drRv39//vnPf5pdVqMZMmQI33zzDdu2bQNgw4YN/Pjjj4wcOdLkyhpfamoq+/btq/L3y8/Pj2HDhrWov18Wi8Vrj0y6XC7Gjx/PPffcw+mnn252OR5j+qrgzV1WVhZOp7PaYp+RkZHVFvn0RoZhMG3aNIYMGUJ8fLzZ5TSK9957j7Vr17J69WqzS/GIHTt28PLLLzNt2jQeeOABVq1axZQpU/Dz86uyHIq3uO+++8jJyaFnz57YbDacTidPPPEE1157rdmlNbryv1E1/f3atWuXGSV5VFFREffffz/jxo3zmoUlj/XUU09ht9uZMmWK2aV4lMJNA7FYLFXuG4ZRrc0b3X777fz888/8+OOPZpfSKHbv3s2dd97JV199hb+/v9nleITL5SIxMZFZs2YB0L9/fzZv3szLL7/sleFm4cKFvPXWW7zzzjucfvrprF+/nqlTpxIdHc0NN9xgdnke0RL/fpWWlnLNNdfgcrmYN2+e2eU0ipSUFObMmcPatWu9/vd5LJ2Wqqfw8HBsNlu1ozSZmZnV/jXkbe644w4+/fRTvvvuOzp27Gh2OY0iJSWFzMxMEhISsNvt2O12lixZwosvvojdbsfpdJpdYoNr3749vXv3rtLWq1cvrx0gf88993D//fdzzTXX0KdPH8aPH89dd93F7NmzzS6t0UVFRQG0uL9fpaWljBkzhtTUVJKTk732qM3SpUvJzMykU6dOFX+/du3axV/+8hc6d+5sdnmNSuGmnnx9fUlISCA5OblKe3JyMoMGDTKpqsZlGAa33347ixYt4ttvvyUuLs7skhrNhRdeyMaNG1m/fn3FLTExkeuuu47169djs9nMLrHBDR48uNrU/m3btlUsaOttCgsLsVqr/im02WxeMxX8eOLi4oiKiqry96ukpIQlS5Z47d+v8mDz22+/8fXXXxMWFmZ2SY1m/Pjx/Pzzz1X+fkVHR3PPPffw5Zdfml1eo9JpqQYwbdo0xo8fT2JiIgMHDmT+/PmkpaUxadIks0trFJMnT+add97hk08+oXXr1hX/6gsJCSEgIMDk6hpW69atq40lCgoKIiwszGvHGN11110MGjSIWbNmMWbMGFatWsX8+fOZP3++2aU1itGjR/PEE0/QqVMnTj/9dNatW8dzzz3HTTfdZHZpDSI/P5/ff/+94n5qairr168nNDSUTp06MXXqVGbNmkW3bt3o1q0bs2bNIjAwkHHjxplYdd0db3+jo6O56qqrWLt2LZ999hlOp7Pi71doaCi+vr5mlV1nJ/r9HhvefHx8iIqKokePHp4u1bPMnazlPf7+978bsbGxhq+vrzFgwACvnhYN1Hh7/fXXzS7NI7x9KrhhGMZ///tfIz4+3vDz8zN69uxpzJ8/3+ySGk1ubq5x5513Gp06dTL8/f2NLl26GDNmzDCKi4vNLq1BfPfddzX+/3rDDTcYhuGeDv7II48YUVFRhp+fn3HuuecaGzduNLfoejje/qamptb69+u7774zu/Q6OdHv91gtZSq4xTAMw0M5SkRERKTRacyNiIiIeBWFGxEREfEqCjciIiLiVRRuRERExKso3IiIiIhXUbgRERERr6JwIyIiIl5F4UZERES8isKNiIiIeBWFGxEREfEqCjciIiLiVRRuRERExKv8P1YOkLib7NqXAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.plot(accuracies, label='train')\n", "plt.plot(accuracies_test, label='test')\n", @@ -759,9 +1012,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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o//93/9Vr169bOotWLBAjz/+uFq1aqWPP/5Yzz33nKZOnVrgPpS8vDzdc889eumll9S3b199/vnneumll5SYmKhOnTrpjz/+cPj4ihuj9Nfcye7du6tLly5atWqVRo4cqbfeekt9+vSxqffEE08oJiZGd955p1atWqW5c+dq7969ioiI0KlTp4qMJ78zdPU9OMD1Kjc3Vxs3blRYWFih32qHhISoXbt22rBhg3Jzcx3a//bt2+Xj46Pu3btbp71eOeV0yJAhqlChgj744APFx8fru+++U6dOnXTu3DmH2rrpppu0ePFiSdJzzz1nbe/Ka7E9xY3BXt/066+/KiIiQl988YVeeOEFrV69WnfeeafGjh2rkSNHFmhr9uzZWrduneLj4/X++++rQoUKioqKspmydPLkSfn7++ull17SunXrNGfOHLm7u+vWW2/VgQMHCuxzwoQJOnz4sN555x298847OnnypDp16nTNX+L06NFDM2bMkPRX/5d/Tnv06FHoNsW55l+8eFFdu3bVqVOnNGfOHCUmJio+Pl5169bV+fPni4zps88+k5ubm26//Xa7r1/Le3np0iVFRkbq3Xff1ahRo7R27Vo9++yzSkhI0P/8z/9Y/xg2DEO9e/fWe++9p3/9619auXKlbrvtNkVFRRXrvC5cuFDdu3dXXl6e5s+fr08//VSjRo2yJlbPP/+8HnjgAUm208kLm1rl6Gfw7+d86dKlunjxorp3766MjAxrnfxEpDTu7ejUqZOOHTumn376yfR9lxoD5caAAQOMihUr2pRFRkYakoyvvvqqQH1JxuTJkwuU16tXzxgwYIB1/YknnjAqVapkHDt2zKbeq6++akgy9u7dW2RckZGRRmRkpHX9yJEjhiSjdevWRm5urrU8Pj7ekGT8z//8j832MTExhiQjIyPD7v7z8vKMy5cvG5s3bzYkGT/88INhGIaRm5trBAYGGrfeeqtN/WPHjhkeHh5GvXr1rGXLli0zJBkfffSRTd2dO3cakoy5c+cWeYyTJ082ivrvUliMhvHX+ybJeP311222efHFFw1Jxtdff20YhmFs377dkGS89tprNvVSU1MNHx8f45lnnrHZ59+PzzAMY+rUqYabm5uxadOmIo/lSiNGjCjy2AD8JT093ZBkPPzww0XW69OnjyHJOHXqlGEY9v+/Gob960rFihVtrs/5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AACmILkAAADAtbFYnLuUYfXr11d8fLx13WKxaNWqVde0TzP24Swl+oVuAAAAAFeXlpamatWqFavulClTtGrVKiUnJ5d4H65GcgEAAAD8TXZ2tjw9PU3ZV2BgYJnYh7MwLQoAAADXtU6dOmnkyJEaOXKkqlatKn9/fz333HMyDEPSX1OZpk+froEDB8rPz09Dhw6VJG3btk233367fHx8FBISolGjRunixYvW/Z4+fVq9evWSj4+PQkNDtXTp0gJtXzml6fjx43r44YdVvXp1VaxYUWFhYfr222+VkJCgqVOn6ocffpDFYpHFYlFCQoLdfezZs0d33HGHfHx85O/vr8cff1wXLlywvj5w4ED17t1br776qoKCguTv768RI0bo8uXLJp5V+xi5KCc2bdrk6hAK9e6777o6hHLnyuHOsiQmJsbVIQAAYLp3331XQ4YM0bfffqtdu3bp8ccfV7169ayJxCuvvKLnn39ezz33nKS//oC/66679MILL2jhwoX69ddfrQnK4sWLJf31R3xqaqo2bNggT09PjRo1SqdPny40hgsXLigyMlK1a9fW6tWrFRgYqO+//155eXnq06ePfvrpJ61bt05ffvmlJMnPz6/APi5duqS7775bt912m3bu3KnTp08rOjpaI0eOtCYjkrRx40YFBQVp48aNOnTokPr06aM2bdpYj7e0kFwAAADguhcSEqJ///vfslgsatKkifbs2aN///vf1j+277jjDo0dO9Zav3///urbt6/1S7dGjRrpjTfeUGRkpObNm6eUlBStXbtWO3bs0K233ipJWrhwoZo1a1ZoDB988IF+/fVX7dy5U9WrV5ck3XDDDdbXK1WqJHd39yKnQS1dulR//PGHlixZoooVK0qSZs+erV69emnmzJkKCAiQJFWrVk2zZ8+Wm5ubmjZtqh49euirr74q9eSCaVEAAAC47t12222y/O1JU+Hh4Tp48KByc3MlSWFhYTb1k5KSlJCQoEqVKlmXu+66S3l5eTpy5Ij2798vd3d3m+2aNm2qqlWrFhpDcnKy2rZta00sSmL//v1q3bq1NbGQpPbt2ysvL08HDhywlt14441yc3OzrgcFBRU5qmIWRi4AAADwj/f3P9YlKS8vT0888YRGjRpVoG7dunWtf8hbHHg0ro+Pz7UFKckwjELb/Hu5h4dHgdfy8vKuuf2rYeQC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RUVZ/92yZUuFh4erYcOGevfddxUbG+uUGMra9X3hwoWKiopScHCw09pcsWKF3n//fX3wwQe68cYblZycrJiYGAUHB2vAgAFOi+O9997T4MGDVbt2bbm5uemmm25S37599f333zsthqspd9OiatSoITc3twLfHJ0+fbrAN0yw9dRTT2n16tXauHGj6tSp4+pwyrSkpCSdPn1a7dq1k7u7u9zd3bV582a98cYbcnd3V25urqtDLHOCgoIKdPbNmjXjQQsol+hr/j9X9x2enp664YYbFBYWpri4OLVu3Vqvv/66U9oui31BxYoV1bJlSx08eNBpbZal6/uxY8f05ZdfKjo62qntPv300xo3bpwefvhhtWzZUv369dOYMWMUFxfn1DgaNmyozZs368KFC0pNTdV3332ny5cvKzQ01KlxFKXcJReenp5q166d9SkB+RITExUREeGiqMo2wzA0cuRIffzxx9qwYUOZ+gCWVV26dNGePXuUnJxsXcLCwvToo48qOTlZbm5urg6xzGnfvn2Bx1T+/PPPqlevnosiAkqOvqbs9h2GYSgrK8spbZXFviArK0v79+9XUFCQ09osS9f3xYsXq1atWurRo4dT27106ZIqVLD9s9nNzc3pj6LNV7FiRQUFBen333/X+vXrdc8997gkDnvK5bSo2NhY9evXT2FhYQoPD9eCBQuUkpKiYcOGuTq0MmnEiBH64IMP9Mknn6hy5crWb+L8/Pzk4+Pj4ujKpsqVKxeYV1yxYkX5+/tzr0ohxowZo4iICM2YMUMPPfSQvvvuOy1YsEALFixwdWhAibi6r7lw4YIOHTpkXT9y5IiSk5NVvXp11a1bt9TbLwt9x4QJExQVFaWQkBCdP39ey5cv16ZNm7Ru3TqntF8W+oKxY8eqV69eqlu3rk6fPq3p06crMzPTqVNxysr1PS8vT4sXL9aAAQPk7u7cP2F79eqlF198UXXr1tWNN96o3bt3a9asWRo8eLBT41i/fr0Mw1CTJk106NAhPf3002rSpIkGDRrk1DiK5LoHVV2bOXPmGPXq1TM8PT2Nm266yeWPxivLJNldFi9e7OrQyhUeRXt1n376qdGiRQvDy8vLaNq0qbFgwQJXhwRcE1f2NRs3brR77R4wYIBT2i8LfcfgwYOt579mzZpGly5djC+++MJp7dvj7L6gT58+RlBQkOHh4WEEBwcb9913n7F3716ntZ+vLFzf169fb0gyDhw44PS2MzMzjdGjRxt169Y1vL29jQYNGhgTJ040srKynBrHihUrjAYNGhienp5GYGCgMWLECOPcuXNOjeFqLIZhGM5OaAAAAABcf8rdPRcAAAAAyiaSCwAAAACmILkAAAAAYAqSCwAAAACmILkAAAAAYAqSCwAAAACmILkAAAAAYAqSCwAAAACmILkAAAD4PxaLRatWrSp2/U2bNslisejcuXOmxlG/fn3Fx8ebuk/AGUguAADAdW3gwIGyWCyyWCzy8PBQQECAunbtqkWLFikvL8+mblpamqKiooq974iICKWlpcnPz0+SlJCQoKpVq5oZPlCukFwAAIDr3t133620tDQdPXpUa9euVefOnTV69Gj17NlTOTk51nqBgYHy8vIq9n49PT0VGBgoi8VSGmED5Q7JBQAAuO55eXkpMDBQtWvX1k033aQJEybok08+0dq1a5WQkGCtd+W0qG3btqlNmzby9vZWWFiYVq1aJYvFouTkZEm206I2bdqkQYMGKSMjwzpSMmXKlEJjWr16tcLCwuTt7a0aNWrovvvuK7TurFmz1LJlS1WsWFEhISEaPny4Lly4YH392LFj6tWrl6pVq6aKFSvqxhtv1Jo1ayRJv//+ux599FHVrFlTPj4+atSokRYvXlyi8whcjburAwAAAHCFO+64Q61bt9bHH3+s6OjoAq+fP39evXr1Uvfu3fXBBx/o2LFjiomJKXR/ERERio+P16RJk3TgwAFJUqVKlezW/fzzz3Xfffdp4sSJeu+995Sdna3PP/+80H1XqFBBb7zxhurXr68jR45o+PDheuaZZzR37lxJ0ogRI5Sdna0tW7aoYsWK2rdvn7Xt559/Xvv27dPatWtVo0YNHTp0SH/88UdxTxPgEJILAADwj9W0aVP9+OOPdl9bunSpLBaL3n77bXl7e6t58+Y6ceKEhg4dare+p6en/Pz8ZLFYFBgYWGS7L774oh5++GFNnTrVWta6detC6/89qQkNDdULL7ygJ5980ppcpKSk6P7771fLli0lSQ0aNLDWT0lJUdu2bRUWFibpr5vFgdLCtCgAAPCPZRhGofdLHDhwQK1atZK3t7e17JZbbjGl3eTkZHXp0qXY9Tdu3KiuXbuqdu3aqly5svr376+zZ8/q4sWLkqRRo0Zp+vTpat++vSZPnmyTMD355JNavny52rRpo2eeeUbbtm0z5RgAe0guAADAP9b+/fsVGhpq9zV7iYdhGKa06+PjU+y6x44dU/fu3dWiRQt99NFHSkpK0pw5cyRJly9fliRFR0fr8OHD6tevn/bs2aOwsDC9+eabkqSoqCjrlK6TJ0+qS5cuGjt2rCnHAVyJ5AIAAPwjbdiwQXv27NH9999v9/X8KVNZWVnWsl27dhW5T09PT+Xm5l617VatWumrr74qVpy7du1STk6OXnvtNd12221q3LixTp48WaBeSEiIhg0bpo8//lj/+te/9Pbbb1tfq1mzpgYOHKj3339f8fHxWrBgQbHaBhxFcgEAAK57WVlZSk9P14kTJ/T9999rxowZuueee9SzZ0/179/f7jZ9+/ZVXl6eHn/8ce3fv1/r16/Xq6++KkmFTqWqX7++Lly4oK+++kpnzpzRpUuX7NabPHmyli1bpsmTJ2v//v3as2ePXn75Zbt1GzZsqJycHL355ps6fPiw3nvvPc2fP9+mTkxMjNavX68jR47o+++/14YNG9SsWTNJ0qRJk/TJJ5/o0KFD2rt3rz777DPra4DZSC4AAMB1b926dQoKClL9+vV19913a+PGjXrjjTf0ySefyM3Nze42VapU0aeffqrk5GS1adNGEydO1KRJkyTJ5j6Mv4uIiNCwYcPUp08f1axZs9CEoVOnTvrwww+1evVqtWnTRnfccYe+/fZbu3XbtGmjWbNmaebMmWrRooWWLl2quLg4mzq5ubkaMWKEmjVrprvvvltNmjSx3uzt6emp8ePHq1WrVrr99tvl5uam5cuXF+u8AY6yGGZNHgQAALjOLV261PpbFo7cNwH8U/AoWgAAgEIsWbJEDRo0UO3atfXDDz/o2Wef1UMPPURiARSC5AIAAKAQ6enpmjRpktLT0xUUFKQHH3xQL774oqvDAsospkUBAAAAMAU3dAMAAAAwBckFAAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAAAwBckFAAAAAFP8Px4m31Vk/1nxAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plot_prediction(model, sample_idx=4)" ] @@ -781,11 +1045,89 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sample #121, Loss: 7.3973\n", + "Sample #107, Loss: 7.2601\n", + "Sample #9, Loss: 5.8910\n", + "Sample #69, Loss: 5.2909\n", + "Sample #99, Loss: 4.2258\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUElJREFUeJzt3XlcVGX///H3CDKAC+6AiormmmuSBWaipoXLN1styx3LXJHbSrPcUtEWbyq3LBUtU7/dpVm5RLmWWmpSpt6muYAKmpbgkihwfn/0Y76ODMjgYQbs9Xw8zuPhueY65/qcM+O5+My5zjUWwzAMAQAAAMBNKuHuAAAAAADcGkguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguijCLxZKvZePGjW6NMzw8XOHh4W6NobBNmDBBFoulQNv27dtXpUuXNjWevn37qlatWgXePjw83OFn6YEHHjAvSOAWtn37dj322GMKDAyUl5eXAgIC9Oijj2rbtm03td+pU6dq5cqV5gR5AydPntSECROUkJDgkvaccfToUVksFr3xxhum7XPjxo2yWCz6z3/+c8O6jq75jvo6i8WiCRMm2Nb37dunCRMm6OjRozn2ebPX7ZvRoUMHDRo0yC1t5+X68xcXFyeLxeLw/OVl9erVdvu5Vq1atdS3b98Cx2i248ePKyoqSm3btlW5cuVksVgUFxeXo97Vq1dVp04dxcbGujzGm+Xp7gCQu+s7qVdffVUbNmzQ+vXr7cobNWrkyrBymD17tlvbR8HUrl1bS5YssSsrV66ce4IBipF33nlHUVFRatWqlV577TXVrFlTiYmJmjVrlu655x699dZbGjp0aIH2PXXqVD366KPq3r27uUE7cPLkSU2cOFG1atVS8+bNC7294iQyMjJfX7Zs27ZN1atXt63v27dPEydOVHh4eI5E4pVXXtGIESPMDvWGPvvsM3333XdavHixy9t2VpcuXbRt2zYFBgY6td3q1as1a9YshwnGihUrVLZsWZMivHmHDh3SkiVL1Lx5c3Xu3FlLly51WK9kyZIaN26cRo4cqV69eqlixYoujrTgSC6KsLvvvttuvXLlyipRokSO8utdunRJvr6+hRmaHXcnNygYHx+fG36WANj77rvvFBUVpc6dO2vFihXy9Py/bvSJJ57QQw89pBEjRqhFixZq3bq1GyMtelzdN92M6tWr2yUNuXHmGlqnTp2bCanApk6dqoceekjVqlUzbZ+F9V5WrlxZlStXNnWfLVq0MHV/N+vee+/V77//LknauXNnrsmFJD355JOKjo7Wu+++q5deeslVId40hkUVc+Hh4WrcuLE2b96ssLAw+fr6qn///pJy3m7M5ugWYUpKip599llVr15dXl5eCg4O1sSJE5WRkZGvGK69VZx9O/v111/X9OnTVatWLfn4+Cg8PFy//vqrrl69qtGjR6tq1ary8/PTQw89pNOnT9vtc/ny5erUqZMCAwPl4+Ojhg0bavTo0bp48WKO9t977z3Vq1dPVqtVjRo10kcffeTw9vOVK1c0efJkNWjQQFarVZUrV1a/fv1s/8md5UyMkrR371516NBBpUqVUuXKlTV06FBdunTJro5hGJo9e7aaN28uHx8flS9fXo8++qgOHz5coBgBmCsmJkYWi0Vz5syxSywkydPTU7Nnz5bFYtG0adNs5bkNh7l+6I3FYtHFixe1aNEi21DF7Gtr9nCR+Ph49evXTxUqVFCpUqXUrVu3HNeH3IaBXHut3rhxo+68805JUr9+/Wzt5Ta0xNkY8uqbEhMT9fTTT6tKlSqyWq1q2LCh3nzzTWVlZeVoMysrS1OmTFGNGjXk7e2tkJAQffPNN3Z1Dh06pH79+qlu3bry9fVVtWrV1K1bN+3Zs8fhcVy+fFnR0dEKCAiQj4+P2rZtq927d9vVye9Q2GvPWVxcnB577DFJUrt27WznNHvIi6PPQX6v+bt371bXrl1t56xq1arq0qWLjh8/nmd8u3fv1g8//KBevXrZlZv1XqalpWnUqFEKDg6Wl5eXqlWrpqioqBz9YFpamgYOHKiKFSuqdOnSeuCBB/Trr7/miDe3YVFr165Vhw4d5OfnJ19fXzVs2FAxMTG28zpr1ixJ9sPJs/fh6P9Dfj6D1w7NmzFjhoKDg1W6dGmFhoZq+/bteZ73vJQokf8/vb28vNSjRw/NmzdPhmEUuE1XI7m4BSQnJ+vpp59Wz549tXr1ag0ePNip7VNSUtSqVSutW7dO48aN05o1azRgwADFxMRo4MCBBY5r1qxZ+u677zRr1iy9//77+u9//6tu3bppwIAB+v3337VgwQK99tpr+vrrrxUZGWm37cGDB9W5c2fNnz9fa9euVVRUlP73f/9X3bp1s6s3b948PfPMM2ratKk+/fRTvfzyy5o4cWKO51CysrL04IMPatq0aerZs6e+/PJLTZs2TfHx8QoPD9dff/3l9PHlN0bp77GTnTt3VocOHbRy5UoNHTpU7777rnr06GFX79lnn1VUVJTuu+8+rVy5UrNnz9bevXsVFhamU6dO5RlPdmeY32dwfvvtN1WoUEGenp6qU6eOxo4dW6DzAPxTZGZmasOGDQoJCcn1W+2goCC1bNlS69evV2ZmplP737Ztm3x8fNS5c2dt27ZN27ZtyzHsdMCAASpRooQ++ugjxcbG6ocfflB4eLjOnTvnVFt33HGHFi5cKEl6+eWXbe1dfy12JL8xOOqbfv/9d4WFhemrr77Sq6++qlWrVum+++7TqFGjHA4lmzlzptauXavY2Fh9+OGHKlGihCIiIuyGDZ88eVIVK1bUtGnTtHbtWs2aNUuenp666667dODAgRz7fOmll3T48GG9//77ev/993Xy5EmFh4ff9Jc4Xbp00dSpUyX93f9ln9MuXbrkuk1+rvkXL15Ux44dderUKc2aNUvx8fGKjY1VjRo1dP78+Txj+uKLL+Th4aF7773X4es3815eunRJbdu21aJFizR8+HCtWbNGL774ouLi4vQ///M/tj+GDcNQ9+7d9cEHH+hf//qXVqxYobvvvlsRERH5Oq/z589X586dlZWVpblz5+rzzz/X8OHDbYnVK6+8okcffVSSbOc8r6FVzn4Grz3nS5Ys0cWLF9W5c2elpqba6mQnIoXxbEd4eLiOHTumX375xfR9FxoDxUafPn2MUqVK2ZW1bdvWkGR88803OepLMsaPH5+jvGbNmkafPn1s688++6xRunRp49ixY3b13njjDUOSsXfv3jzjatu2rdG2bVvb+pEjRwxJRrNmzYzMzExbeWxsrCHJ+J//+R+77aOiogxJRmpqqsP9Z2VlGVevXjU2bdpkSDJ++uknwzAMIzMz0wgICDDuuusuu/rHjh0zSpYsadSsWdNWtnTpUkOS8cknn9jV3bFjhyHJmD17dp7HOH78eCOv/y65xWgYf79vkoy33nrLbpspU6YYkoxvv/3WMAzD2LZtmyHJePPNN+3qJSUlGT4+PsYLL7xgt89rj88wDGPixImGh4eHsXHjxjyPxTAMY+zYscbs2bON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4OBgeXt7q2XLltqyZUuudT/99FN17NhRlStXVtmyZRUaGqp169a5MFoAgCs4nVycOHFCTz/9tCpWrChfX181b95cu3btKozYAABF1PLlyxUVFaWxY8dq9+7datOmjSIiIpSYmOiw/ubNm9WxY0etXr1au3btUrt27dStWzft3r3bxZEDAAqTpzOV//zzT7Vu3Vrt2rXTmjVrVKVKFf32228qV65cIYUHACiKZsyYoQEDBigyMlKSFBsbq3Xr1mnOnDmKiYnJUT82NtZuferUqfrss8/0+eefq0WLFq4IGQDgAk4lF9OnT1dQUJAWLlxoK6tVq5bZMQEAirArV65o165dGj16tF15p06dtHXr1nztIysrS+fPn1eFChVyrZOenq709HTbelpaWsECBgC4jFPDolatWqWQkBA99thjqlKlilq0aKH33nsvz23S09OVlpZmtwAAiq8zZ84oMzNT/v7+duX+/v5KSUnJ1z7efPNNXbx4UY8//niudWJiYuTn52dbgoKCbipuAEDhcyq5OHz4sObMmaO6detq3bp1GjRokIYPH67Fixfnug2dAwDcmiwWi926YRg5yhxZunSpJkyYoOXLl6tKlSq51hszZoxSU1NtS1JS0k3HDAAoXE4Ni8rKylJISIimTp0qSWrRooX27t2rOXPmqHfv3g63GTNmjKKjo23raWlpJBgAUIxVqlRJHh4eOe5SnD59OsfdjOstX75cAwYM0Mcff6z77rsvz7pWq1VWq/Wm4wUAuI5Tdy4CAwPVqFEju7KGDRvmOjuI9HfnULZsWbsFAFB8eXl5qWXLloqPj7crj4+PV1hYWK7bLV26VH379tVHH32kLl26FHaYAAA3cOrORevWrXXgwAG7sl9//VU1a9Y0NSgAQNEWHR2tXr16KSQkRKGhoZo3b54SExM1aNAgSX/ftT5x4oRt2OzSpUvVu3dvvfXWW7r77rttdz18fHzk5+fntuMAAJjLqeRi5MiRCgsL09SpU/X444/rhx9+0Lx58zRv3rzCig8AUAT16NFDZ8+e1aRJk5ScnKzGjRtr9erVti+bkpOT7e5qv/vuu8rIyNCQIUM0ZMgQW3mfPn0UFxfn6vABAIXEqeTizjvv1IoVKzRmzBhNmjRJwcHBio2N1VNPPVVY8QEAiqjBgwdr8ODBDl+7PmHYuHFj4QcEAHA7p5ILSeratau6du1aGLEAAAAAKMaceqAbAAAAAHJDcgEAAADAFCQXAAAAAExBcgEAAADAFE4/0A0AAHBTLBbXtGMYrmkHgA13LgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYgt+5KCZiY2PdHUKufvrpJ3eH4NCKFSvcHQIAAMA/CncuAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKZiKFgCAfxqLxTXtGIZr2gFQZHDnAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmMKp5KJWrVqyWCw5liFDhhRWfAAAAACKCad+oXvHjh3KzMy0rf/yyy/q2LGjHnvsMdMDAwAAAFC8OJVcVK5c2W592rRpqlOnjtq2bZvrNunp6UpPT7etp6WlORkiAAAAgOKgwM9cXLlyRR9++KH69+8vi8WSa72YmBj5+fnZlqCgoII2CQAAAKAIK3BysXLlSp07d059+/bNs96YMWOUmppqW5KSkgraJAAAAIAizKlhUdeaP3++IiIiVLVq1TzrWa1WWa3WgjYDAAAAoJgoUHJx7Ngxff311/r000/NjgcAAABAMVWgYVELFy5UlSpV1KVLF7PjAQAAAFBMOZ1cZGVlaeHCherTp488PQs8qgoAAADALcbp5OLrr79WYmKi+vfvXxjxAAAAACimnL710KlTJxmGURixAAAAACjGCjwVLQAAAABci+QCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAABTJ79mwFBwfL29tbLVu21JYtW/Ksv2nTJrVs2VLe3t6qXbu25s6d66JIAQcsFtcswD8MyQUAwGnLly9XVFSUxo4dq927d6tNmzaKiIhQYmKiw/pHjhxR586d1aZNG+3evVsvvfSShg8frk8++cTFkQMACpOnuwMAABQ/M2bM0IABAxQZGSlJio2N1bp16zRnzhzFxMTkqD937lzVqFFDsbGxkqSGDRtq586deuONN/TII4+4MnSgyDg6vatrGppmuKYdQG5ILgzj7w94Wlqaq5vOl6IaV2ZmprtDKHYuXbrk7hByVVQ/Z3BO9vuYfV37p7hy5Yp2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okySw2XhwoXuDq1YYSraG/v888+Nxo0bG1ar1WjQoIExb948d4cE3BR39jUbNmxweO3u06ePS9ovCn1H//79bee/cuXKRocOHYyvvvrKZe074uq+oEePHkZgYKBRsmRJo2rVqsbDDz9s7N2712XtZysK1/d169YZkowDBw64vO20tDRjxIgRRo0aNQxvb2+jdu3axtixY4309HSXxrF8+XKjdu3ahpeXlxEQEGAMGTLEOHfunEtjuBGLYRiGqxMaAAAAALeeYvfMBQAAAICiieQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAACYguQCAAAAgClILgAAAP4/i8WilStX5rv+xo0bZbFYdO7cOVPjqFWrlmJjY03dJ+AKJBcAAOCW1rdvX1ksFlksFpUsWVL+/v7q2LGjFixYoKysLLu6ycnJioiIyPe+w8LClJycLD8/P0lSXFycypUrZ2b4QLFCcgEAAG55DzzwgJKTk3X06FGtWbNG7dq104gRI9S1a1dlZGTY6gUEBMhqteZ7v15eXgoICJDFYimMsIFih+QCAADc8qxWqwICAlStWjXdcccdeumll/TZZ59pzZo1iouLs9W7fljU1q1b1bx5c3l7eyskJEQrV66UxWJRQkKCJPthURs3blS/fv2Umppqu1MyYcKEXGNatWqVQkJC5O3trUqVKunhhx/Ote6MGTPUpEkTlSpVSkFBQRo8eLAuXLhge/3YsWPq1q2bypcvr1KlSun222/X6tWrJUl//vmnnnrqKVWuXFk+Pj6qW7euFi5cWKDzCNyIp7sDAAAAcIf27durWbNm+vTTTxUZGZnj9fPnz6tbt27q3LmzPvroIx07dkxRUVG57i8sLEyxsbEaN26cDhw4IEkqXbq0w7pffvmlHn74YY0dO1YffPCBrly5oi+//DLXfZcoUUJvv/22atWqpSNHjmjw4MF64YUXNHv2bEnSkCFDdOXKFW3evFmlSpXSvn37bG2/8sor2rdvn9asWaNKlSrp0KFD+uuvv/J7mgCnkFwAAIB/rAYNGujnn392+NqSJUtksVj03nvvydvbW40aNdKJEyc0cOBAh/W9vLzk5+cni8WigICAPNudMmWKnnjiCU2cONFW1qxZs1zrX5vUBAcH69VXX9Vzzz1nSy4SExP1yCOPqEmTJpKk2rVr2+onJiaqRYsWCgkJkfT3w+JAYWFYFAAA+McyDCPX5yUOHDigpk2bytvb21bWqlUrU9pNSEhQhw4d8l1/w4YN6tixo6pVq6YyZcqod+/eOnv2rC5evChJGj58uCZPnqzWrVtr/PjxdgnTc889p2XLlql58+Z64YUXtHXrVlOOAXCE5AIAAPxj7d+/X8HBwQ5fc5R4GIZhSrs+Pj75rnvs2DF17txZjRs31ieffKJdu3Zp1qxZkqSrV69KkiIjI3X48GH16tVLe/bsUUhIiN555x1JUkREhG1I18mTJ9WhQweNGjXKlOMArkdyAQAA/pHWr1+vPXv26JFHHnH4evaQqfT0dFvZzp0789ynl5eXMjMzb9h206ZN9c033+Qrzp07dyojI0Nvvvmm7r77btWrV08nT57MUS8oKEiDBg3Sp59+qn/961967733bK9VrlxZffv21YcffqjY2FjNmzcvX20DziK5AAAAt7z09HSlpKToxIkT+vHHHzV16lQ9+OCD6tq1q3r37u1wm549eyorK0vPPPOM9u/fr3Xr1umNN96QpFyHUtWqVUsXLlzQN998ozNnzujSpUsO640fP15Lly7V+PHjtX//fu3Zs0evvfaaw7p16tRRRkaG3nnnHR0+fFgffPCB5s6da1cnKipK69at05EjR/Tjjz9q/fr1atiwoSRp3Lhx+uyzz3To0CHt3btXX3zxhe01wGwkFwAA4Ja3du1aBQYGqlatWnrggQe0YcMGvf322/rss8/k4eHhcJuyZcvq888/V0JCgpo3b66xY8dq3LhxkmT3HMa1wsLCNGjQIPXo0UOVK1fONWEIDw/Xxx9/rFWrVql58+Zq3769vv/+e4d1mzdvrhkzZmj69Olq3LixlixZopiYGLs6mZmZGjJkiBo2bKgHHnhA9evXtz3s7eXlpTFjxqhp06a699575eHhoWXLluXrvAHOshhmDR4EAAC4xS1ZssT2WxbOPDcB/FMwFS0AAEAuFi9erNq1a6tatWr66aef9OKLL+rxxx8nsQByQXIBAACQi5SUFI0bN04pKSkKDAzUY489pilTprg7LKDIYlgUAAAAAFPwQDcAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADAFyQUAAAAAU5BcAAAAADDF/wO6L5lUMn0S2wAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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3//+V7169dKQIUP066+/avHixXr++ef1+eefKzo62m7eQ4cOqXv37lq0aJHWrVunmJgY/d///Z969epl12/hwoV65JFH1KJFC61cuVJPPfWUpk6dmu86lNzcXN1555167rnn1LdvX3366ad67rnnlJiYqMjISP35559Ov76i1ij9fe5k9+7d1blzZ61evVojR47Ua6+9lu/bi0cffVQxMTG6/fbbtXr1as2bN0/79u1TRESETp48WWg9eTvDol6D8/PPP6tatWry9PRU/fr1NWnSpGKtB+CfIicnRxs3blRYWFiB32qHhISoTZs22rBhg3Jycpxa/vbt2+Xj46Pu3btr+/bt2r59e77TTocMGaJy5crpnXfeUXx8vL755htFRkbq7NmzTo114403asmSJZKkp556yjbe5dtiR4pag6N906+//qqIiAh99tlnevbZZ/XRRx/p9ttv17hx4xyeSjZnzhytW7dO8fHxevvtt1WuXDlFRUXZnTZ84sQJ+fv767nnntO6des0d+5ceXp66uabb9bBgwfzLXPixIk6fPiw3njjDb3xxhs6ceKEIiMjr/pLnB49emjmzJmS/t7/5a3THj16FDhPUbb5Fy5cUJcuXXTy5EnNnTtXiYmJio+PV+3atXXu3LlCa/rkk0/k4eGh2267zeHzV/Ne/vHHH+rQoYPefPNNjR49WmvXrtWTTz6phIQE/etf/7L9MWwYhnr37q233npLjz/+uFatWqVbbrlFUVFRRVqvixYtUvfu3ZWbm6sFCxbo448/1ujRo23B6umnn9a9994rSbZ1XtipVc5+Bi9d58uWLdOFCxfUvXt3paen2/rkBRFnru3Izc1Vdna2Tpw4ocmTJ+vHH3/U448/nq9fZGSkjh07ph9++KHIy3Y7A2XGgAEDjAoVKti1dejQwZBkfPHFF/n6SzImT56cr71OnTrGgAEDbNOPPvqoUbFiRePYsWN2/V588UVDkrFv375C6+rQoYPRoUMH2/SRI0cMSUbLli2NnJwcW3t8fLwhyfjXv/5lN39MTIwhyUhPT3e4/NzcXOPixYvG5s2bDUnGd999ZxiGYeTk5BiBgYHGzTffbNf/2LFjRvny5Y06derY2pYvX25IMj744AO7vjt37jQkGfPmzSv0NU6ePNko7L9LQTUaxt/vmyTj5ZdftptnxowZhiTjyy+/NAzDMLZv325IMl566SW7fikpKYaPj4/xxBNP2C3z0tdnGIYxdepUw8PDw9i0aVOhr8UwDGPSpEnGvHnzjA0bNhiffvqpMXLkSMPT09O47bbb7N4zAP+TlpZmSDIeeOCBQvv16dPHkGScPHnSMAzH/18Nw/F2pUKFCnbb5zxLliwxJBl33XWXXftXX31lSDKmT59ua7t8G5/n8m113vZvyZIlhb6e4tRQ0L5p/PjxhiTj66+/tmt/7LHHDIvFYhw8eNAwjP/tR4KDg40///zT1i8jI8OoVq2acfvttxdYZ3Z2tpGVlWU0aNDAGDt2rK1948aNhiTjxhtvNHJzc23tR48eNcqXL29ER0fb2hy9N5evP8PIv5997733DEnGxo0b89V1+eegqNv8Xbt2GZKM1atXF/iaCxIVFWU0btw4X7sZ72VcXJxRrlw5Y+fOnXbt77//viHJWLNmjWEYhrF27dpC94GXrr+8uo4cOWIYhmGcO3fOqFy5snHrrbfavWeXGzFiRIH76Mv/Pzj7GWzevLmRnZ1t6/fNN98Ykozly5fb2o4ePWp4eHgYgwcPLrDGy3Xr1s2QZEgyKleubKxcudJhv0OHDhmSjPnz5xd52e7GkYtrQNWqVdWpU6diz//JJ5+oY8eOCg4OVnZ2tu2R963C5s2bi7Xc7t27q1y5/33EmjRpIkn5vsXJa09OTra1HT58WH379lVgYKA8PDxUvnx5dejQQZJ04MABSdLBgweVlpam+++/3255tWvXzneu8yeffKIqVaqoV69edq+xVatWCgwMLNYdt4pS46Ueeughu+m+fftKkjZu3Gir0WKx6OGHH7arMTAwUC1btrxijc8884yys7NtNRRm+vTpeuyxx9SxY0d1795dr776qp577jlt2bJFH374YVFePoACGP//G9vi3mGuMJdvRyIiIlSnTh3bdsQVilqDo33Thg0b1LRpU7Vt29aufeDAgTIMI98NS+6++255e3vbpitVqqRevXppy5YttiND2dnZmjlzppo2bSovLy95enrKy8tLhw4dcrgt7tu3r917U6dOHUVERLh0HUpF3+Zff/31qlq1qp588kktWLBA+/fvL/IYJ06cUM2aNQt8/mrey08++UTNmjVTq1at7Orv1q2b3VH0vGUVtA8szLZt25SRkaHhw4eb9v/J2c9gjx495OHhYZtu0aKFJOnYsWO2tjp16ig7O1uLFi0qch2vvvqqvvnmG3344Yfq1q2b+vTpo+XLl+frl/f+HT9+vMjLdjcu6L4GOHtXhcudPHlSH3/8scqXL+/w+dOnTxdrudWqVbOb9vLyKrT9r7/+kiSdP39e7du3l7e3t6ZPn66GDRvK19dXKSkpuvvuu22n7pw5c0aSFBAQkG/sgIAAHTlyxDZ98uRJnT171jbW5Zx9jUWtMY+np2e+Oz0EBgbavY6TJ0/KMAyHr0f6++5OJenhhx/WuHHjtGPHDt11110lOhZQFlWvXl2+vr522xZHjh49Kl9f33zbOjPkbTcub8vbjrhCUWtwtG86c+aMw+tPgoODbc8XZaysrCydP39efn5+io2N1dy5c/Xkk0+qQ4cOqlq1qsqVK6fo6GiHp3oWtMzvvvsuX3tJKuo238/PT5s3b9aMGTM0ceJE/f777woKCtLQoUP11FNPFbjvlqQ///yzwOVLV/denjx5Uj/99NMV/3Y4c+ZMofvAwuRdE1mUi+uLytnP4OV1W61WSbrq04gbNGhg+/e//vUvRUVFacSIEerTp4/dF7N54bosnbZMuLgGFJTmrVarMjMz87Vf/h+nevXqatGihWbMmOFwOXn/4Vxlw4YNOnHihDZt2mT3Lfzl54Dm/Yd3dC1CWlqa3XT16tXl7++vdevWORyzUqVKJVJjnuzsbJ05c8ZuI5VXY15b9erVZbFYtHXrVtvG61KO2krCpRs1AP/j4eGhjh07at26dfrll18c/sHzyy+/aPfu3YqKirJ92+nt7e1wW1ycL24u37bltV1//fW26cLGq169utNjFqcGyfG+yd/fX6mpqfnaT5w4IUn56itoLC8vL9vvB7399tvq37+/7XqHPKdPn3Z4e+2ClunqW306s81v3ry53n33XRmGoe+//14JCQmaNm2afHx8NH78+ELH+O233wp8/mrey+rVq8vHx0eLFy8ucGzp7/e8sH1gYfLuHHWlC9ed4exn0FXatm2rdevW6ddff7ULhHnvn7vqKg7+iriG1a1bV99//71d24YNG3T+/Hm7tp49e+qHH35Q/fr1FRYWlu/h6nCRtxG7fGP72muv2U03atRIgYGB+r//+z+79uTkZG3bts2urWfPnjpz5oxycnIcvsZGjRqVSI2Xuvw3Jd555x1Jst29pWfPnjIMQ8ePH3dYY/PmzZ2q0VlvvvmmJOdurQj800yYMEGGYWj48OH5LtjOycnRY489JsMwNGHCBFt73bp1derUKbsvQrKysrR+/fp8y7darYV+Q3n5dmTbtm06duyY3R37HG37f/zxx3wXNxf3G9ii1FCQzp07a//+/fr222/t2pcuXSqLxaKOHTvata9cudJ2VFuSzp07p48//ljt27e3hTeLxZJvW/zpp58WeBrJ8uXL7e68c+zYMW3bts2UH4N1Zp0WZ5tvsVjUsmVL/ec//1GVKlXyrcfLNW7cuNAL1a/mvezZs6d+/vln+fv7O6w/7+hA3nta0D6wMBEREfLz89OCBQsKvVuSM+vd2c+gKxiGoc2bN6tKlSr5Qm7e+1eWbvvPkYtrWL9+/fT000/rmWeeUYcOHbR//37NmTNHfn5+dv2mTZumxMRERUREaPTo0WrUqJH++usvHT16VGvWrNGCBQtMPSR5JREREapataqGDRumyZMnq3z58lq2bFm+Q9blypXT1KlT9eijj+ree+/V4MGDdfbsWU2dOlVBQUF238A/8MADWrZsmbp3764xY8aobdu2Kl++vH755Rdt3LhRd955p1OnAhW1xjxeXl566aWXdP78ed10003atm2bpk+frqioKN16662SpHbt2umRRx7RoEGDtGvXLt12222qUKGCUlNT9eWXX6p58+Z67LHHCqxp2rRpmjZtmr744otCr7vYunWrZsyYobvuukv16tXTX3/9pbVr12rhwoXq1KmTw7tdAfhbu3btFB8fr5iYGN16660aOXKkateubfsRva+//lrx8fGKiIiwzdOnTx8988wzeuCBB/Tvf/9bf/31l1555RWHd5Nq3ry5Nm3apI8//lhBQUGqVKmS3Zcfu3btUnR0tO677z6lpKRo0qRJqlWrlt1dAvv166eHH35Yw4cP1z333KNjx47p+eefz/f7AfXr15ePj4+WLVumJk2aqGLFigoODr7iF0pFqaEgY8eO1dKlS9WjRw9NmzZNderU0aeffqp58+bpscceU8OGDe36e3h4qEuXLoqNjVVubq5mzZqljIwMTZ061danZ8+eSkhIUOPGjdWiRQvt3r1bL7zwQoH7rVOnTumuu+7S0KFDlZ6ersmTJ8vb29suEBZXs2bNJP19J8NKlSrJ29tboaGhDo+KFHWb/8knn2jevHnq3bu36tWrJ8MwtHLlSp09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AgAAAIApCBcAAAAATEG4AAAAAGAKwgUAAAAAUxAuAAAAAJiCcAEAAADAFIQLAECxzJs3T6GhofL29labNm20devWQvtnZmZq0qRJqlOnjqxWq+rXr6/Fixe7qFoAgCt4ursAAEDZs2LFCsXExGjevHlq166dXnvtNUVFRWn//v2qXbu2w3nuv/9+nTx5UosWLdL111+vU6dOKTs728WVAwBKEuECAOC02bNna8iQIYqOjpYkxcfHa/369Zo/f77i4uLy9V+3bp02b96sw4cPq1q1apKkunXrurJkAIALOHVa1Pz589WiRQtVrlxZlStXVnh4uNauXVtStQEASqGsrCzt3r1bXbt2tWvv2rWrtm3b5nCejz76SGFhYXr++edVq1YtNWzYUOPGjdOff/5Z4DiZmZnKyMiwewAASjenjlxcd911eu6553T99ddLkt58803deeed2rNnj2644YYSKRAAULqcPn1aOTk5CggIsGsPCAhQWlqaw3kOHz6sL7/8Ut7e3lq1apVOnz6t4cOH67fffivwuou4uDhNnTrV9PoBACXHqSMXvXr1Uvfu3dWwYUM1bNhQM2bMUMWKFbVjx44C5+GbJwC4NlksFrtpwzDyteXJzc2VxWLRsmXL1LZtW3Xv3l2zZ89WQkJCgUcvJkyYoPT0dNsjJSXF9NcAADBXse8WlZOTo3fffVcXLlxQeHh4gf3i4uLk5+dne4SEhBR3SABAKVC9enV5eHjkO0px6tSpfEcz8gQFBalWrVry8/OztTVp0kSGYeiXX35xOI/VarWdhpv3AACUbk6Hi71796pixYqyWq0aNmyYVq1apaZNmxbYn2+eAODa4uXlpTZt2igxMdGuPTExUREREQ7nadeunU6cOKHz58/b2n788UeVK1dO1113XYnWCwBwHafDRaNGjZSUlKQdO3boscce04ABA7R///4C+/PNEwBce2JjY/XGG29o8eLFOnDggMaOHavk5GQNGzZM0t9fLPXv39/Wv2/fvvL399egQYO0f/9+bdmyRf/+9781ePBg+fj4uOtlAABM5vStaL28vGwXdIeFhWnnzp16+eWX9dprr5leHACgdOrTp4/OnDmjadOmKTU1Vc2aNdOaNWtUp04dSVJqaqqSk5Nt/StWrKjExESNGjVKYWFh8vf31/3336/p06e76yUAAErAVf/OhWEYyszM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hAsAAAAApiBcAAAAADAF4QIAAACAKQgXAAAAAExBuAAAAABgCk93F4CiWb16tbtLKFCVKlXcXYJDU6ZMcXcJZVLv3r3dXQIAACijOHIBAAAAwBSECwAAAACmIFwAAAAAMAXhAgAAAIApCBcAAAAATEG4AAAAAGAKwgUAAAAAUxAuAAAAAJiCH9EDAAAA3MVicc04huGSYThyAQAAAMAUhAsAAAAApiBcAAAAADAF4QIAAACAKQgXAIBimTdvnkJDQ+Xt7a02bdpo69atBfZduXKlunTpoho1aqhy5coKDw/X+vXrXVgtAMAVnA4Xx48f18MPPyx/f3/5+vqqVatW2r17d0nUBgAopVasWKGYmBhNmjRJe/bsUfv27RUVFaXk5GSH/bds2aIuXbpozZo12r17tzp27KhevXppz549Lq4cAFCSnLoV7e+//6527dqpY8eOWrt2rWrWrKmff/5ZVapUKaHyAACl0ezZszVkyBBFR0dLkuLj47V+/XrNnz9fcXFx+frHx8fbTc+cOVMffvihPv74Y7Vu3doVJQMAXMCpcDFr1iyFhIRoyZIltra6deuaXRMAoBTLysrS7t27NX78eLv2rl27atu2bUVaRm5urs6dO6dq1aoV2CczM1OZmZm26YyMjOIVDABwGadOi/roo48UFham++67TzVr1lTr1q31+uuvFzpPZmamMjIy7B4AgLLr9OnTysnJUUBAgF17QECA0tLSirSMl156SRcuXND9999fYJ+4uDj5+fnZHiEhIVdVNwCg5DkVLg4fPqz58+erQYMGWr9+vYYNG6bRo0dr6dKlBc7DzgEArk2Wy35V1jCMfG2OLF++XFOmTNGKFStUs2bNAvtNmDBB6enptkdKSspV1wwAKFlOnRaVm5ursLAwzZw5U5LUunVr7du3T/Pnz1f//v0dzjNhwgTFxsbapjMyMggYAFCGVa9eXR4eHvmOUpw6dSrf0YzLrVixQkOGDNF7772n22+/vdC+VqtVVqv1qusFALiOU0cugoKC1LRpU7u2Jk2aFHh3EOnvnUPlypXtHgCAssvLy0tt2rRRYmKiXXtiYqIiIiIKnG/58uUaOHCg3nnnHfXo0aOkywQAuIFTRy7atWungwcP2rX9+OOPqlOnjqlFAQBKt9jYWPXr109hYWEKDw/XwoULlZycrGHDhkn6+6j18ePHbafN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p5tuukmVKlVSzZo11bt3bx08eNDdZZUpcXFxslgsiomJcXcppdrx48f18MMPy9/fX76+vmrVqpV2797t7rKAYnPnvmbLli3q1auXgoODZbFYtHr1apeNLZWOfcf8+fPVokUL24+FhYeHa+3atS6t4VLu2BdMmTJFFovF7hEYGOiy8fO4e/tet27dfOvBYrFoxIgRLhk/OztbTz31lEJDQ+Xj46N69epp2rRpys3Ndcn4ec6dO6eYmBjVqVNHPj4+ioiI0M6dO11aw5WUyXCxYsUKxcTEaNKkSdqzZ4/at2+vqKgou9se4n82b96sESNGaMeOHUpMTFR2dra6du2qCxcuuLu0MmHnzp1auHChWrRo4e5SSrXff/9d7dq1U/ny5bV27Vrt379fL730ktt+URm4Wu7e11y4cEEtW7bUnDlzXDLe5UrDvuO6667Tc889p127dmnXrl3q1KmT7rzzTu3bt89lNeRx577ghhtuUGpqqu2xd+9el45fGrbvO3futFsHeT/Ked9997lk/FmzZmnBggWaM2eODhw4oOeff14vvPCCXn31VZeMnyc6OlqJiYl66623tHfvXnXt2lW33367jh8/7tI6CmWUQW3btjWGDRtm19a4cWNj/PjxbqqobDl16pQhydi8ebO7Syn1zp07ZzRo0MBITEw0OnToYIwZM8bdJZVaTz75pHHrrbe6uwzANKVpXyPJWLVqlcvHvVRp2XdUrVrVeOONN1w6pjv3BZMnTzZatmzpsvEcKY3b9zFjxhj169c3cnNzXTJejx49jMGDB9u13X333cbDDz/skvENwzD++OMPw8PDw/jkk0/s2lu2bGlMmjTJZXVcSZk7cpGVlaXdu3era9eudu1du3bVtm3b3FRV2ZKeni5JqlatmpsrKf1GjBihHj166Pbbb3d3KaXeRx99pLCwMN13332qWbOmWrdurddff93dZQHFwr4mP3fvO3JycvTuu+/qwoULCg8Pd+nY7t4XHDp0SMHBwQoNDdUDDzygw4cPu3T80rZ9z8rK0ttvv63BgwfLYrG4ZMxbb71VX3zxhX788UdJ0nfffacvv/xS3bt3d8n40t+nZuXk5Mjb29uu3cfHR19++aXL6riSMvcL3adPn1ZOTo4CAgLs2gMCApSWluamqsoOwzAUGxurW2+9Vc2aNXN3OaXau+++q2+//bbUnctY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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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v//9r3r27KnBgwfr119/1RtvvKHnnntOn3/+uWJiYuy2PXjwoLp166ZFixZp7dq1io2N1f/93/+pZ8+edvUWLlyoRx55RM2aNdOHH36op556SlOnTs33HEpubq7uvPNOPfvss+rTp48+/fRTPfvss0pKSlKHDh30559/On18RY1R+nvsZLdu3dS5c2etXLlSI0aM0Kuvvprv24tHH31UsbGxuu2227Ry5UrNmzdPe/fuVVRUlE6cOFFoPHmdYVGfwfn5559VtWpVeXp6qm7dupo4cWKxzgPwT5GTk6MNGzYoIiKiwG+1Q0ND1apVK61fv145OTlO7X/btm3y9fVVt27dtG3bNm3bti3fsNPBgwerXLlyeuedd5SQkKBvvvlGHTp00JkzZ5xq68Ybb9TixYslSU899ZStvcuvxY4UNQZHfdOvv/6qqKgoffbZZ3rmmWf00Ucf6bbbbtPYsWMdDiWbM2eO1q5dq4SEBL399tsqV66coqOj7YYNHz9+XAEBAXr22We1du1azZ07V56enrr55pt14MCBfPucMGGCDh06pNdff12vv/66jh8/rg4dOlz1lzjdu3fXzJkzJf3d/+Wd0+7duxe4TVGu+efPn1eXLl104sQJzZ07V0lJSUpISFCtWrV09uzZQmP65JNP5OHhoVtvvdXh61fzXv7xxx9q37693nzzTY0aNUpr1qzRk08+qcTERP3rX/+y/TFsGIZ69eqlt956S48//rhWrFihW265RdHR0UU6r4sWLVK3bt2Um5urBQsW6OOPP9aoUaNsidXTTz+te++9V5Js57ywoVXOfgYvPedLly7V+fPn1a1bN2VkZNjq5CUizjzbkZubq+zsbB0/flyTJ0/Wjz/+qMcffzxfvQ4dOujo0aP64YcfirxvtzNQZvTv398oX768XVn79u0NScYXX3yRr74kY/LkyfnKa9eubfTv39+2/uijjxoVKlQwjh49alfvhRdeMCQZe/fuLTSu9u3bG+3bt7etHz582JBkNG/e3MjJybGVJyQkGJKMf/3rX3bbx8bGGpKMjIwMh/vPzc01Ll68aGzatMmQZHz33XeGYRhGTk6OERQUZNx888129Y8ePWp4eXkZtWvXtpUtW7bMkGR88MEHdnV37NhhSDLmzZtX6DFOnjzZKOy/S0ExGsbf75sk46WXXrLbZsaMGYYk48svvzQMwzC2bdtmSDJefPFFu3qpqamGr6+v8cQTT9jt89LjMwzDmDp1quHh4WFs3Lix0GMxDMOYOHGiMW/ePGP9+vXGp59+aowYMcLw9PQ0br31Vrv3DMD/pKenG5KMBx54oNB6vXv3NiQZJ06cMAzD8f9Xw3B8XSlfvrzd9TnP4sWLDUnGXXfdZVf+1VdfGZKM6dOn28ouv8bnufxanXf9W7x4caHHU5wYCuqbxo0bZ0gyvv76a7vyxx57zLBYLMaBAwcMw/hfPxISEmL8+eeftnqZmZlG1apVjdtuu63AOLOzs40LFy4Y9erVM8aMGWMr37BhgyHJuPHGG43c3Fxb+ZEjRwwvLy8jJibGVubovbn8/BlG/n72vffeMyQZGzZsyBfX5Z+Dol7zd+7caUgyVq5cWeAxFyQ6Otpo2LBhvnIz3sv4+HijXLlyxo4dO+zK33//fUOSsXr1asMwDGPNmjWF9oGXnr+8uA4fPmwYhmGcPXvWqFSpktG2bVu79+xyw4cPL7CPvvz/g7OfwaZNmxrZ2dm2et98840hyVi2bJmt7MiRI4aHh4cxaNCgAmO83O23325IMiQZlSpVMj788EOH9Q4ePGhIMubPn1/kfbsbdy6uAVWqVFGnTp2Kvf0nn3yijh07KiQkRNnZ2bYl71uFTZs2FWu/3bp1U7ly//uINWrUSJLyfYuTV56SkmIrO3TokPr06aOgoCB5eHjIy8tL7du3lyTt379fknTgwAGlp6fr/vvvt9tfrVq18o11/uSTT1S5cmX17NnT7hhbtGihoKCgYs24VZQYL/XQQw/Zrffp00eStGHDBluMFotFDz/8sF2MQUFBat68+RVjnDRpkrKzs20xFGb69Ol67LHH1LFjR3Xr1k2vvPKKnn32WW3evFmrVq0qyuEDKIDx/7+xLe4Mc4W5/DoSFRWl2rVr264jrlDUGBz1TevXr1fjxo3VunVru/IBAwbIMIx8E5bcfffd8vHxsa1XrFhRPXv21ObNm213hrKzszVz5kw1btxY3t7e8vT0lLe3tw4ePOjwWtynTx+796Z27dqKiopy6TmUin7Nv/7661WlShU9+eSTWrBggfbt21fkNo4fP64aNWoU+PrVvJeffPKJmjRpohYtWtjFf/vtt9vdRc/bV0F9YGG2bt2qzMxMDRs2zLT/T85+Brt37y4PDw/berNmzSRJR48etZXVrl1b2dnZWrRoUZHjeOWVV/TNN99o1apVuv3229W7d28tW7YsX7289+/YsWNF3re78UD3NcDZWRUud+LECX388cfy8vJy+PqpU6eKtd+qVavarXt7exda/tdff0mSzp07p3bt2snHx0fTp09X/fr15efnp9TUVN199922oTunT5+WJAUGBuZrOzAwUIcPH7atnzhxQmfOnLG1dTlnj7GoMebx9PTMN9NDUFCQ3XGcOHFChmE4PB7p79mdStLDDz+ssWPHavv27brrrrtKtC2gLKpWrZr8/Pzsri2OHDlyRH5+fvmudWbIu25cXpZ3HXGFosbgqG86ffq0w+dPQkJCbK8Xpa0LFy7o3Llz8vf3V1xcnObOnasnn3xS7du3V5UqVVSuXDnFxMQ4HOpZ0D6/++67fOUlqajXfH9/f23atEkzZszQhAkT9Pvvvys4OFhDhgzRU089VWDfLUl//vlngfuXru69PHHihH766acr/u1w+vTpQvvAwuQ9E1mUh+uLytnP4OVxW61WSbrqYcT16tWz/ftf//qXoqOjNXz4cPXu3dvui9m85LosDVsmubgGFJTNW61WZWVl5Su//D9OtWrV1KxZM82YMcPhfvL+w7nK+vXrdfz4cW3cuNHuW/jLx4Dm/Yd39CxCenq63Xq1atUUEBCgtWvXOmyzYsWKJRJjnuzsbJ0+fdruIpUXY15ZtWrVZLFYtGXLFtvF61KOykrCpRc1AP/j4eGhjh07au3atfrll18c/sHzyy+/aNeuXYqOjrZ92+nj4+PwWlycL24uv7bllV1//fW29cLaq1atmtNtFicGyXHfFBAQoLS0tHzlx48fl6R88RXUlre3t+33g95++23169fP9rxDnlOnTjmcXrugfbp6qk9nrvlNmzbVu+++K8Mw9P333ysxMVHTpk2Tr6+vxo0bV2gbv/32W4GvX817Wa1aNfn6+uqNN94osG3p7/e8sD6wMHkzR13pwXVnOPsZdJXWrVtr7dq1+vXXX+0Swrz3z11xFQd/RVzDwsLC9P3339uVrV+/XufOnbMr69Gjh3744QfVrVtXERER+RZXJxd5F7HLL7avvvqq3XqDBg0UFBSk//u//7MrT0lJ0datW+3KevToodOnTysnJ8fhMTZo0KBEYrzU5b8p8c4770iSbfaWHj16yDAMHTt2zGGMTZs2dSpGZ7355puSnJtaEfinGT9+vAzD0LBhw/I9sJ2Tk6PHHntMhmFo/PjxtvKwsDCdPHnS7ouQCxcuaN26dfn2b7VaC/2G8vLryNatW3X06FG7GfscXft//PHHfA83F/cb2KLEUJDOnTtr3759+vbbb+3KlyxZIovFoo4dO9qVf/jhh7a72pJ09uxZffzxx2rXrp0tebNYLPmuxZ9++mmBw0iWLVtmN/PO0aNHtXXrVlN+DNaZc1qca77FYlHz5s31n//8R5UrV853Hi/XsGHDQh9Uv5r3skePHvr5558VEBDgMP68uwN572lBfWBhoqKi5O/vrwULFhQ6W5Iz593Zz6ArGIahTZs2qXLlyvmS3Lz3ryxN+8+di2tY37599fTTT2vSpElq37699u3bpzlz5sjf39+u3rRp05SUlKSoqCiNGjVKDRo00F9//aUjR45o9erVWrBggam3JK8kKipKVapU0dChQzV58mR5eXlp6dKl+W5ZlytXTlOnTtWjjz6qe++9V4MGDdKZM2c0depUBQcH230D/8ADD2jp0qXq1q2bRo8erdatW8vLy0u//PKLNmzYoDvvvNOpoUBFjTGPt7e3XnzxRZ07d0433XSTtm7dqunTpys6Olpt27aVJLVp00aPPPKIBg4cqJ07d+rWW29V+fLllZaWpi+//FJNmzbVY489VmBM06ZN07Rp0/TFF18U+tzFli1bNGPGDN11112qU6eO/vrrL61Zs0YLFy5Up06dHM52BeBvbdq0UUJCgmJjY9W2bVuNGDFCtWrVsv2I3tdff62EhARFRUXZtundu7cmTZqkBx54QP/+97/1119/6eWXX3Y4m1TTpk21ceNGffzxxwoODlbFihXtvvzYuXOnYmJidN999yk1NVUTJ05UzZo17WYJ7Nu3rx5++GENGzZM99xzj44eParnnnsu3+8H1K1bV76+vlq6dKkaNWqkChUqKCQk5IpfKBUlhoKMGTNGS5YsUffu3TVt2jTVrl1bn376qebNm6fHHntM9evXt6vv4eGhLl26KC4uTrm5uZo1a5YyMzM1depUW50ePXooMTFRDRs2VLNmzbRr1y49//zzBfZbJ0+e1F133aUhQ4YoIyNDkydPlo+Pj11CWFxNmjSR9PdMhhUrVpSPj4/Cw8Md3hUp6jX/k08+0bx589SrVy/VqVNHhmHoww8/1JkzZ9SlS5dC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9e7dWy1atLAdb0khuQAAAMA1LzQ0VP/5z39ksVjUoEED7dmzR//5z39sf2x36tRJY8eOtdXv16+f+vTpo9jYWElSvXr19PLLL6t9+/aaP3++UlJStGbNGm3fvl0333yzJGnRokVq1KhRgTG88847+vXXX7Vjxw5VrVpVknT99dfbXq9QoYI8PT0LHQa1dOlS/fnnn1qyZInKly8vSZozZ4569uypWbNmKTAwUJJUpUoVzZkzRx4eHmrYsKG6d++uL774osSTC4ZFAQAA4Jp3yy23yHLJTFORkZE6ePCgcnJyJEkRERF29Xft2qXExERVqFDBttx+++3Kzc3V4cOHtX//fnl6etpt17BhQ1WuXLnAGJKTk9WyZUtbYlEc+/fvV/PmzW2JhSS1adNGubm5OnDggK3shhtukIeHh209ODi40LsqZuHOBQAAAP7xLv1jXZJyc3P16KOPatSoUfnq1qpVy/aHvMWJqXF9fX2vLkhJhmEU2Oal5V5eXvley83Nver2r4Q7FwAAALjmbd++Pd96vXr17L7dv9SNN96ovXv36vrrr8+3eHt7q1GjRsrOztbOnTtt2xw4cKDQZz6bNWum5ORk/fbbbw5f9/b2tt1JKUjjxo2VnJxs92D5V199pXLlyql+/fqFbusKJBcAAAC45qWmpiouLk4HDhzQsmXL9Morr2j06NEF1n/yySe1bds2DR8+XMnJyTp48KA++ugjjRw5UpLUoEED3XHHHRoyZIi+/vpr7dq1SzExMYXenXjwwQcVFBSkXr166auvvtKhQ4f0wQcfaNu2bZL+nrXq8OHDSk5O1qlTp5SVlZVvHw899JB8fHzUv39//fDDD9qwYYNGjhypvn372p63cCeSCwAAAFwdw3DtUgz9+vXTn3/+qdatW2v48OEaOXKkHnnkkQLrN2vWTJs2bdLBgwfVrl07tWzZUk8//bSCg4NtdRYvXqzQ0FC1b99ed999tx555BHVqFGjwH16e3vrs88+U40aNdStWzc1bdpUzz77rO3uyT333KM77rhDHTt2VPXq1bVs2bJ8+/Dz89O6dev022+/6aabbtK9996rzp07a86cOcU6L2bjmQsAAABc87y8vJSQkKD58+fne+3IkSMOt7npppv02WefFbjPoKAgffLJJ3Zlffv2tVs3LkuGateurffff9/h/qxWq8PXLt9H06ZN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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxcAAAGHCAYAAADC2a9WAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUUBJREFUeJzt3XlcVGX///H3CLKquLMoClpuuSYtoCZmWrh8s9Wy3LHMFbmtNMstFbXypnLLUslS89td2uYS5ZKllpqUqbdZLpCCpiW4FAic3x/9mG8jAzJ4mBns9Xw8zuPhueY65/rMmfFcfOZc5zoWwzAMAQAAAMBVquDqAAAAAABcG0guAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUgu3JjFYinRsnnzZpfGGR0drejoaJfGUNYmT54si8VSqm0HDBigSpUqmRrPgAEDFBYWVurts7Oz9cILL6h58+by9/dXYGCgYmJitG3bNvOCBK5hO3bs0AMPPKDg4GB5eXkpKChI999/v7Zv335V+50xY4bWrFljTpBXcOLECU2ePFkpKSlOac8RR48elcVi0YsvvmjaPjdv3iyLxaL//Oc/V6xr75xvr6+zWCyaPHmydX3//v2aPHmyjh49WmifV3vevhqdO3fW0KFDXdJ2cS4/fklJSbJYLHaPX3HWrl1rs5+/CwsL04ABA0odo9kK3qO9JSMjw1rv0qVLatiwoRITE10XbCl5ujoAFO3yTur555/Xpk2btHHjRpvyZs2aOTOsQubPn+/S9uG4IUOGaPny5Ro/frxuv/12/fbbb5o5c6Y6duyor776SjfffLOrQwTc1quvvqq4uDjdfPPNmj17turXr6/U1FTNmzdP7du318svv6wRI0aUat8zZszQ/fffr169epkbtB0nTpzQlClTFBYWptatW5d5e+VJbGys7rrrrivW2759u+rWrWtd379/v6ZMmaLo6OhCicRzzz2n0aNHmx3qFX3wwQf66quvtGzZMqe37aju3btr+/btCg4Odmi7tWvXat68eXYTjNWrV6tKlSomRWiepUuXqkmTJjZlNWrUsP67YsWKmjhxosaMGaO+ffvavObuSC7c2K233mqzXqtWLVWoUKFQ+eUuXrwoPz+/sgzNhquTGzgmOztbK1asUJ8+fTRt2jRrebt27RQSEqLly5eTXABF+OqrrxQXF6du3bpp9erV8vT8v270oYce0j333KPRo0erTZs2ateunQsjdT/O7puuRt26dW2ShqJcqT/+u4YNG15NSKU2Y8YM3XPPPapTp45p+yyrz7JWrVqqVauWqfts06aNqfszS/PmzRUREVFsnYcffljx8fF67bXX9MwzzzgpsqvHsKhyLjo6Ws2bN9cXX3yhqKgo+fn5adCgQZIKX24sYO8SYUZGhh5//HHVrVtXXl5eCg8P15QpU5Sbm1uiGP5+qbjgcvYLL7ygWbNmKSwsTL6+voqOjtaPP/6oS5cuady4cQoJCVFAQIDuuecenTp1ymafq1atUteuXRUcHCxfX181bdpU48aN04ULFwq1//rrr6tRo0by9vZWs2bNtGLFCruXn3NycjRt2jQ1adJE3t7eqlWrlgYOHKhff/31iu/RHkdilKR9+/apc+fO8vf3V61atTRixAhdvHjRpo5hGJo/f75at24tX19fVatWTffff78OHz5cqhjtqVChgipUqKCAgACb8ipVqqhChQry8fExrS3gWpOQkCCLxaIFCxbYJBaS5Onpqfnz58tisWjmzJnW8qKGw1w+9MZisejChQt68803rcMkCs6tBUMpkpOTNXDgQFWvXl3+/v7q2bNnofNDUcNA/n6u3rx5s2666SZJ0sCBA63tFTW0xNEYiuubUlNT9eijj6p27dry9vZW06ZN9dJLLyk/P79Qm/n5+Zo+fbrq1asnHx8fRURE6PPPP7ep89NPP2ngwIG6/vrr5efnpzp16qhnz57au3ev3ffx559/Kj4+XkFBQfL19VXHjh21Z88emzolHQr792OWlJSkBx54QJLUqVMn6zFNSkqSZP97UNJz/p49e9SjRw/rMQsJCVH37t31yy+/FBvfnj179M0336hv37425WZ9lllZWRo7dqzCw8Pl5eWlOnXqKC4urlA/mJWVpSFDhqhGjRqqVKmS7rrrLv3444+F4i1qWNT69evVuXNnBQQEyM/PT02bNlVCQoL1uM6bN0+S7XDygn3Y+/9Qku/g34fmzZkzR+Hh4apUqZIiIyO1Y8eOYo+7Wby8vNS7d28tWrRIhmE4pU0zkFxcA9LT0/Xoo4+qT58+Wrt2rYYNG+bQ9hkZGbr55pu1YcMGTZw4UevWrdPgwYOVkJCgIUOGlDquefPm6auvvtK8efP0xhtv6L///a969uypwYMH69dff9WSJUs0e/ZsffbZZ4qNjbXZ9tChQ+rWrZsWL16s9evXKy4uTv/7v/+rnj172tRbtGiRHnvsMbVs2VLvv/++nn32WU2ZMqXQfSj5+fm6++67NXPmTPXp00effPKJZs6cqeTkZEVHR+uPP/5w+P2VNEbpr7GT3bp1U+fOnbVmzRqNGDFCr732mnr37m1T7/HHH1dcXJzuuOMOrVmzRvPnz9e+ffsUFRWlkydPFhtPQWd4pXtwKlasqGHDhunNN9/UmjVrlJWVpaNHj2rIkCEKCAi4qs8cuJbl5eVp06ZNioiIKPJX7dDQULVt21YbN25UXl6eQ/vfvn27fH191a1bN23fvl3bt28vNOx08ODBqlChglasWKHExER98803io6O1tmzZx1q68Ybb9TSpUslSc8++6y1vcvPxfaUNAZ7fdOvv/6qqKgoffrpp3r++ef14Ycf6o477tDYsWPtDiWbO3eu1q9fr8TERL399tuqUKGCYmJibIYNnzhxQjVq1NDMmTO1fv16zZs3T56enrrlllt08ODBQvt85plndPjwYb3xxht64403dOLECUVHR1/1jzjdu3fXjBkzJP3V/xUc0+7duxe5TUnO+RcuXFCXLl108uRJzZs3T8nJyUpMTFS9evV07ty5YmP6+OOP5eHhodtuu83u61fzWV68eFEdO3bUm2++qVGjRmndunV6+umnlZSUpP/5n/+x/jFsGIZ69eqlt956S//617+0evVq3XrrrYqJiSnRcV28eLG6deum/Px8LVy4UB999JFGjRplTayee+453X///ZJkPebFDa1y9Dv492O+fPlyXbhwQd26dVNmZqa1TkEi4si9HT169JCHh4eqV6+ue++9Vz/88IPdetHR0Tp27FiRr7slA+VG//79DX9/f5uyjh07GpKMzz//vFB9ScakSZMKldevX9/o37+/df3xxx83KlWqZBw7dsym3osvvmhIMvbt21dsXB07djQ6duxoXT9y5IghyWjVqpWRl5dnLU9MTDQkGf/zP/9js31cXJwhycjMzLS7//z8fOPSpUvGli1bDEnGd999ZxiGYeTl5RlBQUHGLbfcYlP/2LFjRsWKFY369etby1auXGlIMt577z2bujt37jQkGfPnzy/2PU6aNMko7r9LUTEaxl+fmyTj5Zdfttlm+vTphiTjyy+/NAzDMLZv325IMl566SWbemlpaYavr6/x1FNP2ezz7+/PMAxjypQphoeHh7F58+Zi30tBvBMnTjQqVKhgSDIkGfXq1TP27NlzxW2Bf6qMjAxDkvHQQw8VW693796GJOPkyZOGYdj//2oY9s8r/v7+NufnAkuXLjUkGffcc49N+VdffWVIMqZNm2Ytu/wcX+Dyc3XB+W/p0qXFvp/SxFBU3zRu3DhDkvH111/blD/xxBOGxWIxDh48aBjG//UjISEhxh9//GGtl5WVZVSvXt244447iowzNzfXyMnJMa6//npjzJgx1vJNmzYZkowbb7zRyM/Pt5YfPXrUqFixohEbG2sts/fZXH78DKNwP/vuu+8akoxNmzYViuvy70FJz/m7du0yJBlr1qwp8j0XJSYmxmjSpEmhcjM+y4SEBKNChQrGzp07bcr/85//GJKMtWvXGoZhGOvWrSu2D/z78SuI68iRI4ZhGMa5c+eMKlWqGO3bt7f5zC43fPjwIvvoy/8/OPodbNGihZGbm2ut98033xiSjJUrV1rLjh49anh4eBiDBg0qMsYC69atMyZMmGB89NFHxpYtW4y5c+cadevWNfz9/Y2UlJRC9Q8dOmRIMhYsWHDFfbsLrlxcA6pVq6bbb7+91Nt//PHH6tSpk0JCQpSbm2tdCn5V2LJlS6n2261bN1Wo8H9fsaZNm0pSoV9xCspTU1OtZYcPH1afPn0UFBQkDw8PVaxYUR07dpQkHThwQJJ08OBBZWRk6MEHH7TZX7169QqNdf74449VtWpV9ezZ0+Y9tm7dWkFBQaWacaskMf7dI488YrPep08fSdKmTZusMVosFj366KM2MQYFBalVq1ZXjHHixInKzc21xlCc6dOn68UXX9TkyZO1adMmffDBB2rcuLG6dOlSaHgAAMcY//8X29LOMFecy88jUVFRql+/vvU84gwljcFe37Rx40Y1a9as0H1dAwYMkGEYhSYsuffee22GalauXFk9e/bUF198Yb0ylJubqxkzZqhZs2by8vKSp6envLy8dOjQIbvn4j59+th8NvXr11dUVJRTj6FU8nP+ddddp2rVqunpp5/WwoULtX///hK3ceLECdWuXbvI16/ms/z444/VvHlztW7d2ib+O++80+YqesG+iuoDi7Nt2zZlZWVp2LBhpv1/cvQ72L17d3l4eFjXW7ZsKUk6duyYtax+/frKzc3V4sWLr9j+XXfdpWnTpqlHjx667bbbNHz4cG3dulUWi0UTJ04sVL/g8zt+/HjJ36SLcUP3NcDRWRUud/LkSX300UeqWLGi3ddPnz5dqv1Wr17dZt3Ly6vY8j///FOSdP78eXXo0EE+Pj6aNm2aGjVqJD8/P6Wlpenee++1DmE6c+aMJCkwMLBQ24GBgTpy5Ih1/eTJkzp79qy1rcs5+h5LGmMBT0/PQjM9BAUF2byPkydPyjAMu+9Hkho0aOBQjEU5cOCAJk6cqNmzZ2vs2LHW8piYGDVr1kzx8fFO72SB8qBmzZry8/OzObfYc/ToUfn5+RU615mh4LxxeVnBecQZShqDvb7pzJkzdu8/CQkJsb5ekrZycnJ0/vx5BQQEKD4+XvPmzdPTTz+tjh07qlq1aqpQoYJiY2PtDnktap/fffddofKyVNJzfkBAgLZs2aLp06frmWee0e+//67g4GANGTJEzz77bJF9tyT98ccfRe5furrP8uTJk/rpp5+u+LfDmTNniu0Di1NwT2RJbq4vKUe/g5fH7e3tLUmlGk5dlLCwMLVv397uvRwFybWZ7ZU1kotrQFHZvLe3t7KzswuVX/4fp2bNmmrZsqWmT59udz8F/+GcZePGjTpx4oQ2b95s8yv85WNAC/7D27sX4e9zRUt/vccaNWpo/fr1dtusXLlymcRYIDc3V2fOnLE5SRXEWFBWs2ZNWSwWbd261Xry+jt7ZaXx3XffyTAM682cBSpWrKhWrVqV+koVcK3z8PBQp06dtH79ev3yyy92/+D55ZdftHv3bsXExFh/7fTx8bF7Li7NDzeXn9sKyq677jrrenHt1axZ0+E2SxODZL9vqlGjhtLT0wuVnzhxQpIKxVdUW15eXtbnB7399tvq16+f9X6HAqdPn1bVqlVLHL+zp/p05JzfokULvfPOOzIMQ99//72SkpI0depU+fr6aty4ccW28dtvvxX5+tV8ljVr1pSvr6+WLFlSZNvSX595cX1gcQpmjrrSjeuOcPQ76CyGYdiM9ihQ8Pm5Kq7SYFjUNSwsLEzff/+9TdnGjRt1/vx5m7IePXrohx9+UMOGDRUREVFocXZyUXASu/xk+9prr9msN27cWEFBQfrf//1fm/LU1NRCD4Pr0aOHzpw5o7y8PLvvsXHjxmUS498tX77cZn3FihWSZJ29pUePHjIMQ8ePH7cbY4sWLRyKsSgFn+flv5BkZ2fr22+/NfUXIuBaM378eBmGoWHDhhW6YTsvL09PPPGEDMPQ+PHjreVhYWE6deqUzQ8hOTk52rBhQ6H9e3t7F/sL5eXnkW3btunYsWM2M/bZO/f/+OOPhW5uLu0vsCWJoSidO3fW/v379e2339qUL1u2TBaLRZ06dbIpf//9961XtSXp3Llz+uijj9ShQwdr8maxWAqdiz/55JMih5GsXLnSZuadY8eOadu2baY8DNaRY1qac77FYlGrVq3073//W1WrVi10HC/XpEmTYm9Uv5rPskePHvr5559Vo0YNu/EXXB0o+EyL6gOLExUVpYCAAC1cuLDY2ZIcOe6Ofged4ciRI/rqq6/sTm1c8PmVp2n/uXJxDevbt6+ee+45TZw4UR07dtT+/fs1d+7cQlOQTp06VcnJyYqKitKoUaPUuHFj/fnnnzp69KjWrl2rhQsXOvUPzqioKFWrVk1Dhw7VpEmTVLFiRS1fvrzQJesKFSpoypQpevzxx3X//fdr0KBBOnv2rKZMmaLg4GCbXwAeeughLV++XN26ddPo0aN18803q2LFivrll1+0adMm3X333brnnntMj7GAl5eXXnrpJZ0/f1433XSTtm3bpmnTpikmJkbt27eX9NdzJh577DENHDhQu3bt0m233SZ/f3+lp6fryy+/VIsWLfTEE08UGdPUqVM1depUff7558Xed9G+fXvddNNNmjx5si5evKjbbrtNmZmZevXVV3XkyBG99dZbJT4OwD9Nu3btlJiYqLi4OLVv314jRoxQvXr1rA/R+/rrr5WYmKioqCjrNr1799bEiRP10EMP6cknn9Sff/6pV155xe5sUi1atNDmzZv10UcfKTg4WJUrV7b58WPXrl2KjY3VAw88oLS0NE2YMEF16tSxmSWwb9++evTRRzVs2DDdd999OnbsmGbPnl3o+QENGzaUr6+vli9frqZNm6pSpUoKCQm54g9KJYmhKGPGjNGyZcvUvXt3TZ06VfXr19cnn3yi+fPn64knnlCjRo1s6nt4eKhLly6Kj49Xfn6+Zs2apaysLE2ZMsVap0ePHkpKSlKTJk3UsmVL7d69Wy+88EKR/dapU6d0zz33aMiQIcrMzNSkSZPk4+NjkxCWVvPmzSX9NZNh5cqV5ePjo/DwcLtXRUp6zv/44481f/589erVSw0aNJBhGHr//fd19uxZdenSpdh4oqOjtWTJEv3444+Fjq10dZ9lXFyc3nvvPd12220aM2aMWrZsqfz8fKWmpurTTz/Vv/71L91yyy3q2rWrbrvtNj311FO6cOGCIiIi9NVXX5Wor6lUqZJeeuklxcbG6o477tCQIUMUGBion376Sd99953mzp0rSdZEbNasWdarhi1btrQ7FNrR72BJHDt2TA0bNlT//v2veN/FHXfcodtuu00tW7ZUlSpVtHfvXs2ePVsWi0XPP/98ofo7duwodsYvt+SCm8hRSkXNFnXDDTfYrZ+dnW089dRTRmhoqOHr62t07NjRSElJsTuTyK+//mqMGjXKCA8PNypWrGhUr17daNu2rTFhwgTj/PnzxcZV1GxRL7zwgk29gpk63n33XZvygtkh/j7jxLZt24zIyEjDz8/PqFWrlhEbG2t8++23dmc2WbRokXHdddcZXl5eRqNGjYwlS5YYd999t9GmTRubepcuXTJefPFFo1WrVoaPj49RqVIlo0mTJsbjjz9uHDp0qNj3aG/mkJLGWPC5ff/990Z0dLTh6+trVK9e3XjiiSfsHtslS5YYt9xyi+Hv72/4+voaDRs2NPr162fs2rXLZp+Xzz5TEKO9WUoud/bsWWPChAlG06ZNDT8/P6N27dpGdHS0dXYPAMXbvn27cf/99xuBgYGGp6enUbt2bePee+81tm3bZrf+2rVrjdatWxu+vr5GgwYNjLlz59o9r6SkpBjt2rUz/Pz8DEnWc2vBefLTTz81+vbta1StWtXw9fU1unXrVuj8lZ+fb8yePdto0KCB4ePjY0RERBgbN260O9vRypUrjSZNmhgVK1YscobBAo7EUFzfdOzYMaNPnz5GjRo1jIoVKxqNGzc2XnjhBZvZBQv6kVmzZhlTpkwx6tata3h5eRlt2rQxNmzYYLO/33//3Rg8eLBRu3Ztw8/Pz2jfvr2xdevWQu+3oA966623jFGjRhm1atUyvL29jQ4dOticXw2j9LNFGcZfMyOGh4cbHh4eNv1BUbOGXemc/9///td4+OGHjYYNGxq+vr5GQECAcfPNNxtJSUl2j+/fZWZmGpUqVTJmz55tU27WZ3n+/Hnj2WefNRo3bmx4eXkZAQEBRosWLYwxY8YYGRkZ1npnz541Bg0aZFStWtXw8/MzunTpYvz3v/+94mxRBdauXWt07NjR8Pf3N/z8/IxmzZoZs2bNsr6enZ1txMbGGrVq1TIsFovNPuz9zePId/Dyv2UMo/DnXlDX3ixtl4uLizOaNWtmVK5c2fD09DRCQkKMRx991DpL1eU6dOhg9OzZ84r7dScWwyhHT+UASuDs2bNq1KiRevXqpUWLFrk6HAC4aklJSRo4cKB27tx5xaf6XssxwHEjR47U559/rn379lmH9PJZlg8///yzrr/+em3YsOGKV6ncCfdcoFzLyMjQyJEj9f7772vLli1atmyZOnXqpHPnzmn06NGuDg8AAJd69tlndfz4cb333nuuDgUOmjZtmjp37lyuEguJey5Qznl7e+vo0aMaNmyYfvvtN/n5+enWW2/VwoULdcMNN7g6PAAAXCowMFDLly/X77//7upQ4IDc3Fw1bNjQlHuBnI1hUQAAAABMwbAoAAAAAKYguQAAAABgCpILAAAAAKZw+g3d+fn5OnHihCpXrmz3cfIAUF4YhqFz584pJCTE5qGNKBv0HwDgGo70d05PLk6cOKHQ0FBnNwsAZSYtLc2pT7H/p6L/AADXKkl/5/TkonLlypL+Cq5KlSrObr7cateunatDKFJmZqarQ7CrXr16rg6hSHv37nV1CEVasWKFq0Owq0OHDq4OoZCsrCyFhoZaz2soW/QfAOAajvR3Tk8uCi5lV6lShc7BAR4eHq4OoUjuOhzE09N9H+PizkM6/P39XR2CXe58vnDnz/NaQv8BAK5Vkv7OPf8qBAAAAFDukFwAAAAAMAXJBQAAAABTuO+gdAAAHGQYhnJzc5WXl+fqUGASDw8PeXp6cm8TUE6QXAAArgk5OTlKT0/XxYsXXR0KTObn56fg4GB5eXm5OhQAV0ByAQAo9/Lz83XkyBF5eHgoJCREXl5e/NJ9DTAMQzk5Ofr111915MgRXX/99W47QyGAv5BcAADKvZycHOXn5ys0NFR+fn6uDgcm8vX1VcWKFXXs2DHl5OTIx8fH1SEBKAbpPwDgmsGv2tcmPleg/OB/KwDAYV988YV69uypkJAQWSwWrVmz5orbbNmyRW3btpWPj48aNGighQsXln2gAACnIrkAADjswoULatWqlebOnVui+keOHFG3bt3UoUMH7dmzR88884xGjRql9957r4wjBQA4E/dcAAAcFhMTo5iYmBLXX7hwoerVq6fExERJUtOmTbVr1y69+OKLuu++++xuk52drezsbOt6VlbWVcUMACh7JBcAgDK3fft2de3a1abszjvv1OLFi3Xp0iVVrFix0DYJCQmaMmXKVbcdNu6Tq95HSR2d2d3hbaKjo9W6dWtr4gXAuZx1jijN+aE8KtWwqPnz5ys8PFw+Pj5q27attm7danZcAIBrSEZGhgIDA23KAgMDlZubq9OnT9vdZvz48crMzLQuaWlpzgjV7RQ8GBAAygOHk4tVq1YpLi5OEyZM0J49e9ShQwfFxMQoNTW1LOIDAFwjLn/uhGEYdssLeHt7q0qVKjbLtWbAgAHasmWLXn75ZVksFlksFiUlJclisWjDhg2KiIiQt7e3tm7dqgEDBqhXr14228fFxSk6Otq6bhiGZs+erQYNGsjX11etWrXSf/7zH+e+KQD/aA4nF3PmzNHgwYMVGxurpk2bKjExUaGhoVqwYEFZxAcAuAYEBQUpIyPDpuzUqVPy9PRUjRo1XBSV67388suKjIzUkCFDlJ6ervT0dIWGhkqSnnrqKSUkJOjAgQNq2bJlifb37LPPaunSpVqwYIH27dunMWPG6NFHH9WWLVvK8m0AgJVD91zk5ORo9+7dGjdunE15165dtW3bNrvbcEMeACAyMlIfffSRTdmnn36qiIgIu/db/FMEBATIy8tLfn5+CgoKkiT997//lSRNnTpVXbp0KfG+Lly4oDlz5mjjxo2KjIyUJDVo0EBffvmlXnvtNXXs2NH8NwAAl3EouTh9+rTy8vLsjpu9/BepAmbdkAcAcB/nz5/XTz/9ZF0/cuSIUlJSVL16ddWrV0/jx4/X8ePHtWzZMknS0KFDNXfuXMXHx2vIkCHavn27Fi9erJUrV7rqLbi9iIgIh+rv379ff/75Z6GEJCcnR23atDEzNAAoUqlmi7I3braoMbPjx49XfHy8dT0rK8t6yRcAUD7t2rVLnTp1sq4XnOf79++vpKQkpaen29yLFx4errVr12rMmDGaN2+eQkJC9MorrxQ5DS0kf39/m/UKFSpY71MpcOnSJeu/8/PzJUmffPKJ6tSpY1PP29u7jKIEAFsOJRc1a9aUh4eH3XGzl1/NKODt7c1JDQCuMdHR0YX+0P27pKSkQmUdO3bUt99+W4ZRlU9eXl7Ky8u7Yr1atWrphx9+sClLSUmxDitr1qyZvL29lZqayhAoAC7j0A3dXl5eatu2rZKTk23Kk5OTFRUVZWpgAAD8E4SFhenrr7/W0aNHdfr0aesViMvdfvvt2rVrl5YtW6ZDhw5p0qRJNslG5cqVNXbsWI0ZM0Zvvvmmfv75Z+3Zs0fz5s3Tm2++6ay3A+AfzuFhUfHx8erbt68iIiIUGRmpRYsWKTU1VUOHDi2L+AAAuCru/uCqsWPHqn///mrWrJn++OMPLV261G69O++8U88995yeeuop/fnnnxo0aJD69eunvXv3Wus8//zzql27thISEnT48GFVrVpVN954o5555hlnvR0A/3AOJxe9e/fWmTNnNHXqVKWnp6t58+Zau3at6tevXxbxAQBwTWvUqJG2b99uUzZgwAC7dadMmVLsJCkWi0WjRo3SqFGjzAwRAEqsVDd0Dxs2TMOGDTM7FgAAAADlmMMP0QMAAAAAe0guAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAAACAKUguAAAAAJiC5AIAcG2zWJy3uLmwsDAlJiZa1y0Wi9asWXNV+zRjHwCuHaV6QjcAACj/0tPTVa1atRLVnTx5stasWaOUlJRS7wPAtY/kAgCAciQnJ0deXl6m7CsoKMgt9gHg2sGwKAAAXCg6OlojRozQiBEjVLVqVdWoUUPPPvusDMOQ9NdQpmnTpmnAgAEKCAjQkCFDJEnbtm3TbbfdJl9fX4WGhmrUqFG6cOGCdb+nTp1Sz5495evrq/DwcC1fvrxQ25cPafrll1/00EMPqXr16vL391dERIS+/vprJSUlacqUKfruu+9ksVhksViUlJRkdx979+7V7bffLl9fX9WoUUOPPfaYzp8/b319wIAB6tWrl1588UUFBwerRo0aGj58uC5dumTiUQXgKly5KCe+++47V4dQpNWrV7s6hHLnnnvucXUIRTp79qyrQwD+cd58800NHjxYX3/9tXbt2qXHHntM9evXtyYSL7zwgp577jk9++yzkv76A/7OO+/U888/r8WLF+vXX3+1JihLly6V9Ncf8Wlpadq4caO8vLw0atQonTp1qsgYzp8/r44dO6pOnTr68MMPFRQUpG+//Vb5+fnq3bu3fvjhB61fv16fffaZJCkgIKDQPi5evKi77rpLt956q3bu3KlTp04pNjZWI0aMsCYjkrRp0yYFBwdr06ZN+umnn9S7d2+1bt3a+n4BlF8kFwAAuFhoaKj+/e9/y2KxqHHjxtq7d6/+/e9/W//Yvv322zV27Fhr/X79+qlPnz6Ki4uTJF1//fV65ZVX1LFjRy1YsECpqalat26dduzYoVtuuUWStHjxYjVt2rTIGFasWKFff/1VO3fuVPXq1SVJ1113nfX1SpUqydPTs9hhUMuXL9cff/yhZcuWyd/fX5I0d+5c9ezZU7NmzVJgYKAkqVq1apo7d648PDzUpEkTde/eXZ9//jnJBXANYFgUAAAuduutt8ryt9mmIiMjdejQIeXl5UmSIiIibOrv3r1bSUlJqlSpknW58847lZ+fryNHjujAgQPy9PS02a5JkyaqWrVqkTGkpKSoTZs21sSiNA4cOKBWrVpZEwtJateunfLz83Xw4EFr2Q033CAPDw/renBwcLFXVQCUH1y5AADAzf39j3VJys/P1+OPP65Ro0YVqluvXj3rH/IWB6bH9fX1vbogJRmGUWSbfy+vWLFiodfy8/Ovun0ArseVCwAAXGzHjh2F1q+//nqbX/f/7sYbb9S+fft03XXXFVq8vLzUtGlT5ebmateuXdZtDh48WOw9VS1btlRKSop+++03u697eXlZr6QUpVmzZkpJSbG5sfyrr75ShQoV1KhRo2K3BXBtILkAAMDF0tLSFB8fr4MHD2rlypV69dVXNXr06CLrP/3009q+fbuGDx+ulJQUHTp0SB9++KFGjhwpSWrcuLHuuusuDRkyRF9//bV2796t2NjYYq9OPPzwwwoKClKvXr301Vdf6fDhw3rvvfe0fft2SX/NWnXkyBGlpKTo9OnTys7OLrSPRx55RD4+Purfv79++OEHbdq0SSNHjlTfvn2t91sAuLaRXAAArm2G4byllPr166c//vhDN998s4YPH66RI0fqscceK7J+y5YttWXLFh06dEgdOnRQmzZt9Nxzzyk4ONhaZ+nSpQoNDVXHjh1177336rHHHlPt2rWL3KeXl5c+/fRT1a5dW926dVOLFi00c+ZM69WT++67T3fddZc6deqkWrVqaeXKlYX24efnpw0bNui3337TTTfdpPvvv1+dO3fW3LlzS31sAJQvFsO4irNhKWRlZSkgIECZmZmqUqWKM5su1xwZN+tsTEXrOHeeitZdP89evXq5OoRCOJ85V3HH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IRTJnT9PAACA0uLKBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAXJBQAAAABTkFwAAAAAMAUP0QMAAHAFi8U57RiGc9oBxJULAAAAACYhuQAAAABgCpILAAAAAKYguQAAlMr8+fMVHh4uHx8ftW3bVlu3bi22fnZ2tiZMmKD69evL29tbDRs21JIlS5wULQDAGbihGwDgsFWrVikuLk7z589Xu3bt9NprrykmJkb79+9XvXr17G7z4IMP6uTJk1q8eLGuu+46nTp1Srm5uU6OHABQlkguAAAOmzNnjgYPHqzY2FhJUmJiojZs2KAFCxYoISGhUP3169dry5YtOnz4sKpXry5JCgsLc2bIAAAncGhY1IIFC9SyZUtVqVJFVapUUWRkpNatW1dWsQEA3FBOTo52796trl272pR37dpV27Zts7vNhx9+qIiICM2ePVt16tRRo0aNNHbsWP3xxx9FtpOdna2srCybBQDg3hy6clG3bl3NnDlT1113nSTpzTff1N133609e/bohhtuKJMAAQDu5fTp08rLy1NgYKBNeWBgoDIyMuxuc/jwYX355Zfy8fHR6tWrdfr0aQ0bNky//fZbkfddJCQkaMqUKabHDwAoOw5duejZs6e6deumRo0aqVGjRpo+fboqVaqkHTt2FLkNvzwBwLXJctkDwAzDKFRWID8/XxaLRcuXL9fNN9+sbt26ac6cOUpKSiry6sX48eOVmZlpXdLS0kx/DwAAc5V6tqi8vDy98847unDhgiIjI4usl5CQoICAAOsSGhpa2iYBAG6gZs2a8vDwKHSV4tSpU4WuZhQIDg5WnTp1FBAQYC1r2rSpDMPQL7/8Yncbb29v6zDcggUA4N4cTi727t2rSpUqydvbW0OHDtXq1avVrFmzIuvzyxMAXFu8vLzUtm1bJScn25QnJycrKirK7jbt2rXTiRMndP78eWvZjz/+qAoVKqhu3bplGi8AwHkcTi4aN26slJQU7dixQ0888YT69++v/fv3F1mfX54A4NoTHx+vN954Q0uWLNGBAwc0ZswYpaamaujQoZL++mGpX79+1vp9+vRRjRo1NHDgQO3fv19ffPGFnnzySQ0aNEi+vr6uehsAAJM5PBWtl5eX9YbuiIgI7dy5Uy+//LJee+0104MDALin3r1768yZM5o6darS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nRbHlZS7J3SfPn1aeXl5CgwMtCkPDAxURkaGi6IqPwzDUHx8vNq3b6/mzZu7Ohy39s477+jbb791u7GM7urw4cNasGCB4uPj9cwzz+ibb77RqFGj5O3trX79+rk6PMAh9DW2XNl37N27V5GRkfrzzz9VqVIlrV69Ws2aNXNa+67uC2655RYtW7ZMjRo10smTJzVt2jRFRUVp3759qlGjhlNicLfz+5o1a3T27FkNGDDAaW0+/fTTyszMVJMmTeTh4aG8vDxNnz5dDz/8sNNiqFy5siIjI/X888+radOmCgwM1MqVK/X111/r+uuvd1ocV1LukosCl2eqhmE4LXstz0aMGKHvv//erTJcd5SWlqbRo0fr008/LfQLAezLz89XRESEZsyYIUlq06aN9u3bpwULFpBcoNyir/mLK/uOxo0bKyUlRWfPntV7772n/v37a8uWLU5JMNyhL4iJibH+u0WLFoqMjFTDhg315ptvKj4+3ikxuNv5ffHixYqJiVFISIjT2ly1apXefvttrVixQjfccINSUlIUFxenkJAQ9e/f32lxvPXWWxo0aJDq1KkjDw8P3XjjjerTp4++/fZbp8VwJeVuWFTNmjXl4eFR6JejU6dOFfqFCbZGjhypDz/8UJs2bVLdunVdHY5b2717t06dOqW2bdvK09NTnp6e2rJli1555RV5enoqLy/P1SG6neDg4EKdfdOmTZloAeUSfc3/cXXf4eXlpeuuu04RERFKSEhQq1at9PLLLzulbXfsC/z9/dWiRQsdOnTIaW260/n92LFj+uyzzxQbG+vUdp988kmNGzdODz30kFq0aKG+fftqzJgxSkhIcGocDRs21JYtW3T+/HmlpaXpm2++0aVLlxQeHu7UOIpT7pILLy8vtW3b1jpLQIHk5GRFRUW5KCr3ZhiGRowYoffff18bN250qy+gu+rcubP27t2rlJQU6xIREaFHHnlEKSkp8vDwcHWIbqddu3aFpqn88ccfVb9+fRdFBJQefY379h2GYSg7O9spbbljX5Cdna0DBw4oODjYaW260/l96dKlql27trp37+7Udi9evKgKFWz/bPbw8HD6VLQF/P39FRwcrN9//10bNmzQ3Xff7ZI47CmXw6Li4+PVt29fRUREKDIyUosWLVJqaqqGDh3q6tDc0vDhw7VixQp98MEHqly5svWXuICAAPn6+ro4OvdUuXLlQuOK/f39VaNGDe5VKcKYMWMUFRWlGTNm6MEHH9Q333yjRYsWadGiRa4ODSgVV/c158+f108//WRdP3LkiFJSUlS9enXVq1evzNt3h77jmWeeUUxMjEJDQ3Xu3Dm988472rx5s9avX++U9t2hLxg7dqx69uypevXq6dSpU5o2bZqysrKcOhTHXc7v+fn5Wrp0qfr37y9PT+f+CduzZ09Nnz5d9erV0w033KA9e/Zozpw5GjRokFPj2LBhgwzDUOPGjfXTTz/pySefVOPGjTVw4ECnxlEs101UdXXmzZtn1K9f3/Dy8jJuvPFGl0+N584k2V2WLl3q6tDKFaaivbKPPvrIaN68ueHt7W00adLEWLRokatDAq6KK/uaTZs22T139+/f3yntu0PfMWjQIOvxr1WrltG5c2fj008/dVr79ji7L+jdu7cRHBxsVKxY0QgJCTHuvfdeY9++fU5rv4A7nN83bNhgSDIOHjzo9LazsrKM0aNHG/Xq1TN8fHyMBg0aGBMmTDCys7OdGseqVauMBg0aGF5eXkZQUJAxfPhw4+zZs06N4UoshmEYzk5oAAAAAFx7yt09FwAAAADcE8kFAAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAPx/FotFa9asKXH9zZs3y2Kx6OzZs6bGERYWpsTERFP3CTgDyQUAALimDRgwQBaLRRaLRRUrVlRgYKC6dOmiJUuWKD8/36Zuenq6YmJiSrzvqKgopaenKyAgQJKUlJSkqlWrmhk+UK6QXAAAgGveXXfdpfT0dB09elTr1q1Tp06dNHr0aPXo0UO5ubnWekFBQfL29i7xfr28vBQUFCSLxVIWYQPlDskFAAC45nl7eysoKEh16tTRjTfeqGeeeUYffPCB1q1bp6SkJGu9y4dFbdu2Ta1bt5aPj48iIiK0Zs0aWSwWpaSkSLIdFrV582YNHDhQmZmZ1islkydPLjKmDz/8UBEREfLx8VHNmjV17733Fll3zpw5atGihfz9/RUaGqphw4bp/Pnz1tePHTumnj17qlq1avL399cNN9ygtWvXSpJ+//13PfLII6pVq5Z8fX11/fXXa+nSpaU6jsCVeLo6AAAAAFe4/fbb1apVK73//vuKjY0t9Pq5c+fUs2dPdevWTStWrNCxY8cUFxdX5P6ioqKUmJioiRMn6uDBg5KkSpUq2a37ySef6N5779WECRP01ltvKScnR5988kmR+65QoYJeeeUVhYWF6ciRIxo2bJieeuopzZ8/X5I0fPhw5eTk6IsvvpC/v7/2799vbfu5557T/v37tW7dOtWsWVM//fST/vjjj5IeJsAhJBcAAOAfq0mTJvr+++/tvrZ8+XJZLBa9/vrr8vHxUbNmzXT8+HENGTLEbn0vLy8FBATIYrEoKCio2HanT5+uhx56SFOmTLGWtWrVqsj6f09qwsPD9fzzz+uJJ56wJhepqam677771KJFC0lSgwYNrPVTU1PVpk0bRURESPrrZnGgrDAsCgAA/GMZhlHk/RIHDx5Uy5Yt5ePjYy27+eabTWk3JSVFnTt3LnH9TZs2qUuXLqpTp44qV66sfv366cyZM7pw4YIkadSoUZo2bZratWunSZMm2SRMTzzxhN555x21bt1aTz31lLZt22bKewDsIbkAAAD/WAcOHFB4eLjd1+wlHoZhmNKur69vieseO3ZM3bp1U/PmzfXee+9p9+7dmjdvniTp0qVLkqTY2FgdPnxYffv21d69exUREaFXX31VkhQTE2Md0nXixAl17txZY8eONeV9AJcjuQAAAP9IGzdu1N69e3XffffZfb1gyFR2dra1bNeuXcXu08vLS3l5eVdsu2XLlvr8889LFOeuXbuUm5url156SbfeeqsaNWqkEydOFKoXGhqqoUOH6v3339e//vUvvf7669bXatWqpQEDBujtt99WYmKiFi1aVKK2AUeRXAAAgGtedna2MjIydPz4cX377beaMWOG7r77bvXo0UP9+vWzu02fPn2Un5+vxx57TAcOHNCGDRv04osvSlKRQ6nCwsJ0/vx5ff755zp9+rQuXrxot96kSZO0cuVKTZo0SQcOHNDevXs1e/Zsu3UbNmyo3Nxcvfrqqzp8+LDeeustLVy40KZOXFycNmzYoCNHjujbb7/Vxo0b1bRpU0nSxIkT9cEHH+inn37Svn379PHHH1tfA8xGcgEAAK5569evV3BwsMLCwnTXXXdp06ZNeuWVV/TBBx/Iw8PD7jZVqlTRRx99pJSUFLVu3VoTJkzQxIkTJcnmPoy/i4qK0tChQ9W7d2/VqlWryIQhOjpa7777rj788EO1bt1at99+u77++mu7dVu3bq05c+Zo1qxZat68uZYvX66EhASbOnl5eRo+fLiaNm2qu+66S40bN7be7O3l5aXx48erZcuWuu222+Th4aF33nmnRMcNcJTFMGvwIAAAwDVu+fLl1mdZOHLfBPBPwVS0AAAARVi2bJkaNGigOnXq6LvvvtPTTz+tBx98kMQCKALJBQAAQBEyMjI0ceJEZWRkKDg4WA888ICmT5/u6rAAt8WwKAAAAACm4IZuAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgiv8HSfPfxOcxCbIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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Re5T4nMTh127dllH4nLvfJVrx44dBd7xq0RyyWXkKJL87hZ18803262fkZFhPPfcc0ZwcLDh4+NjtG/f3khMTLR7J5HffvvNGDFihBESEmJ4eHgYlStXNlq3bm2MHz/euHDhQoFx5Xe3qKvvPJR7p46PPvrIpjz37hBX3nFi27ZtRlhYmOHr62tUq1bNiIyMNH744Qe7d1WYP3++cdNNNxmenp5GgwYNjIULFxr33Xef0apVK5t6ly9fNl577TWjRYsWhre3t1GuXDmjUaNGxtNPP20cPHiwwPdo784hhY0x93P76aefjA4dOhg+Pj5G5cqVjWeeecbusV24cKFx++23G2XLljV8fHyMevXqGX369DF27dpls8+r7z6TG6O9u5RcC3eLAhyzfft24+GHHzb8/f0Nd3d3o3r16saDDz5obNu2zW791atXGy1btjR8fHyMunXrGrNmzbJ7XklMTDTatGlj+Pr6GpKs59bc8+T69euN3r17GxUrVjR8fHyMrl275jl/5eTkGK+88opRt25dw9vb2wgNDTU2bNhg925HS5cuNRo1amR4eHjke4fBXI7EUFDfdOzYMaNXr15GlSpVDA8PD6Nhw4bGq6++anN3wdxz0owZM4wpU6YYNWvWNDw9PY1WrVoZ69ats9nfH3/8YQwcONCoXr264evra7Rt29bYunVrnveb2we9//77xogRI4xq1aoZXl5eRrt27WzOr4ZR9LtFGcbfd0YMCQkx3NzcbPqD/O4adq1z/v/+9z/j8ccfN+rVq2f4+PgYfn5+xm233WbExcXZPb5XSktLM8qVK2e88sorNuVmfZYXLlwwXnjhBaNhw4aGp6en4efnZzRr1swYNWqUkZqaaq137tw5Y8CAAUbFihUNX19fo3Pnzsb//ve/a94tKtfq1auN9u3bG2XLljV8fX2NJk2aGDNmzLC+npGRYURGRhrVqlUzLBaLzT7s/c3jyHfQXr94ddy5de3dpc0eSfkuV2vXrp3Ro0ePQu23pLAYRil6KgdQCOfOnVODBg10//33a/78+a4OBwCuW1xcnPr376+dO3e67KGXJSEGOG748OH6+uuvtXfvXuuUXj7L0uHXX39V/fr1tW7dumuOUpUkXHOBUi01NVXDhw/Xp59+qs2bN2vx4sXq2LGjzp8/r5EjR7o6PAAAXOqFF17QiRMn9Mknn7g6FDho2rRp6tSpU6lKLCSuuUAp5+XlpaNHj2rIkCH6/fff5evrqzvuuEPz5s3TzTff7OrwAABwKX9/fy1ZskR//PGHq0OBA7KyslSvXj1TrgVyNqZFAQAAADAF06IAAAAAmILkAgAAAIApSC4AAAAAmMLpF3Tn5OTo5MmTKl++vN3HyQNAaWEYhs6fP6+goCCbhzaieNB/AIBrONLfOT25OHnypIKDg53dLAAUm+TkZKc+xf6fiv4DAFyrMP2d05OL8uXLS/o7uAoVKji7+VLriy++cHUI+YqJiXF1CHZ9++23rg4BN7j09HQFBwdbz2soXvQfAOAajvR3Tk8ucoeyK1SoQOfgAF9fX1eHkC83NzdXh2AX3y84C1N0nIP+AwBcqzD9HZOEAQAAAJiC5AIAAACAKUguAAAAAJjC6ddcAAAAoHTLzs7W5cuXXR0GTOTm5iZ3d/frvo6Q5AIAAACFduHCBR0/flyGYbg6FJjM19dXgYGB8vT0LPI+SC4AAABQKNnZ2Tp+/Lh8fX1VrVo17pZ3gzAMQ5mZmfrtt9905MgR1a9fv8gPhyW5AAAAQKFcvnxZhmGoWrVq8vHxcXU4MJGPj488PDx07NgxZWZmytvbu0j74YJuAAAAOIQRixtTUUcrbPZhQhwAgH+YLVu2qEePHgoKCpLFYtHKlSuvuc3mzZvVunVreXt7q27dupo3b17xBwoAcCqSCwCAwy5evKgWLVpo1qxZhap/5MgRde3aVe3atdPu3bs1btw4jRgxQp988kkxRwoAcCauuQAAOCwiIkIRERGFrj9v3jzVqlVLsbGxkqTGjRtr165deu211/TQQw/Z3SYjI0MZGRnW9fT09OuKGQBQ/EguAADFbvv27erSpYtN2T333KMFCxbo8uXL8vDwyLNNTEyMpkyZ4qwQ8Q9TZ8yXTmnn6MvdnNKOqznreOZy9Lh26NBBLVu2tP7AgeJTpGlRc+bMUUhIiLy9vdW6dWtt3brV7LgAADeQ1NRU+fv725T5+/srKytLZ86csbvN2LFjlZaWZl2Sk5OdESqAfyDDMJSVleXqMG4IDicXy5cvV1RUlMaPH6/du3erXbt2ioiIUFJSUnHEBwC4QVx9d5ncB3Dld9cZLy8vVahQwWYBAEf169dPmzdv1htvvCGLxSKLxaK4uDhZLBatW7dOoaGh8vLy0tatW9WvXz/df//9NttHRUWpQ4cO1nXDMPTKK6+obt268vHxUYsWLfTxxx87902VYA4nFzNnztTAgQMVGRmpxo0bKzY2VsHBwZo7d25xxAcAuAEEBAQoNTXVpuz06dNyd3dXlSpVXBQVgH+CN954Q2FhYRo0aJBSUlKUkpKi4OBgSdJzzz2nmJgY7d+/X82bNy/U/l544QUtWrRIc+fO1d69ezVq1Cg9+eST2rx5c3G+jVLDoWsuMjMzlZCQoDFjxtiUd+nSRdu2bbO7DRfkAQDCwsL0+eef25StX79eoaGhdq+3AACz+Pn5ydPTU76+vgoICJAk/e9//5MkTZ06VZ07dy70vi5evKiZM2dqw4YNCgsLkyTVrVtX33zzjd5++221b9/e/DdQyjiUXJw5c0bZ2dl2581e/YtULi7IA4Abz4ULF3To0CHr+pEjR5SYmKjKlSurVq1aGjt2rE6cOKHFixdLkgYPHqxZs2YpOjpagwYN0vbt27VgwQItXbrUVW8BABQaGupQ/X379umvv/7Kk5BkZmaqVatWZoZWahXpblH25s3mN2d27Nixio6Otq6np6dbh6IAAKXTrl271LFjR+t67nm+b9++iouLU0pKis21eCEhIVq9erVGjRql2bNnKygoSG+++Wa+t6EFAGcoW7aszXqZMmWs14Plunz5svXfOTk5kqQvv/xSNWrUsKnn5eVVTFGWLg4lF1WrVpWbm5vdebNXj2bk8vLy4mADwA2mQ4cOeTrgK8XFxeUpa9++vX744YdijAoA7PP09FR2dvY161WrVk0///yzTVliYqJ1+maTJk3k5eWlpKQkpkDlw6ELuj09PdW6dWvFx8fblMfHxys8PNzUwAAAAAAz1KlTR999952OHj2qM2fOWEcgrnbXXXdp165dWrx4sQ4ePKhJkybZJBvly5fX6NGjNWrUKL333nv69ddftXv3bs2ePVvvvfees95OiebwtKjo6Gj17t1boaGhCgsL0/z585WUlKTBgwcXR3wAAAAo4Ur6wwJHjx6tvn37qkmTJvrzzz+1aNEiu/XuueceTZgwQc8995z++usvDRgwQH369NGePXusdV588UVVr15dMTExOnz4sCpWrKhbbrlF48aNc9bbKdEcTi569uyps2fPaurUqUpJSVHTpk21evVq1a5duzjiAwAAAK5LgwYNtH37dpuyfv362a07ZcqU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i46OVu/evRUaGqqwsDDNnz9fSUlJGjx4sKS/r5c4ceKEFi9erDJlyqhp06Y221evXl3e3t55ygHA6exM5ywWhuGcdlyM5AIA4LCePXvq7Nmzmjp1qlJSUtS0aVOtXr1atWvXliSlpKRc85kXAIAbD8kFAKBIhgwZoiFDhth9LS4ursBtJ0+erMmTJ5sfFADApbjmAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmILkAgAAAIApSC4AAAAAmMKh5GLy5MmyWCw2S0BAQHHFBgAAAKAUcXd0g5tvvllfffWVdd3Nzc3UgAAAAACUTg4nF+7u7g6NVmRkZCgjI8O6np6e7miTAAAAAEoBh6+5OHjwoIKCghQSEqLHHntMhw8fLrB+TEyM/Pz8rEtwcHCRgwUAAABQcjmUXNx+++1avHix1q1bp3feeUepqakKDw/X2bNn891m7NixSktLsy7JycnXHTQAAACAksehaVERERHWfzdr1kxhYWGqV6+e3nvvPUVHR9vdxsvLS15eXtcXJQAAAIAS77puRVu2bFk1a9ZMBw8eNCseAAAAAKXUdSUXGRkZ2r9/vwIDA82KBwAAAEAp5VByMXr0aG3evFlHjhzRd999p4cffljp6enq27dvccUHAAAAoJRw6JqL48eP6/HHH9eZM2dUrVo13XHHHdqxY4dq165dXPEBAAAAKCUcSi6WLVtWXHEAAAAAKOWu65oLAAAAAMhFcgEAAADAFCQXAAAAAExBcgEAAADAFCQXAAAAAExBcgEAAADAFCQXAAAAAExBcgEAAADAFCQXAAAAAExBcgEAAADAFCQXAAAAAExBcgEAAADAFO6uDgCFc/ToUVeHkK9jx465OgS7OnTo4OoQAAAA/lEYuQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAAAAAKYguQAAAABgCpILAECRzJkzRyEhIfL29lbr1q21devWfOt++umn6ty5s6pVq6YKFSooLCxM69atc2K0AABncDi5OHHihJ588klVqVJFvr6+atmypRISEoojNgBACbV8+XJFRUVp/Pjx2r17t9q1a6eIiAgl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c/HiRbVo0UKzZs1ySntXKwl9R82aNfXyyy9r165d2rVrl+666y7dd9992rt3r9NiyOXKvuDmm29WSkqKddmzZ49T2y8J5/edO3faHIPch3I+8sgjTml/xowZmjdvnmbNmqX9+/frlVde0auvvqq33nrLKe3nioyMVHx8vN5//33t2bNHXbp00d13360TJ044NY4CGaXQbbfdZgwePNimrFGjRsaYMWNcFFHpcvr0aUOSsXnzZleHUuKdP3/eqF+/vhEfH2+0b9/eGDlypKtDKrGef/55o23btq4OAzBNSeprJBkrVqxwertXKil9R6VKlYx3333XqW26si+YNGmS0aJFC6e1Z09JPL+PHDnSqFevnpGTk+OU9rp162YMGDDApuzBBx80nnzySae0bxiGcenSJcPNzc344osvbMpbtGhhjB8/3mlxXEupG7nIzMxUQkKCunTpYlPepUsXbdu2zUVRlS5paWmSpMqVK7s4kpJv6NCh6tatm+6++25Xh1LirVq1SqGhoXrkkUdUvXp1tWrVSu+8846rwwKKhL4mL1f3HdnZ2Vq2bJkuXryosLAwp7bt6r7g4MGDCgoKUkhIiB577DEdPnzYqe2XtPN7ZmamPvjgAw0YMEAWi8UpbbZt21Zff/21fvnlF0nSjz/+qG+++UZdu3Z1SvvS31OzsrOz5e3tbVPu4+Ojb775xmlxXEupe0L3mTNnlJ2dLX9/f5tyf39/paamuiiq0sMwDEVHR6tt27Zq2rSpq8Mp0ZYtW6YffvihxM1lLKkOHz6suXPnKjo6WuPGjdP333+vESNGyMvLS3369HF1eIBD6GtsubLv2LNnj8LCwvTXX3+pXLlyWrFihZo0aeK09l3dF9x+++1avHixGjRooFOnTmnatGkKDw/X3r17VaVKFafEUNLO7ytXrtS5c+fUr18/p7X5/PPPKy0tTY0aNZKbm5uys7P10ksv6fHHH3daDOXLl1dYWJhefPFFNW7cWP7+/lq6dKm+++471a9f32lxXEupSy5yXZ2pGobhtOy1NBs2bJh++umnEpXhlkTJyckaOXKk1q9fn+cXAtiXk5Oj0NBQTZ8+XZLUqlUr7d27V3PnziW5QKlFX/M3V/YdDRs2VGJios6dO6dPPvlEffv21ebNm52SYJSEviAiIsL672bNmiksLEz16tXTe++9p+joaKfEUNLO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A2APyQUAAPjH2r9/v0JCQuy+Zi/xMAzDlHZ9fHwKXffYsWPq2rWrmjZtqk8++UQJCQmaPXu2JOny5cuSpMjISB0+fFi9e/fWnj17FBoaqrfeekuSFBERYZ3SdfLkSXXq1EmjR4825X0AVyO5AAAA/0gbNmzQnj179NBDD9l9PXfKVEZGhrVs165dBe7T09NT2dnZ12y7efPm+vrrrwsV565du5SVlaXXX39dd9xxhxo0aKCTJ0/mqRccHKzBgwfr008/1b///W+988471teqVaumfv366YMPPlBsbKzmz59fqLYBR5FcAACAG15GRoZSU1N14sQJ/fDDD5o+fbruu+8+de/eXX369LG7Ta9evZSTk6OnnnpK+/fv17p16/Taa69JUr5TqerUqaMLFy7o66+/1pkzZ3Tp0iW79SZNmqSlS5dq0qRJ2r9/v/bs2aNXXnnFbt169eopKytLb731lg4fPqz3339f8+bNs6kTFRWldevW6ciRI/rhhx+0YcMGNW7cWJI0ceJEffbZZzp06JD27t2rL774wvoaYDaSCwAAcMNbu3atAgMDVadOHd17773auHGj3nzzTX322Wdyc3Ozu02FChX0+eefKzExUS1bttT48eM1ceJESbK5DuNK4eHhGjx4sHr27Klq1arlmzB06NBBH330kVatWqWWLVvqrrvu0nfffWe3bsuWLTVz5kzNmDFDTZs21ZIlSxQTE2NTJzs7W0OHDlXjxo117733qmHDhtaLvT09PTV27Fg1b95cd955p9zc3LRs2bJCHTfAURbDrMmDAAAAN7glS5ZYn2XhyHUTwD8Ft6IFAADIx+LFi1W3bl3VqFFDP/74o55//nk9+uijJBZAPkguAAAA8pGamqqJEycqNTVVgYGBeuSRR/TSSy+5OiygxGJaFAAAAABTcEE3AAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAAAwBckFAAAAAFOQXAAAAAAwxf8D1HWwtgdou20AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# Your code here" + "# Compute predictions and true labels\n", + "y_pred = model.forward(X_test) # shape: (num_samples, num_classes)\n", + "y_true = one_hot(model.output_size, y_test) # shape: (num_samples, num_classes)\n", + "\n", + "# Clip predictions to avoid log(0)\n", + "y_pred = np.clip(y_pred, 1e-10, 1 - 1e-10)\n", + "\n", + "# Compute per-sample binary cross-entropy loss\n", + "sample_losses = -np.sum(y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred), axis=1)\n", + "\n", + "# Sort indices by descending loss\n", + "worst_indices = np.argsort(-sample_losses)\n", + "\n", + "# Visualize the top 5 worst predictions\n", + "for sample_idx in worst_indices[:5]:\n", + " print(f\"Sample #{sample_idx}, Loss: {sample_losses[sample_idx]:.4f}\")\n", + " plot_prediction(model, sample_idx=sample_idx)" ] }, { @@ -803,26 +1145,375 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": { "collapsed": false }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "🔍 Training with learning rate: 0.0001\n", + "Epoch 1 | Loss: 0.3472 | Train Acc: 0.179 | Test Acc: 0.159\n", + "Epoch 2 | Loss: 0.3200 | Train Acc: 0.231 | Test Acc: 0.189\n", + "Epoch 3 | Loss: 0.3116 | Train Acc: 0.397 | Test Acc: 0.363\n", + "Epoch 4 | Loss: 0.3024 | Train Acc: 0.563 | Test Acc: 0.581\n", + "Epoch 5 | Loss: 0.2911 | Train Acc: 0.696 | Test Acc: 0.674\n", + "Epoch 6 | Loss: 0.2779 | Train Acc: 0.754 | Test Acc: 0.744\n", + "Epoch 7 | Loss: 0.2655 | Train Acc: 0.779 | Test Acc: 0.756\n", + "Epoch 8 | Loss: 0.2536 | Train Acc: 0.792 | Test Acc: 0.785\n", + "Epoch 9 | Loss: 0.2421 | Train Acc: 0.804 | Test Acc: 0.796\n", + "Epoch 10 | Loss: 0.2312 | Train Acc: 0.812 | Test Acc: 0.811\n", + "Epoch 11 | Loss: 0.2208 | Train Acc: 0.822 | Test Acc: 0.819\n", + "Epoch 12 | Loss: 0.2111 | Train Acc: 0.834 | Test Acc: 0.822\n", + "Epoch 13 | Loss: 0.2020 | Train Acc: 0.850 | Test Acc: 0.830\n", + "Epoch 14 | Loss: 0.1935 | Train Acc: 0.859 | Test Acc: 0.841\n", + "Epoch 15 | Loss: 0.1855 | Train Acc: 0.867 | Test Acc: 0.859\n", + "\n", + "🔍 Training with learning rate: 0.001\n", + "Epoch 1 | Loss: 0.2366 | Train Acc: 0.716 | Test Acc: 0.700\n", + "Epoch 2 | Loss: 0.1567 | Train Acc: 0.874 | Test Acc: 0.863\n", + "Epoch 3 | Loss: 0.1126 | Train Acc: 0.929 | Test Acc: 0.907\n", + "Epoch 4 | Loss: 0.0855 | Train Acc: 0.950 | Test Acc: 0.926\n", + "Epoch 5 | Loss: 0.0686 | Train Acc: 0.964 | Test Acc: 0.933\n", + "Epoch 6 | Loss: 0.0574 | Train Acc: 0.971 | Test Acc: 0.944\n", + "Epoch 7 | Loss: 0.0497 | Train Acc: 0.974 | Test Acc: 0.952\n", + "Epoch 8 | Loss: 0.0440 | Train Acc: 0.978 | Test Acc: 0.956\n", + "Epoch 9 | Loss: 0.0396 | Train Acc: 0.981 | Test Acc: 0.956\n", + "Epoch 10 | Loss: 0.0361 | Train Acc: 0.982 | Test Acc: 0.959\n", + "Epoch 11 | Loss: 0.0331 | Train Acc: 0.982 | Test Acc: 0.959\n", + "Epoch 12 | Loss: 0.0307 | Train Acc: 0.983 | Test Acc: 0.959\n", + "Epoch 13 | Loss: 0.0285 | Train Acc: 0.985 | Test Acc: 0.959\n", + "Epoch 14 | Loss: 0.0267 | Train Acc: 0.985 | Test Acc: 0.959\n", + "Epoch 15 | Loss: 0.0251 | Train Acc: 0.985 | Test Acc: 0.959\n", + "\n", + "🔍 Training with learning rate: 0.01\n", + "Epoch 1 | Loss: 0.0884 | Train Acc: 0.868 | Test Acc: 0.881\n", + "Epoch 2 | Loss: 0.2144 | Train Acc: 0.557 | Test Acc: 0.533\n", + "Epoch 3 | Loss: 0.3571 | Train Acc: 0.391 | Test Acc: 0.415\n", + "Epoch 4 | Loss: 0.8416 | Train Acc: 0.116 | Test Acc: 0.104\n", + "Epoch 5 | Loss: 2.1006 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 6 | Loss: 3.6890 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 7 | Loss: 3.7068 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 8 | Loss: 3.7078 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 9 | Loss: 3.7497 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 10 | Loss: 3.7945 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 11 | Loss: 3.7498 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 12 | Loss: 3.4907 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 13 | Loss: 3.4061 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 14 | Loss: 3.6337 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 15 | Loss: 3.7064 | Train Acc: 0.100 | Test Acc: 0.107\n", + "\n", + "🔍 Training with learning rate: 0.1\n", + "Epoch 1 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 2 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 3 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 4 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 5 | Loss: 2.4008 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 6 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 7 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 8 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 9 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 10 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 11 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 12 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 13 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 14 | Loss: 2.3056 | Train Acc: 0.100 | Test Acc: 0.107\n", + "Epoch 15 | Loss: 4.1437 | Train Acc: 0.100 | Test Acc: 0.107\n" + ] + } + ], + "source": [ + "# learning rate\n", + "\n", + "learning_rates = [0.0001, 0.001, 0.01, 0.1]\n", + "results = {}\n", + "\n", + "for lr in learning_rates:\n", + " print(f\"\\n🔍 Training with learning rate: {lr}\")\n", + " model = NeuralNet(input_size=64, hidden_size=32, output_size=10)\n", + " \n", + " losses, acc_train, acc_test = [], [], []\n", + " \n", + " # Initial evaluation before training\n", + " losses.append(model.loss(X_train, y_train))\n", + " acc_train.append(model.accuracy(X_train, y_train))\n", + " acc_test.append(model.accuracy(X_test, y_test))\n", + " \n", + " for epoch in range(15):\n", + " for x, y in zip(X_train, y_train):\n", + " model.train(x, y, learning_rate=lr)\n", + " \n", + " losses.append(model.loss(X_train, y_train))\n", + " acc_train.append(model.accuracy(X_train, y_train))\n", + " acc_test.append(model.accuracy(X_test, y_test))\n", + " \n", + " print(f\"Epoch {epoch+1:2d} | Loss: {losses[-1]:.4f} | Train Acc: {acc_train[-1]:.3f} | Test Acc: {acc_test[-1]:.3f}\")\n", + " \n", + " results[lr] = {\n", + " \"losses\": losses,\n", + " \"train_acc\": acc_train,\n", + " \"test_acc\": acc_test\n", + " }\n" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "🔍 Training with hidden size: 8\n", + "Epoch 1 | Loss: 0.3080 | Train Acc: 0.304 | Test Acc: 0.241\n", + "Epoch 2 | Loss: 0.2569 | Train Acc: 0.612 | Test Acc: 0.556\n", + "Epoch 3 | Loss: 0.2081 | Train Acc: 0.748 | Test Acc: 0.674\n", + "Epoch 4 | Loss: 0.1706 | Train Acc: 0.840 | Test Acc: 0.796\n", + "Epoch 5 | Loss: 0.1439 | Train Acc: 0.866 | Test Acc: 0.822\n", + "Epoch 6 | Loss: 0.1240 | Train Acc: 0.887 | Test Acc: 0.859\n", + "Epoch 7 | Loss: 0.1088 | Train Acc: 0.904 | Test Acc: 0.874\n", + "Epoch 8 | Loss: 0.0972 | Train Acc: 0.933 | Test Acc: 0.911\n", + "Epoch 9 | Loss: 0.0881 | Train Acc: 0.950 | Test Acc: 0.922\n", + "Epoch 10 | Loss: 0.0803 | Train Acc: 0.958 | Test Acc: 0.930\n", + "Epoch 11 | Loss: 0.0746 | Train Acc: 0.961 | Test Acc: 0.937\n", + "Epoch 12 | Loss: 0.0695 | Train Acc: 0.963 | Test Acc: 0.941\n", + "Epoch 13 | Loss: 0.0652 | Train Acc: 0.965 | Test Acc: 0.941\n", + "Epoch 14 | Loss: 0.0615 | Train Acc: 0.965 | Test Acc: 0.941\n", + "Epoch 15 | Loss: 0.0581 | Train Acc: 0.966 | Test Acc: 0.941\n", + "\n", + "🔍 Training with hidden size: 16\n", + "Epoch 1 | Loss: 0.2849 | Train Acc: 0.625 | Test Acc: 0.593\n", + "Epoch 2 | Loss: 0.2233 | Train Acc: 0.765 | Test Acc: 0.726\n", + "Epoch 3 | Loss: 0.1781 | Train Acc: 0.828 | Test Acc: 0.800\n", + "Epoch 4 | Loss: 0.1455 | Train Acc: 0.866 | Test Acc: 0.837\n", + "Epoch 5 | Loss: 0.1216 | Train Acc: 0.908 | Test Acc: 0.900\n", + "Epoch 6 | Loss: 0.1041 | Train Acc: 0.921 | Test Acc: 0.907\n", + "Epoch 7 | Loss: 0.0910 | Train Acc: 0.931 | Test Acc: 0.919\n", + "Epoch 8 | Loss: 0.0814 | Train Acc: 0.936 | Test Acc: 0.919\n", + "Epoch 9 | Loss: 0.0742 | Train Acc: 0.940 | Test Acc: 0.922\n", + "Epoch 10 | Loss: 0.0682 | Train Acc: 0.942 | Test Acc: 0.919\n", + "Epoch 11 | Loss: 0.0632 | Train Acc: 0.946 | Test Acc: 0.919\n", + "Epoch 12 | Loss: 0.0591 | Train Acc: 0.946 | Test Acc: 0.922\n", + "Epoch 13 | Loss: 0.0557 | Train Acc: 0.946 | Test Acc: 0.919\n", + "Epoch 14 | Loss: 0.0531 | Train Acc: 0.948 | Test Acc: 0.915\n", + "Epoch 15 | Loss: 0.0511 | Train Acc: 0.950 | Test Acc: 0.915\n", + "\n", + "🔍 Training with hidden size: 32\n", + "Epoch 1 | Loss: 0.2340 | Train Acc: 0.749 | Test Acc: 0.689\n", + "Epoch 2 | Loss: 0.1516 | Train Acc: 0.894 | Test Acc: 0.885\n", + "Epoch 3 | Loss: 0.1061 | Train Acc: 0.936 | Test Acc: 0.915\n", + "Epoch 4 | Loss: 0.0811 | Train Acc: 0.957 | Test Acc: 0.933\n", + "Epoch 5 | Loss: 0.0659 | Train Acc: 0.965 | Test Acc: 0.941\n", + "Epoch 6 | Loss: 0.0560 | Train Acc: 0.970 | Test Acc: 0.944\n", + "Epoch 7 | Loss: 0.0491 | Train Acc: 0.972 | Test Acc: 0.944\n", + "Epoch 8 | Loss: 0.0437 | Train Acc: 0.974 | Test Acc: 0.948\n", + "Epoch 9 | Loss: 0.0394 | Train Acc: 0.978 | Test Acc: 0.948\n", + "Epoch 10 | Loss: 0.0359 | Train Acc: 0.981 | Test Acc: 0.956\n", + "Epoch 11 | Loss: 0.0331 | Train Acc: 0.983 | Test Acc: 0.956\n", + "Epoch 12 | Loss: 0.0307 | Train Acc: 0.984 | Test Acc: 0.956\n", + "Epoch 13 | Loss: 0.0286 | Train Acc: 0.984 | Test Acc: 0.956\n", + "Epoch 14 | Loss: 0.0268 | Train Acc: 0.986 | Test Acc: 0.959\n", + "Epoch 15 | Loss: 0.0253 | Train Acc: 0.986 | Test Acc: 0.963\n", + "\n", + "🔍 Training with hidden size: 64\n", + "Epoch 1 | Loss: 0.1802 | Train Acc: 0.844 | Test Acc: 0.811\n", + "Epoch 2 | Loss: 0.1128 | Train Acc: 0.914 | Test Acc: 0.904\n", + "Epoch 3 | Loss: 0.0806 | Train Acc: 0.944 | Test Acc: 0.926\n", + "Epoch 4 | Loss: 0.0629 | Train Acc: 0.960 | Test Acc: 0.948\n", + "Epoch 5 | Loss: 0.0520 | Train Acc: 0.968 | Test Acc: 0.952\n", + "Epoch 6 | Loss: 0.0446 | Train Acc: 0.973 | Test Acc: 0.959\n", + "Epoch 7 | Loss: 0.0393 | Train Acc: 0.976 | Test Acc: 0.959\n", + "Epoch 8 | Loss: 0.0352 | Train Acc: 0.977 | Test Acc: 0.959\n", + "Epoch 9 | Loss: 0.0320 | Train Acc: 0.980 | Test Acc: 0.963\n", + "Epoch 10 | Loss: 0.0293 | Train Acc: 0.982 | Test Acc: 0.967\n", + "Epoch 11 | Loss: 0.0271 | Train Acc: 0.983 | Test Acc: 0.970\n", + "Epoch 12 | Loss: 0.0253 | Train Acc: 0.986 | Test Acc: 0.970\n", + "Epoch 13 | Loss: 0.0237 | Train Acc: 0.988 | Test Acc: 0.970\n", + "Epoch 14 | Loss: 0.0223 | Train Acc: 0.990 | Test Acc: 0.970\n", + "Epoch 15 | Loss: 0.0211 | Train Acc: 0.991 | Test Acc: 0.970\n", + "\n", + "🔍 Training with hidden size: 128\n", + "Epoch 1 | Loss: 0.1286 | Train Acc: 0.893 | Test Acc: 0.885\n", + "Epoch 2 | Loss: 0.0804 | Train Acc: 0.938 | Test Acc: 0.933\n", + "Epoch 3 | Loss: 0.0598 | Train Acc: 0.954 | Test Acc: 0.944\n", + "Epoch 4 | Loss: 0.0485 | Train Acc: 0.965 | Test Acc: 0.956\n", + "Epoch 5 | Loss: 0.0413 | Train Acc: 0.972 | Test Acc: 0.959\n", + "Epoch 6 | Loss: 0.0363 | Train Acc: 0.976 | Test Acc: 0.963\n", + "Epoch 7 | Loss: 0.0325 | Train Acc: 0.980 | Test Acc: 0.963\n", + "Epoch 8 | Loss: 0.0295 | Train Acc: 0.981 | Test Acc: 0.963\n", + "Epoch 9 | Loss: 0.0271 | Train Acc: 0.984 | Test Acc: 0.963\n", + "Epoch 10 | Loss: 0.0251 | Train Acc: 0.986 | Test Acc: 0.967\n", + "Epoch 11 | Loss: 0.0234 | Train Acc: 0.987 | Test Acc: 0.963\n", + "Epoch 12 | Loss: 0.0219 | Train Acc: 0.988 | Test Acc: 0.963\n", + "Epoch 13 | Loss: 0.0206 | Train Acc: 0.989 | Test Acc: 0.967\n", + "Epoch 14 | Loss: 0.0194 | Train Acc: 0.989 | Test Acc: 0.970\n", + "Epoch 15 | Loss: 0.0184 | Train Acc: 0.990 | Test Acc: 0.970\n" + ] + } + ], + "source": [ + "# size of hidden layer\n", + "\n", + "hidden_sizes = [8, 16, 32, 64, 128]\n", + "results = {}\n", + "\n", + "for h_size in hidden_sizes:\n", + " print(f\"\\n🔍 Training with hidden size: {h_size}\")\n", + " model = NeuralNet(input_size=64, hidden_size=h_size, output_size=10)\n", + " \n", + " losses, acc_train, acc_test = [], [], []\n", + " \n", + " # Initial evaluation before training\n", + " losses.append(model.loss(X_train, y_train))\n", + " acc_train.append(model.accuracy(X_train, y_train))\n", + " acc_test.append(model.accuracy(X_test, y_test))\n", + " \n", + " for epoch in range(15):\n", + " for x, y in zip(X_train, y_train):\n", + " model.train(x, y, learning_rate=0.001)\n", + " \n", + " losses.append(model.loss(X_train, y_train))\n", + " acc_train.append(model.accuracy(X_train, y_train))\n", + " acc_test.append(model.accuracy(X_test, y_test))\n", + " \n", + " print(f\"Epoch {epoch+1:2d} | Loss: {losses[-1]:.4f} | Train Acc: {acc_train[-1]:.3f} | Test Acc: {acc_test[-1]:.3f}\")\n", + " \n", + " results[h_size] = {\n", + " \"losses\": losses,\n", + " \"train_acc\": acc_train,\n", + " \"test_acc\": acc_test\n", + " }\n" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + "class NeuralNet1():\n", + " \"\"\"MLP with 2 hidden layers with a sigmoid activation\"\"\"\n", + "\n", + " def __init__(self, input_size, hidden_size1, hidden_size2, output_size):\n", + " self.W_h1 = np.random.uniform(low=-0.01, high=0.01, size=(input_size, hidden_size1))\n", + " self.b_h1 = np.zeros(hidden_size1)\n", + "\n", + " self.W_h2 = np.random.uniform(low=-0.01, high=0.01, size=(hidden_size1, hidden_size2))\n", + " self.b_h2 = np.zeros(hidden_size2)\n", + "\n", + " self.W_o = np.random.uniform(low=-0.01, high=0.01, size=(hidden_size2, output_size))\n", + " self.b_o = np.zeros(output_size)\n", + "\n", + " self.input_size = input_size\n", + " self.hidden_size1 = hidden_size1\n", + " self.hidden_size2 = hidden_size2\n", + " self.output_size = output_size\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [], + "source": [ + "# Modify forward_hidden to include both layers\n", + "\n", + "def forward_hidden(self, X):\n", + " self.Z_h1 = np.dot(X, self.W_h1) + self.b_h1\n", + " self.H1 = sigmoid(self.Z_h1)\n", + "\n", + " self.Z_h2 = np.dot(self.H1, self.W_h2) + self.b_h2\n", + " self.H2 = sigmoid(self.Z_h2)\n", + "\n", + " return self.H2\n" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "# forward_output remains the same\n", + "\n", + "def forward_output(self, H):\n", + " self.Z_o = np.dot(H, self.W_o) + self.b_o\n", + " return sigmoid(self.Z_o)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "# update grad_loss for backpropagation through both hidden layers\n", + "\n", + "def grad_loss(self, X, y_true):\n", + " y_true = one_hot(self.output_size, y_true)\n", + " y_pred = self.forward(X)\n", + "\n", + " error_o = y_pred - y_true\n", + " grad_W_o = np.dot(self.H2.T, error_o)\n", + " grad_b_o = np.sum(error_o, axis=0)\n", + "\n", + " error_h2 = np.dot(error_o, self.W_o.T) * dsigmoid(self.Z_h2)\n", + " grad_W_h2 = np.dot(self.H1.T, error_h2)\n", + " grad_b_h2 = np.sum(error_h2, axis=0)\n", + "\n", + " error_h1 = np.dot(error_h2, self.W_h2.T) * dsigmoid(self.Z_h1)\n", + " grad_W_h1 = np.dot(X.T, error_h1)\n", + " grad_b_h1 = np.sum(error_h1, axis=0)\n", + "\n", + " return {\n", + " \"W_h1\": grad_W_h1, \"b_h1\": grad_b_h1,\n", + " \"W_h2\": grad_W_h2, \"b_h2\": grad_b_h2,\n", + " \"W_o\": grad_W_o, \"b_o\": grad_b_o\n", + " }\n" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, "outputs": [], "source": [ - "# Your code here" + "# update train() to apply all gradients\n", + "\n", + "def train(self, x, y, learning_rate):\n", + " x = x[np.newaxis, :]\n", + " grads = self.grad_loss(x, y)\n", + "\n", + " self.W_h1 -= learning_rate * grads[\"W_h1\"]\n", + " self.b_h1 -= learning_rate * grads[\"b_h1\"]\n", + " self.W_h2 -= learning_rate * grads[\"W_h2\"]\n", + " self.b_h2 -= learning_rate * grads[\"b_h2\"]\n", + " self.W_o -= learning_rate * grads[\"W_o\"]\n", + " self.b_o -= learning_rate * grads[\"b_o\"]\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 59, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# update instantiation\n", + "\n", + "model = NeuralNet1(input_size=64, hidden_size1=32, hidden_size2=16, output_size=10)\n" + ] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -836,7 +1527,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.12" + "version": "3.13.5" } }, "nbformat": 4, diff --git a/01_materials/labs/lab_3.ipynb b/01_materials/labs/lab_3.ipynb index 7ac8da00..33e271af 100644 --- a/01_materials/labs/lab_3.ipynb +++ b/01_materials/labs/lab_3.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -52,9 +52,141 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "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", + "
user_iditem_idratingtimestamp
01962423881250949
11863023891717742
2223771878887116
3244512880606923
41663461886397596
...............
999958804763880175444
999967162045879795543
9999727610901874795795
99998132252882399156
99999122033879959583
\n", + "

100000 rows × 4 columns

\n", + "
" + ], + "text/plain": [ + " user_id item_id rating timestamp\n", + "0 196 242 3 881250949\n", + "1 186 302 3 891717742\n", + "2 22 377 1 878887116\n", + "3 244 51 2 880606923\n", + "4 166 346 1 886397596\n", + "... ... ... ... ...\n", + "99995 880 476 3 880175444\n", + "99996 716 204 5 879795543\n", + "99997 276 1090 1 874795795\n", + "99998 13 225 2 882399156\n", + "99999 12 203 3 879959583\n", + "\n", + "[100000 rows x 4 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "import pandas as pd\n", "\n", @@ -76,9 +208,166 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, - "outputs": [], + "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", + "
item_idtitlerelease_datevideo_release_dateimdb_url
01Toy Story (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...
12GoldenEye (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?GoldenEye%20(...
23Four Rooms (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Four%20Rooms%...
34Get Shorty (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Get%20Shorty%...
45Copycat (1995)01-Jan-1995NaNhttp://us.imdb.com/M/title-exact?Copycat%20(1995)
..................
16771678Mat' i syn (1997)06-Feb-1998NaNhttp://us.imdb.com/M/title-exact?Mat%27+i+syn+...
16781679B. Monkey (1998)06-Feb-1998NaNhttp://us.imdb.com/M/title-exact?B%2E+Monkey+(...
16791680Sliding Doors (1998)01-Jan-1998NaNhttp://us.imdb.com/Title?Sliding+Doors+(1998)
16801681You So Crazy (1994)01-Jan-1994NaNhttp://us.imdb.com/M/title-exact?You%20So%20Cr...
16811682Scream of Stone (Schrei aus Stein) (1991)08-Mar-1996NaNhttp://us.imdb.com/M/title-exact?Schrei%20aus%...
\n", + "

1682 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " item_id title release_date \\\n", + "0 1 Toy Story (1995) 01-Jan-1995 \n", + "1 2 GoldenEye (1995) 01-Jan-1995 \n", + "2 3 Four Rooms (1995) 01-Jan-1995 \n", + "3 4 Get Shorty (1995) 01-Jan-1995 \n", + "4 5 Copycat (1995) 01-Jan-1995 \n", + "... ... ... ... \n", + "1677 1678 Mat' i syn (1997) 06-Feb-1998 \n", + "1678 1679 B. Monkey (1998) 06-Feb-1998 \n", + "1679 1680 Sliding Doors (1998) 01-Jan-1998 \n", + "1680 1681 You So Crazy (1994) 01-Jan-1994 \n", + "1681 1682 Scream of Stone (Schrei aus Stein) (1991) 08-Mar-1996 \n", + "\n", + " video_release_date imdb_url \n", + "0 NaN http://us.imdb.com/M/title-exact?Toy%20Story%2... \n", + "1 NaN http://us.imdb.com/M/title-exact?GoldenEye%20(... \n", + "2 NaN http://us.imdb.com/M/title-exact?Four%20Rooms%... \n", + "3 NaN http://us.imdb.com/M/title-exact?Get%20Shorty%... \n", + "4 NaN http://us.imdb.com/M/title-exact?Copycat%20(1995) \n", + "... ... ... \n", + "1677 NaN http://us.imdb.com/M/title-exact?Mat%27+i+syn+... \n", + "1678 NaN http://us.imdb.com/M/title-exact?B%2E+Monkey+(... \n", + "1679 NaN http://us.imdb.com/Title?Sliding+Doors+(1998) \n", + "1680 NaN http://us.imdb.com/M/title-exact?You%20So%20Cr... \n", + "1681 NaN http://us.imdb.com/M/title-exact?Schrei%20aus%... \n", + "\n", + "[1682 rows x 5 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "columns_to_keep = ['item_id', 'title', 'release_date', 'video_release_date', 'imdb_url']\n", "items = pd.read_csv(ML_100K_FOLDER / \"u.item\", sep='|', names=columns_to_keep,\n", @@ -97,7 +386,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -114,7 +403,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -123,9 +412,134 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "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", + "
item_idtitlerelease_datevideo_release_dateimdb_urlrelease_yearuser_idratingtimestamp
01Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.03084887736532
11Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.02875875334088
21Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.01484877019411
31Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.02804891700426
41Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.0663883601324
\n", + "
" + ], + "text/plain": [ + " item_id title release_date video_release_date \\\n", + "0 1 Toy Story (1995) 1995-01-01 NaN \n", + "1 1 Toy Story (1995) 1995-01-01 NaN \n", + "2 1 Toy Story (1995) 1995-01-01 NaN \n", + "3 1 Toy Story (1995) 1995-01-01 NaN \n", + "4 1 Toy Story (1995) 1995-01-01 NaN \n", + "\n", + " imdb_url release_year user_id \\\n", + "0 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 308 \n", + "1 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 287 \n", + "2 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 148 \n", + "3 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 280 \n", + "4 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 66 \n", + "\n", + " rating timestamp \n", + "0 4 887736532 \n", + "1 5 875334088 \n", + "2 4 877019411 \n", + "3 4 891700426 \n", + "4 3 883601324 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings.head()" ] @@ -141,9 +555,151 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, - "outputs": [], + "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", + "
item_idrelease_datevideo_release_daterelease_yearuser_idratingtimestamp
count100000.000000999910.099991.000000100000.00000100000.0000001.000000e+05
mean425.5301301988-02-09 00:43:11.369223296NaN1987.956216462.484753.5298608.835289e+08
min1.0000001922-01-01 00:00:00NaN1922.0000001.000001.0000008.747247e+08
25%175.0000001986-01-01 00:00:00NaN1986.000000254.000003.0000008.794487e+08
50%322.0000001994-01-01 00:00:00NaN1994.000000447.000004.0000008.828269e+08
75%631.0000001996-09-28 00:00:00NaN1996.000000682.000004.0000008.882600e+08
max1682.0000001998-10-23 00:00:00NaN1998.000000943.000005.0000008.932866e+08
std330.798356NaNNaN14.155523266.614421.1256745.343856e+06
\n", + "
" + ], + "text/plain": [ + " item_id release_date video_release_date \\\n", + "count 100000.000000 99991 0.0 \n", + "mean 425.530130 1988-02-09 00:43:11.369223296 NaN \n", + "min 1.000000 1922-01-01 00:00:00 NaN \n", + "25% 175.000000 1986-01-01 00:00:00 NaN \n", + "50% 322.000000 1994-01-01 00:00:00 NaN \n", + "75% 631.000000 1996-09-28 00:00:00 NaN \n", + "max 1682.000000 1998-10-23 00:00:00 NaN \n", + "std 330.798356 NaN NaN \n", + "\n", + " release_year user_id rating timestamp \n", + "count 99991.000000 100000.00000 100000.000000 1.000000e+05 \n", + "mean 1987.956216 462.48475 3.529860 8.835289e+08 \n", + "min 1922.000000 1.00000 1.000000 8.747247e+08 \n", + "25% 1986.000000 254.00000 3.000000 8.794487e+08 \n", + "50% 1994.000000 447.00000 4.000000 8.828269e+08 \n", + "75% 1996.000000 682.00000 4.000000 8.882600e+08 \n", + "max 1998.000000 943.00000 5.000000 8.932866e+08 \n", + "std 14.155523 266.61442 1.125674 5.343856e+06 " + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings.describe()" ] @@ -157,7 +713,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -167,36 +723,240 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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qj4BAABC4rzCz+7duzVv3jwNHjxYpaWlKioq0scff6w333xTR48e1U9+8pNQ9QkAABASkcG8qbS0VBs2bND+/ft16623avPmzbr11lt10UXfZKm0tDQ999xzuuqqq0LaLAAAwPkKKvysWbNGs2bN0n333Se3233KmksvvVTr168/r+YAAABCLajwc+DAgTPWREdHa+bMmcF8PAAAQI8J6pyfDRs26Pe//3238d///vfatGnTeTcFAADQU4IKP8uWLVNycnK38UGDBqm4uPi8mwIAAOgpQYWfQ4cOKS0trdv40KFDdfjw4fNuCgAAoKcEFX4GDRqkDz74oNv4+++/r6SkpPNuCgAAoKcEFX7uuusuPfTQQ9q+fbs6OzvV2dmpN998UwsWLNBdd90V6h4BAABCJqirvZ544gkdOnRIOTk5ioz85iO6uro0Y8YMzvkBAAB9WlDhJzo6Wr/97W/17//+73r//fcVExOjzMxMDR06NNT9AQAAhFRQ4eeEK664QldccUWoegEAAOhxQYWfzs5Obdy4UX/605/U2Niorq6ugP1vvvlmSJoDAAAItaDCz4IFC7Rx40ZNnDhRGRkZcjgcoe4LAACgRwQVfsrKyvS73/1Ot956a6j7AQAA6FFBXeoeHR2tyy+/PNS9AAAA9Ligwk9hYaGefvppGWNC3Q8AAECPCupnrx07dmj79u167bXXNGLECEVFRQXsf/nll0PSHAAAQKgFFX4uueQS3XHHHaHuBQAAoMcFFX42bNgQ6j4AAAB6RVDn/EjS119/rW3btum5555TS0uLJOnYsWNqbW0NWXMAAAChFtTKz6FDh/TP//zPOnz4sPx+v/Ly8hQfH6/ly5frq6++0rPPPhvqPgEAAEIiqJWfBQsWaNSoUWpqalJMTIw1fscdd+hPf/pTUI2UlJTI4XCooKDAGjPGaOnSpfJ4PIqJidG4ceNUW1sb8D6/36/58+crOTlZcXFxmjx5surr64PqAQAAXPiCCj87duzQv/3bvyk6OjpgfOjQoTp69Og5f96uXbu0du1aXXPNNQHjy5cvV2lpqVavXq1du3bJ7XYrLy/P+plNkgoKClReXq6ysjLt2LFDra2tmjRpkjo7O4M5NAAAcIELKvx0dXWdMlzU19crPj7+nD6rtbVVd999t9atW6cBAwZY48YYrVq1So8++qimTJmijIwM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rf3M2akdPXpU99xzj5KSkhQbG6sf/OAHqq6utvb32rwZhFxZWZmJiooy69atMx9++KFZsGCBiYuLM4cOHQp3a2Hx6quvmkcffdS89NJLRpIpLy8P2L9s2TITHx9vXnrpJbNv3z4zbdo0M3jwYNPc3GzVzJ071/zTP/2TqaysNHv27DE333yzufbaa83XX3/dy0fTO8aPH282bNhgampqzN69e83EiRPNpZdealpbW60a5q27rVu3mldeecXs37/f7N+/3zzyyCMmKirK1NTUGGOYszN59913zbBhw8w111xjFixYYI0zb9099thjZsSIEaahocHaGhsbrf3MWXeff/65GTp0qLn33nvN//7v/5q6ujqzbds287e//c2q6a15I/z0gB/+8Idm7ty5AWNXXXWVWbx4cZg66jtODj9dXV3G7XabZcuWWWNfffWVcblc5tlnnzXGGPPFF1+YqKgoU1ZWZtUcPXrUXHTRReb111/vtd7DqbGx0UgyVVVVxhjm7VwMGDDA/OY3v2HOzqClpcWkp6ebyspKM3bsWCv8MG+n9thjj5lrr732lPuYs1N7+OGHzY033nja/b05b/zsFWLt7e2qrq5Wfn5+wHh+fr527twZpq76rrq6Onm93oD5cjqdGjt2rDVf1dXV6ujoCKjxeDzKyMiwzZz6fD5JUmJioiTm7Wx0dnaqrKxMx48f15gxY5izM3jggQc0ceJE5ebmBowzb6d34MABeTwepaWl6a677tLBgwclMWens3XrVo0aNUp33nmnBg0apJEjR2rdunXW/t6cN8JPiH366afq7Ozs9lDVlJSUbg9fhaw5+a758nq9io6O1oABA05bcyEzxmjhwoW68cYblZGRIYl5+y779u3T9773PTmdTs2dO1fl5eUaPnw4c/YdysrKtGfPHpWUlHTbx7yd2ujRo7V582a98cYbWrdunbxer7Kzs/XZZ58xZ6dx8OBBrVmzRunp6XrjjTc0d+5cPfTQQ9q8ebOk3v23dkE83qIvcjgcAa+NMd3G8P8FM192mdMHH3xQH3zwgXbs2NFtH/PW3ZVXXqm9e/fqiy++0EsvvaSZM2eqqqrK2s+cBTpy5IgWLFigiooKXXzxxaetY94CTZgwwfrPmZmZGjNmjC677DJt2rRJP/rRjyQxZyfr6urSqFGjVFxcLEkaOXKkamtrtWbNGs2YMcOq6415Y+UnxJKTkxUREdEtgTY2NnZLs5B1dcR3zZfb7VZ7e7uamppOW3Ohmj9/vrZu3art27dryJAh1jjzdnrR0dG6/PLLNWrUKJWUlOjaa6/V008/zZydRnV1tRobG5WVlaXIyEhFRkaqqqpKv/rVrxQZGWkdN/P23eLi4pSZmakDBw7wb+00Bg8erOHDhweMXX311Tp8+LCk3v3fNcJPiEVHRysrK0uVlZUB45WVlcrOzg5TV31XWlqa3G53wHy1t7erqqrKmq+srCxFRUUF1DQ0NKimpuaCnVNjjB588EG9/PLLevPNN5WWlhawn3k7e8YY+f1+5uw0cnJytG/fPu3du9faRo0apbvvvlt79+7V97//febtLPj9fv31r3/V4MGD+bd2GjfccEO3W3Z89NFH1kPIe3XezvrUaJy1E5e6r1+/3nz44YemoKDAxMXFmU8++STcrYVFS0uLee+998x7771nJJnS0lLz3nvvWZf+L1u2zLhcLvPyyy+bffv2mZ/+9KenvLRxyJAhZtu2bWbPnj3mlltuuaAvCb3//vuNy+Uyb731VsCltF9++aVVw7x1t2TJEvP222+buro688EHH5hHHnnEXHTRRaaiosIYw5ydrW9f7WUM83YqhYWF5q233jIHDx4077zzjpk0aZKJj4+3/neeOevu3XffNZGRkeY//uM/zIEDB8x//ud/mtjYWLNlyxarprfmjfDTQ37961+boUOHmujoaHPddddZlyjb0fbt242kbtvMmTONMd9c3vjYY48Zt9ttnE6nuemmm8y+ffsCPqOtrc08+OCDJjEx0cTExJhJkyaZw4cPh+Foesep5kuS2bBhg1XDvHU3a9Ys6793AwcONDk5OVbwMYY5O1snhx/mrbsT95+JiooyHo/HTJkyxdTW1lr7mbNT++///m+TkZFhnE6nueqqq8zatWsD9vfWvDmMMeYcV64AAAD6Lc75AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtkL4AQAAtvL/ALhIJWrMmI6bAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "items['popularity'].plot.hist(bins=30);" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "np.int64(141)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "(items['popularity'] == 1).sum() # Number of movies with only one rating" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 11, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "49 Star Wars (1977)\n", + "257 Contact (1997)\n", + "99 Fargo (1996)\n", + "180 Return of the Jedi (1983)\n", + "293 Liar Liar (1997)\n", + "285 English Patient, The (1996)\n", + "287 Scream (1996)\n", + "0 Toy Story (1995)\n", + "299 Air Force One (1997)\n", + "120 Independence Day (ID4) (1996)\n", + "Name: title, dtype: object" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "items.nlargest(10, 'popularity')['title'] # Get the 10 most popular movies" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 12, "metadata": {}, - "outputs": [], + "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", + "
item_idpopularityrelease_datevideo_release_daterelease_yearuser_idratingtimestamp
count100000.000000100000.000000999910.099991.000000100000.00000100000.0000001.000000e+05
mean425.530130168.0719001988-02-09 00:43:11.369223296NaN1987.956216462.484753.5298608.835289e+08
min1.0000001.0000001922-01-01 00:00:00NaN1922.0000001.000001.0000008.747247e+08
25%175.00000071.0000001986-01-01 00:00:00NaN1986.000000254.000003.0000008.794487e+08
50%322.000000145.0000001994-01-01 00:00:00NaN1994.000000447.000004.0000008.828269e+08
75%631.000000239.0000001996-09-28 00:00:00NaN1996.000000682.000004.0000008.882600e+08
max1682.000000583.0000001998-10-23 00:00:00NaN1998.000000943.000005.0000008.932866e+08
std330.798356121.784558NaNNaN14.155523266.614421.1256745.343856e+06
\n", + "
" + ], + "text/plain": [ + " item_id popularity release_date \\\n", + "count 100000.000000 100000.000000 99991 \n", + "mean 425.530130 168.071900 1988-02-09 00:43:11.369223296 \n", + "min 1.000000 1.000000 1922-01-01 00:00:00 \n", + "25% 175.000000 71.000000 1986-01-01 00:00:00 \n", + "50% 322.000000 145.000000 1994-01-01 00:00:00 \n", + "75% 631.000000 239.000000 1996-09-28 00:00:00 \n", + "max 1682.000000 583.000000 1998-10-23 00:00:00 \n", + "std 330.798356 121.784558 NaN \n", + "\n", + " video_release_date release_year user_id rating \\\n", + "count 0.0 99991.000000 100000.00000 100000.000000 \n", + "mean NaN 1987.956216 462.48475 3.529860 \n", + "min NaN 1922.000000 1.00000 1.000000 \n", + "25% NaN 1986.000000 254.00000 3.000000 \n", + "50% NaN 1994.000000 447.00000 4.000000 \n", + "75% NaN 1996.000000 682.00000 4.000000 \n", + "max NaN 1998.000000 943.00000 5.000000 \n", + "std NaN 14.155523 266.61442 1.125674 \n", + "\n", + " timestamp \n", + "count 1.000000e+05 \n", + "mean 8.835289e+08 \n", + "min 8.747247e+08 \n", + "25% 8.794487e+08 \n", + "50% 8.828269e+08 \n", + "75% 8.882600e+08 \n", + "max 8.932866e+08 \n", + "std 5.343856e+06 " + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings = pd.merge(popularity, all_ratings)\n", "all_ratings.describe()" @@ -204,7 +964,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -215,9 +975,140 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, - "outputs": [], + "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", + "
item_idpopularitytitlerelease_datevideo_release_dateimdb_urlrelease_yearuser_idratingtimestamp
01452Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.03084887736532
11452Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.02875875334088
21452Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.01484877019411
31452Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.02804891700426
41452Toy Story (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Toy%20Story%2...1995.0663883601324
\n", + "
" + ], + "text/plain": [ + " item_id popularity title release_date video_release_date \\\n", + "0 1 452 Toy Story (1995) 1995-01-01 NaN \n", + "1 1 452 Toy Story (1995) 1995-01-01 NaN \n", + "2 1 452 Toy Story (1995) 1995-01-01 NaN \n", + "3 1 452 Toy Story (1995) 1995-01-01 NaN \n", + "4 1 452 Toy Story (1995) 1995-01-01 NaN \n", + "\n", + " imdb_url release_year user_id \\\n", + "0 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 308 \n", + "1 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 287 \n", + "2 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 148 \n", + "3 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 280 \n", + "4 http://us.imdb.com/M/title-exact?Toy%20Story%2... 1995.0 66 \n", + "\n", + " rating timestamp \n", + "0 4 887736532 \n", + "1 5 875334088 \n", + "2 4 877019411 \n", + "3 4 891700426 \n", + "4 3 883601324 " + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "all_ratings.head()" ] @@ -241,9 +1132,32 @@ "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "title\n", + "Aiqing wansui (1994) 5.0\n", + "Entertaining Angels: The Dorothy Day Story (1996) 5.0\n", + "Santa with Muscles (1996) 5.0\n", + "Prefontaine (1997) 5.0\n", + "They Made Me a Criminal (1939) 5.0\n", + " ... \n", + "Pharaoh's Army (1995) 1.0\n", + "August (1996) 1.0\n", + "Babyfever (1994) 1.0\n", + "Amityville: A New Generation (1993) 1.0\n", + "Woman in Question, The (1950) 1.0\n", + "Name: rating, Length: 1664, dtype: float64" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "raise NotImplementedError(\"Please calculate the average rating for each movie\")" + "all_ratings.groupby('title')['rating'].mean().sort_values(ascending=False)" ] }, { @@ -255,7 +1169,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -295,7 +1209,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": {}, "outputs": [], "source": [ @@ -306,7 +1220,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 20, "metadata": {}, "outputs": [], "source": [ @@ -353,9 +1267,38 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m9s\u001b[0m 6ms/step - loss: 2.6135 - val_loss: 1.0370\n", + "Epoch 2/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 7ms/step - loss: 0.8472 - val_loss: 0.7965\n", + "Epoch 3/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 7ms/step - loss: 0.7538 - val_loss: 0.7655\n", + "Epoch 4/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 7ms/step - loss: 0.7265 - val_loss: 0.7552\n", + "Epoch 5/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 7ms/step - loss: 0.7048 - val_loss: 0.7487\n", + "Epoch 6/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 7ms/step - loss: 0.6857 - val_loss: 0.7420\n", + "Epoch 7/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 8ms/step - loss: 0.6663 - val_loss: 0.7428\n", + "Epoch 8/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 8ms/step - loss: 0.6459 - val_loss: 0.7405\n", + "Epoch 9/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 8ms/step - loss: 0.6234 - val_loss: 0.7423\n", + "Epoch 10/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 8ms/step - loss: 0.5999 - val_loss: 0.7445\n", + "CPU times: total: 1min 45s\n", + "Wall time: 1min 41s\n" + ] + } + ], "source": [ "%%time\n", "\n", @@ -367,9 +1310,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "plt.plot(history.history['loss'], label='train')\n", "plt.plot(history.history['val_loss'], label='validation')\n", @@ -394,7 +1348,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 23, "metadata": {}, "outputs": [], "source": [ @@ -409,9 +1363,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 24, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 4ms/step\n", + "Final test MSE: 0.905\n", + "Final test MAE: 0.735\n" + ] + }, + { + "data": { + "image/png": "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2972Nt71rndF1mwlV199NTfffDMPfvCDh+estXz2s5/lHe94B2VZopSKqOFdMzU1xamnnsp1110XW5WDcswxxxyw+jv55JP58Ic/PNLP2VQGYLOUl87znAc/+MF88pOf5Jd+6ZeG5z/5yU/ypCc9KaJmmwPvPS9+8Yv56Ec/yqc//WlOOOGE2CqtCe/9ipan48JjH/vYAyJonvvc53LSSSfxqle9auwHfwjtZL/5zW/yyEc+MrYqB+XhD3/4AaHL3/72tzn++ONH+jmbygCMwriXlz7vvPP4tV/7NU4//XTOOOMMLrnkEm644QbOOeec2KodwMLCAt/5zneGx9dffz3XXHMNO3bs4D73uU9EzQ7Oueeeywc+8AH+4R/+gZmZmeFKa25ujna7HVm7g/M7v/M7nHXWWezatYt9+/bxwQ9+kE9/+tN8/OMfj63aAczMzBywnzI1NcXOnTvHdp/lFa94BU984hO5z33uw80338wb3/hG5ufnOfvss2OrdlB++7d/mzPPPJM3v/nNPO1pT+PLX/4yl1xyCZdccsloP+huxxFNKGeffbYHDnh96lOfiq3akD/7sz/zxx9/vM/z3P/0T//02IYpfupTnzroZ3n22WfHVu2gHExXwF966aWxVTskv/7rvz68F4488kj/2Mc+1v/Lv/xLbLVWzbiHgT796U/3xxxzjM+yzB977LH+KU95iv/6178eW63D8o//+I/+lFNO8UVR+JNOOslfcsklI/+MVA46kUgktiibKgookUgkEqsnGYBEIpHYoiQDkEgkEluUZAASiURii5IMQCKRSGxRkgFIJBKJLUoyAIlEIrFFSQYgkUgktijJACQSY8x973tf3vrWt8ZWI7FJSQYgMfHcVQnw5zznObFVvEsuu+yyg7bzu/LKK/nN3/zNe16hxJZgyxaDS2webrrppuHXf/M3f8NrX/vaFZUS9y/wVtc1WZbdI7pVVUWe52v+/iOPPHIdtUkkVpJWAImJ5173utfwNTc3hxBieNzv99m2bRsf+tCHePSjH02r1eL9738/F154IQ984ANX/Jy3vvWtB/SLuPTSSzn55JNptVqcdNJJXHTRRYfV5dGPfjQvetGLOO+88zjiiCP4+Z//eQDe8pa3cOqppzI1NcWuXbt44QtfyMLCAgCf/vSnee5zn8vevXuHq5YLL7wQONAFJITgPe95D7/0S79Ep9Phfve7H5dffvkKHS6//HLud7/70W63+bmf+zne+973IoTgzjvvHPmzTWxukgFIbAle9apX8ZKXvIRvfvOb/MIv/MKqvufd7343F1xwAW9605v45je/yZvf/GZe85rX3GWXqPe+971orfnCF74wbNYipeTtb387//f//l/e+9738m//9m+88pWvBODMM8/krW99K7Ozs9x0003cdNNNvOIVrzjkz3/961/P0572NL72ta/xhCc8gWc961ncfvvtAHzve9/jl3/5l3nyk5/MNddcw2/91m9xwQUXrOr3TWxB1r1GaSIRkUsvvdTPzc0Nj6+//noP+Le+9a0r5F73utf5BzzgASvO/cmf/Ik//vjjh8e7du3yH/jAB1bIvOENb/BnnHHGIf//Rz3qUf6BD3zgXer5oQ99yO/cufOQeg84/vjj/Z/8yZ8MjwH/u7/7u8PjhYUFL4TwV1xxhffe+1e96lX+lFNOWfEzLrjgAg/4O+644y71Smwt0h5AYktw+umnjyR/yy23cOONN/Ibv/EbPP/5zx+eN8YwNzc38v/1qU99ije/+c184xvfYH5+HmMM/X6fxcVFpqamRtLttNNOG349NTXFzMwMN998MwDf+ta3eMhDHrJC/qEPfehIPz+xdUgGILEl2H+QlVLi92uFUdf18GvnHBDcQA972MNWyN1VS8P9/6/vf//7POEJT+Ccc87hDW94Azt27ODzn/88v/Ebv7Hi/1wt+29gCyGG+nrvEUKsuL7/75lIDEgGILElOfLII9mzZ8+KAXPQFhTg6KOP5rjjjuO73/0uz3rWs+7W/3XVVVdhjOGP//iPkTJsu33oQx9aIZPnOdbau/X/AJx00kn88z//8wH/fyJxMNImcGJL8uhHP5pbbrmFP/zDP+Q///M/+bM/+zOuuOKKFTIXXnghu3fv5m1vexvf/va3ufbaa7n00kt5y1veMtL/9eM//uMYY/jTP/1Tvvvd7/KXf/mXvPOd71whc9/73peFhQX+9V//lVtvvZVut7um3+u3fuu3+I//+A9e9apX8e1vf5sPfehDXHbZZQAHrAwSiWQAEluSk08+mYsuuog/+7M/4wEPeABf/vKXD4i8ed7znsd73vMeLrvsMk499VQe9ahHcdlll3HCCSeM9H898IEP5C1veQt/8Ad/wCmnnMJf/dVfsXv37hUyZ555Jueccw5Pf/rTOfLII/nDP/zDNf1eJ5xwAn/3d3/HRz7yEU477TQuvvjiYRRQURRr+pmJzUvqCZxIbHLe9KY38c53vpMbb7wxtiqJMSPtASQSm4yLLrqIhzzkIezcuZMvfOEL/M//+T950YteFFutxBiSDEAiscm47rrreOMb38jtt9/Ofe5zH17+8pdz/vnnx1YrMYYkF1AikUhsUdImcCKRSGxRkgFIJBKJLUoyAIlEIrFFSQYgkUgktijJACQSicQWJRmARCKR2KIkA5BIJBJblGQAEolEYovy/wGeAh5al+fkDgAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from sklearn.metrics import mean_squared_error\n", "from sklearn.metrics import mean_absolute_error\n", @@ -444,9 +1418,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[(944, 64), (1683, 64)]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# weights and shape\n", "weights = model.get_weights()\n", @@ -455,7 +1440,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 29, "metadata": {}, "outputs": [], "source": [ @@ -465,9 +1450,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Title for item_id=181: Return of the Jedi (1983)\n" + ] + } + ], "source": [ "item_id = 181\n", "print(f\"Title for item_id={item_id}: {indexed_items['title'][item_id]}\")" @@ -475,9 +1468,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Embedding vector for item_id=181\n", + "[ 0.36951938 0.48807755 -0.15053284 -0.29517955 -0.9324021 -0.21735534\n", + " -0.24711774 0.14513788 0.3333334 -0.09771164 0.0963711 0.46749935\n", + " -0.21486379 -0.18009342 0.07392092 -0.19611295 -0.36412558 -0.34141272\n", + " -0.45370063 0.4424588 -0.46003118 -0.45697728 0.22408932 0.40527564\n", + " -0.48618525 0.25289592 0.23337291 -0.30211323 0.25138324 -0.15800825\n", + " -0.30613792 0.03818596 0.2229792 -0.48871827 0.37421823 0.26593903\n", + " -0.41474393 -0.35979164 -0.0285097 0.20486802 0.25297838 -0.13039255\n", + " -0.23035863 -0.6818329 0.28859106 -0.34731805 0.30705157 0.25173467\n", + " 0.07506214 0.4962492 0.09117112 0.36984918 -0.5199749 0.23432763\n", + " 0.04477105 0.45452845 -0.24217977 -0.38579294 -0.17358927 -0.472369\n", + " -0.12886481 -0.201772 -0.37889817 -0.04519882]\n", + "shape: (64,)\n" + ] + } + ], "source": [ "print(f\"Embedding vector for item_id={item_id}\")\n", "print(item_embeddings[item_id])\n", @@ -504,7 +1517,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 32, "metadata": { "collapsed": false }, @@ -521,9 +1534,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Star Wars (1977)\n", + "Return of the Jedi (1983)\n", + "Cosine similarity: 0.914\n" + ] + } + ], "source": [ "def print_similarity(item_a, item_b, item_embeddings, titles):\n", " print(titles[item_a])\n", @@ -546,29 +1569,59 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 54, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Muppet Treasure Island (1996)\n", + "Eat Drink Man Woman (1994)\n", + "Cosine similarity: 0.699\n" + ] + } + ], "source": [ - "print_similarity(181, 288, item_embeddings, indexed_items[\"title\"])" + "print_similarity(21, 45, item_embeddings, indexed_items[\"title\"])" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 53, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Postino, Il (1994)\n", + "French Twist (Gazon maudit) (1995)\n", + "Cosine similarity: 0.868\n" + ] + } + ], "source": [ - "print_similarity(181, 1, item_embeddings, indexed_items[\"title\"])" + "print_similarity(14, 16, item_embeddings, indexed_items[\"title\"])" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Searching for Bobby Fischer (1993)\n", + "Strange Days (1995)\n", + "Cosine similarity: 0.853\n" + ] + } + ], "source": [ - "print_similarity(181, 181, item_embeddings, indexed_items[\"title\"])" + "print_similarity(87, 39, item_embeddings, indexed_items[\"title\"])" ] }, { @@ -584,17 +1637,147 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "metadata": { "collapsed": false }, - "outputs": [], + "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", + "
popularitytitlerelease_datevideo_release_dateimdb_urlrelease_year
item_id
38687Addams Family Values (1993)1993-01-01NaNhttp://us.imdb.com/M/title-exact?Addams%20Fami...1993.0
62239Swiss Family Robinson (1960)1960-01-01NaNhttp://us.imdb.com/M/title-exact?Swiss%20Famil...1960.0
78614Perez Family, The (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Perez%20Famil...1995.0
99716Stuart Saves His Family (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?Stuart%20Save...1995.0
114721My Family (1995)1995-01-01NaNhttp://us.imdb.com/M/title-exact?My%20Family%2...1995.0
119745Family Thing, A (1996)1996-03-23NaNhttp://us.imdb.com/M/title-exact?Family%20Thin...1996.0
\n", + "
" + ], + "text/plain": [ + " popularity title release_date \\\n", + "item_id \n", + "386 87 Addams Family Values (1993) 1993-01-01 \n", + "622 39 Swiss Family Robinson (1960) 1960-01-01 \n", + "786 14 Perez Family, The (1995) 1995-01-01 \n", + "997 16 Stuart Saves His Family (1995) 1995-01-01 \n", + "1147 21 My Family (1995) 1995-01-01 \n", + "1197 45 Family Thing, A (1996) 1996-03-23 \n", + "\n", + " video_release_date \\\n", + "item_id \n", + "386 NaN \n", + "622 NaN \n", + "786 NaN \n", + "997 NaN \n", + "1147 NaN \n", + "1197 NaN \n", + "\n", + " imdb_url release_year \n", + "item_id \n", + "386 http://us.imdb.com/M/title-exact?Addams%20Fami... 1993.0 \n", + "622 http://us.imdb.com/M/title-exact?Swiss%20Famil... 1960.0 \n", + "786 http://us.imdb.com/M/title-exact?Perez%20Famil... 1995.0 \n", + "997 http://us.imdb.com/M/title-exact?Stuart%20Save... 1995.0 \n", + "1147 http://us.imdb.com/M/title-exact?My%20Family%2... 1995.0 \n", + "1197 http://us.imdb.com/M/title-exact?Family%20Thin... 1996.0 " + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Code to help you search for a movie title\n", - "partial_title = \"Jedi\"\n", + "partial_title = \"Family\"\n", "indexed_items[indexed_items['title'].str.contains(partial_title)]\n", - "\n", - "raise NotImplementedError(\"Please implement the next steps yourself\")" + "\n" ] }, { @@ -608,9 +1791,31 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[(np.int64(50), 'Star Wars (1977)', np.float32(1.0)),\n", + " (np.int64(172), 'Empire Strikes Back, The (1980)', np.float32(0.9303064)),\n", + " (np.int64(181), 'Return of the Jedi (1983)', np.float32(0.91449493)),\n", + " (np.int64(751), 'Tomorrow Never Dies (1997)', np.float32(0.8896246)),\n", + " (np.int64(168),\n", + " 'Monty Python and the Holy Grail (1974)',\n", + " np.float32(0.88945043)),\n", + " (np.int64(1550), 'Destiny Turns on the Radio (1995)', np.float32(0.8695055)),\n", + " (np.int64(313), 'Titanic (1997)', np.float32(0.8645439)),\n", + " (np.int64(173), 'Princess Bride, The (1987)', np.float32(0.86448)),\n", + " (np.int64(12), 'Usual Suspects, The (1995)', np.float32(0.8596393)),\n", + " (np.int64(64), 'Shawshank Redemption, The (1994)', np.float32(0.85874915))]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "def most_similar(item_id, item_embeddings, titles,\n", " top_n=30):\n", @@ -631,9 +1836,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[(np.int64(227),\n", + " 'Star Trek VI: The Undiscovered Country (1991)',\n", + " np.float32(0.9999999)),\n", + " (np.int64(233), 'Under Siege (1992)', np.float32(0.85811955)),\n", + " (np.int64(228), 'Star Trek: The Wrath of Khan (1982)', np.float32(0.8558649)),\n", + " (np.int64(520), 'Great Escape, The (1963)', np.float32(0.8468958)),\n", + " (np.int64(391), 'Last Action Hero (1993)', np.float32(0.8437661)),\n", + " (np.int64(183), 'Alien (1979)', np.float32(0.8377478)),\n", + " (np.int64(1522), 'Trial by Jury (1994)', np.float32(0.8341969)),\n", + " (np.int64(918), 'City of Angels (1998)', np.float32(0.83022356)),\n", + " (np.int64(449),\n", + " 'Star Trek: The Motion Picture (1979)',\n", + " np.float32(0.8279505)),\n", + " (np.int64(530), 'Man Who Would Be King, The (1975)', np.float32(0.82732326))]" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "# Find the most similar films to \"Star Trek VI: The Undiscovered Country\"\n", "most_similar(227, item_embeddings, indexed_items[\"title\"], top_n=10)" @@ -657,7 +1886,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, "outputs": [], "source": [ @@ -668,9 +1897,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import matplotlib.pyplot as plt\n", "\n", @@ -682,11 +1922,9316 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "customdata": [ + [ + 1, + "Toy Story (1995)", + 452 + ], + [ + 2, + "GoldenEye (1995)", + 131 + ], + [ + 3, + "Four Rooms (1995)", + 90 + ], + [ + 4, + "Get Shorty (1995)", + 209 + ], + [ + 5, + "Copycat (1995)", + 86 + ], + [ + 6, + "Shanghai Triad (Yao a yao yao dao waipo qiao) (1995)", + 26 + ], + [ + 7, + "Twelve Monkeys (1995)", + 392 + ], + [ + 8, + "Babe (1995)", + 219 + ], + [ + 9, + "Dead Man Walking (1995)", + 299 + ], + [ + 10, + "Richard III (1995)", + 89 + ], + [ + 11, + "Seven (Se7en) (1995)", + 236 + ], + [ + 12, + "Usual Suspects, The (1995)", + 267 + ], + [ + 13, + "Mighty Aphrodite (1995)", + 184 + ], + [ + 14, + "Postino, Il (1994)", + 183 + ], + [ + 15, + "Mr. Holland's Opus (1995)", + 293 + ], + [ + 16, + "French Twist (Gazon maudit) (1995)", + 39 + ], + [ + 17, + "From Dusk Till Dawn (1996)", + 92 + ], + [ + 18, + "White Balloon, The (1995)", + 10 + ], + [ + 19, + "Antonia's Line (1995)", + 69 + ], + [ + 20, + "Angels and Insects (1995)", + 72 + ], + [ + 21, + "Muppet Treasure Island (1996)", + 84 + ], + [ + 22, + "Braveheart (1995)", + 297 + ], + [ + 23, + "Taxi Driver (1976)", + 182 + ], + [ + 24, + "Rumble in the Bronx (1995)", + 174 + ], + [ + 25, + "Birdcage, The (1996)", + 293 + ], + [ + 26, + "Brothers McMullen, The (1995)", + 73 + ], + [ + 27, + "Bad Boys (1995)", + 57 + ], + [ + 28, + "Apollo 13 (1995)", + 276 + ], + [ + 29, + "Batman Forever (1995)", + 114 + ], + [ + 30, + "Belle de jour (1967)", + 37 + ], + [ + 31, + "Crimson Tide (1995)", + 154 + ], + [ + 32, + "Crumb (1994)", + 81 + ], + [ + 33, + "Desperado (1995)", + 97 + ], + [ + 34, + "Doom Generation, The (1995)", + 7 + ], + [ + 35, + "Free Willy 2: The Adventure Home (1995)", + 11 + ], + [ + 36, + "Mad Love (1995)", + 13 + ], + [ + 37, + "Nadja (1994)", + 8 + ], + [ + 38, + "Net, The (1995)", + 120 + ], + [ + 39, + "Strange Days (1995)", + 87 + ], + [ + 40, + "To Wong Foo, Thanks for Everything! Julie Newmar (1995)", + 57 + ], + [ + 41, + "Billy Madison (1995)", + 37 + ], + [ + 42, + "Clerks (1994)", + 148 + ], + [ + 43, + "Disclosure (1994)", + 40 + ], + [ + 44, + "Dolores Claiborne (1994)", + 79 + ], + [ + 45, + "Eat Drink Man Woman (1994)", + 80 + ], + [ + 46, + "Exotica (1994)", + 27 + ], + [ + 47, + "Ed Wood (1994)", + 133 + ], + [ + 48, + "Hoop Dreams (1994)", + 117 + ], + [ + 49, + "I.Q. (1994)", + 81 + ], + [ + 50, + "Star Wars (1977)", + 583 + ], + [ + 51, + "Legends of the Fall (1994)", + 81 + ], + [ + 52, + "Madness of King George, The (1994)", + 91 + ], + [ + 53, + "Natural Born Killers (1994)", + 128 + ], + [ + 54, + "Outbreak (1995)", + 104 + ], + [ + 55, + "Professional, The (1994)", + 149 + ], + [ + 56, + "Pulp Fiction (1994)", + 394 + ], + [ + 57, + "Priest (1994)", + 40 + ], + [ + 58, + "Quiz Show (1994)", + 175 + ], + [ + 59, + "Three Colors: Red (1994)", + 83 + ], + [ + 60, + "Three Colors: Blue (1993)", + 64 + ], + [ + 61, + "Three Colors: White (1994)", + 59 + ], + [ + 62, + "Stargate (1994)", + 127 + ], + [ + 63, + "Santa Clause, The (1994)", + 82 + ], + [ + 64, + "Shawshank Redemption, The (1994)", + 283 + ], + [ + 65, + "What's Eating Gilbert Grape (1993)", + 115 + ], + [ + 66, + "While You Were Sleeping (1995)", + 162 + ], + [ + 67, + "Ace Ventura: Pet Detective (1994)", + 103 + ], + [ + 68, + "Crow, The (1994)", + 134 + ], + [ + 69, + "Forrest Gump (1994)", + 321 + ], + [ + 70, + "Four Weddings and a Funeral (1994)", + 251 + ], + [ + 71, + "Lion King, The (1994)", + 220 + ], + [ + 72, + "Mask, The (1994)", + 129 + ], + [ + 73, + "Maverick (1994)", + 128 + ], + [ + 74, + "Faster Pussycat! Kill! Kill! (1965)", + 7 + ], + [ + 75, + "Brother Minister: The Assassination of Malcolm X (1994)", + 5 + ], + [ + 76, + "Carlito's Way (1993)", + 54 + ], + [ + 77, + "Firm, The (1993)", + 151 + ], + [ + 78, + "Free Willy (1993)", + 33 + ], + [ + 79, + "Fugitive, The (1993)", + 336 + ], + [ + 80, + "Hot Shots! Part Deux (1993)", + 68 + ], + [ + 81, + "Hudsucker Proxy, The (1994)", + 110 + ], + [ + 82, + "Jurassic Park (1993)", + 261 + ], + [ + 83, + "Much Ado About Nothing (1993)", + 176 + ], + [ + 84, + "Robert A. Heinlein's The Puppet Masters (1994)", + 18 + ], + [ + 85, + "Ref, The (1994)", + 58 + ], + [ + 86, + "Remains of the Day, The (1993)", + 150 + ], + [ + 87, + "Searching for Bobby Fischer (1993)", + 138 + ], + [ + 88, + "Sleepless in Seattle (1993)", + 213 + ], + [ + 89, + "Blade Runner (1982)", + 275 + ], + [ + 90, + "So I Married an Axe Murderer (1993)", + 95 + ], + [ + 91, + "Nightmare Before Christmas, The (1993)", + 143 + ], + [ + 92, + "True Romance (1993)", + 104 + ], + [ + 93, + "Welcome to the Dollhouse (1995)", + 112 + ], + [ + 94, + "Home Alone (1990)", + 137 + ], + [ + 95, + "Aladdin (1992)", + 219 + ], + [ + 96, + "Terminator 2: Judgment Day (1991)", + 295 + ], + [ + 97, + "Dances with Wolves (1990)", + 256 + ], + [ + 98, + "Silence of the Lambs, The (1991)", + 390 + ], + [ + 99, + "Snow White and the Seven Dwarfs (1937)", + 172 + ], + [ + 100, + "Fargo (1996)", + 508 + ], + [ + 101, + "Heavy Metal (1981)", + 73 + ], + [ + 102, + "Aristocats, The (1970)", + 54 + ], + [ + 103, + "All Dogs Go to Heaven 2 (1996)", + 15 + ], + [ + 104, + "Theodore Rex (1995)", + 5 + ], + [ + 105, + "Sgt. Bilko (1996)", + 74 + ], + [ + 106, + "Diabolique (1996)", + 71 + ], + [ + 107, + "Moll Flanders (1996)", + 42 + ], + [ + 108, + "Kids in the Hall: Brain Candy (1996)", + 65 + ], + [ + 109, + "Mystery Science Theater 3000: The Movie (1996)", + 130 + ], + [ + 110, + "Operation Dumbo Drop (1995)", + 31 + ], + [ + 111, + "Truth About Cats & Dogs, The (1996)", + 272 + ], + [ + 112, + "Flipper (1996)", + 20 + ], + [ + 113, + "Horseman on the Roof, The (Hussard sur le toit, Le) (1995)", + 9 + ], + [ + 114, + "Wallace & Gromit: The Best of Aardman Animation (1996)", + 67 + ], + [ + 115, + "Haunted World of Edward D. Wood Jr., The (1995)", + 15 + ], + [ + 116, + "Cold Comfort Farm (1995)", + 125 + ], + [ + 117, + "Rock, The (1996)", + 378 + ], + [ + 118, + "Twister (1996)", + 293 + ], + [ + 119, + "Maya Lin: A Strong Clear Vision (1994)", + 4 + ], + [ + 120, + "Striptease (1996)", + 67 + ], + [ + 121, + "Independence Day (ID4) (1996)", + 429 + ], + [ + 122, + "Cable Guy, The (1996)", + 106 + ], + [ + 123, + "Frighteners, The (1996)", + 115 + ], + [ + 124, + "Lone Star (1996)", + 187 + ], + [ + 125, + "Phenomenon (1996)", + 244 + ], + [ + 126, + "Spitfire Grill, The (1996)", + 97 + ], + [ + 127, + "Godfather, The (1972)", + 413 + ], + [ + 128, + "Supercop (1992)", + 65 + ], + [ + 129, + "Bound (1996)", + 129 + ], + [ + 130, + "Kansas City (1996)", + 23 + ], + [ + 131, + "Breakfast at Tiffany's (1961)", + 95 + ], + [ + 132, + "Wizard of Oz, The (1939)", + 246 + ], + [ + 133, + "Gone with the Wind (1939)", + 171 + ], + [ + 134, + "Citizen Kane (1941)", + 198 + ], + [ + 135, + "2001: A Space Odyssey (1968)", + 259 + ], + [ + 136, + "Mr. Smith Goes to Washington (1939)", + 105 + ], + [ + 137, + "Big Night (1996)", + 171 + ], + [ + 138, + "D3: The Mighty Ducks (1996)", + 19 + ], + [ + 139, + "Love Bug, The (1969)", + 50 + ], + [ + 140, + "Homeward Bound: The Incredible Journey (1993)", + 61 + ], + [ + 141, + "20,000 Leagues Under the Sea (1954)", + 72 + ], + [ + 142, + "Bedknobs and Broomsticks (1971)", + 57 + ], + [ + 143, + "Sound of Music, The (1965)", + 222 + ], + [ + 144, + "Die Hard (1988)", + 243 + ], + [ + 145, + "Lawnmower Man, The (1992)", + 65 + ], + [ + 146, + "Unhook the Stars (1996)", + 10 + ], + [ + 147, + "Long Kiss Goodnight, The (1996)", + 185 + ], + [ + 148, + "Ghost and the Darkness, The (1996)", + 128 + ], + [ + 149, + "Jude (1996)", + 23 + ], + [ + 150, + "Swingers (1996)", + 157 + ], + [ + 151, + "Willy Wonka and the Chocolate Factory (1971)", + 326 + ], + [ + 152, + "Sleeper (1973)", + 82 + ], + [ + 153, + "Fish Called Wanda, A (1988)", + 247 + ], + [ + 154, + "Monty Python's Life of Brian (1979)", + 174 + ], + [ + 155, + "Dirty Dancing (1987)", + 98 + ], + [ + 156, + "Reservoir Dogs (1992)", + 148 + ], + [ + 157, + "Platoon (1986)", + 127 + ], + [ + 158, + "Weekend at Bernie's (1989)", + 60 + ], + [ + 159, + "Basic Instinct (1992)", + 101 + ], + [ + 160, + "Glengarry Glen Ross (1992)", + 69 + ], + [ + 161, + "Top Gun (1986)", + 220 + ], + [ + 162, + "On Golden Pond (1981)", + 106 + ], + [ + 163, + "Return of the Pink Panther, The (1974)", + 92 + ], + [ + 164, + "Abyss, The (1989)", + 151 + ], + [ + 165, + "Jean de Florette (1986)", + 64 + ], + [ + 166, + "Manon of the Spring (Manon des sources) (1986)", + 58 + ], + [ + 167, + "Private Benjamin (1980)", + 67 + ], + [ + 168, + "Monty Python and the Holy Grail (1974)", + 316 + ], + [ + 169, + "Wrong Trousers, The (1993)", + 118 + ], + [ + 170, + "Cinema Paradiso (1988)", + 121 + ], + [ + 171, + "Delicatessen (1991)", + 65 + ], + [ + 172, + "Empire Strikes Back, The (1980)", + 367 + ], + [ + 173, + "Princess Bride, The (1987)", + 324 + ], + [ + 174, + "Raiders of the Lost Ark (1981)", + 420 + ], + [ + 175, + "Brazil (1985)", + 208 + ], + [ + 176, + "Aliens (1986)", + 284 + ], + [ + 177, + "Good, The Bad and The Ugly, The (1966)", + 137 + ], + [ + 178, + "12 Angry Men (1957)", + 125 + ], + [ + 179, + "Clockwork Orange, A (1971)", + 221 + ], + [ + 180, + "Apocalypse Now (1979)", + 221 + ], + [ + 181, + "Return of the Jedi (1983)", + 507 + ], + [ + 182, + "GoodFellas (1990)", + 226 + ], + [ + 183, + "Alien (1979)", + 291 + ], + [ + 184, + "Army of Darkness (1993)", + 116 + ], + [ + 185, + "Psycho (1960)", + 239 + ], + [ + 186, + "Blues Brothers, The (1980)", + 251 + ], + [ + 187, + "Godfather: Part II, The (1974)", + 209 + ], + [ + 188, + "Full Metal Jacket (1987)", + 170 + ], + [ + 189, + "Grand Day Out, A (1992)", + 66 + ], + [ + 190, + "Henry V (1989)", + 124 + ], + [ + 191, + "Amadeus (1984)", + 276 + ], + [ + 192, + "Raging Bull (1980)", + 116 + ], + [ + 193, + "Right Stuff, The (1983)", + 157 + ], + [ + 194, + "Sting, The (1973)", + 241 + ], + [ + 195, + "Terminator, The (1984)", + 301 + ], + [ + 196, + "Dead Poets Society (1989)", + 251 + ], + [ + 197, + "Graduate, The (1967)", + 239 + ], + [ + 198, + "Nikita (La Femme Nikita) (1990)", + 127 + ], + [ + 199, + "Bridge on the River Kwai, The (1957)", + 165 + ], + [ + 200, + "Shining, The (1980)", + 206 + ], + [ + 201, + "Evil Dead II (1987)", + 89 + ], + [ + 202, + "Groundhog Day (1993)", + 280 + ], + [ + 203, + "Unforgiven (1992)", + 182 + ], + [ + 204, + "Back to the Future (1985)", + 350 + ], + [ + 205, + "Patton (1970)", + 136 + ], + [ + 206, + "Akira (1988)", + 50 + ], + [ + 207, + "Cyrano de Bergerac (1990)", + 66 + ], + [ + 208, + "Young Frankenstein (1974)", + 200 + ], + [ + 209, + "This Is Spinal Tap (1984)", + 191 + ], + [ + 210, + "Indiana Jones and the Last Crusade (1989)", + 331 + ], + [ + 211, + "M*A*S*H (1970)", + 206 + ], + [ + 212, + "Unbearable Lightness of Being, The (1988)", + 92 + ], + [ + 213, + "Room with a View, A (1986)", + 134 + ], + [ + 214, + "Pink Floyd - The Wall (1982)", + 114 + ], + [ + 215, + "Field of Dreams (1989)", + 212 + ], + [ + 216, + "When Harry Met Sally... (1989)", + 290 + ], + [ + 217, + "Bram Stoker's Dracula (1992)", + 120 + ], + [ + 218, + "Cape Fear (1991)", + 171 + ], + [ + 219, + "Nightmare on Elm Street, A (1984)", + 111 + ], + [ + 220, + "Mirror Has Two Faces, The (1996)", + 66 + ], + [ + 221, + "Breaking the Waves (1996)", + 74 + ], + [ + 222, + "Star Trek: First Contact (1996)", + 365 + ], + [ + 223, + "Sling Blade (1996)", + 136 + ], + [ + 224, + "Ridicule (1996)", + 44 + ], + [ + 225, + "101 Dalmatians (1996)", + 109 + ], + [ + 226, + "Die Hard 2 (1990)", + 166 + ], + [ + 227, + "Star Trek VI: The Undiscovered Country (1991)", + 161 + ], + [ + 228, + "Star Trek: The Wrath of Khan (1982)", + 244 + ], + [ + 229, + "Star Trek III: The Search for Spock (1984)", + 171 + ], + [ + 230, + "Star Trek IV: The Voyage Home (1986)", + 199 + ], + [ + 231, + "Batman Returns (1992)", + 142 + ], + [ + 232, + "Young Guns (1988)", + 101 + ], + [ + 233, + "Under Siege (1992)", + 124 + ], + [ + 234, + "Jaws (1975)", + 280 + ], + [ + 235, + "Mars Attacks! (1996)", + 217 + ], + [ + 236, + "Citizen Ruth (1996)", + 45 + ], + [ + 237, + "Jerry Maguire (1996)", + 384 + ], + [ + 238, + "Raising Arizona (1987)", + 256 + ], + [ + 239, + "Sneakers (1992)", + 150 + ], + [ + 240, + "Beavis and Butt-head Do America (1996)", + 156 + ], + [ + 241, + "Last of the Mohicans, The (1992)", + 128 + ], + [ + 242, + "Kolya (1996)", + 117 + ], + [ + 243, + "Jungle2Jungle (1997)", + 132 + ], + [ + 244, + "Smilla's Sense of Snow (1997)", + 48 + ], + [ + 245, + "Devil's Own, The (1997)", + 240 + ], + [ + 246, + "Chasing Amy (1997)", + 124 + ], + [ + 247, + "Turbo: A Power Rangers Movie (1997)", + 5 + ], + [ + 248, + "Grosse Pointe Blank (1997)", + 160 + ], + [ + 249, + "Austin Powers: International Man of Mystery (1997)", + 130 + ], + [ + 250, + "Fifth Element, The (1997)", + 197 + ], + [ + 251, + "Shall We Dance? (1996)", + 46 + ], + [ + 252, + "Lost World: Jurassic Park, The (1997)", + 158 + ], + [ + 253, + "Pillow Book, The (1995)", + 26 + ], + [ + 254, + "Batman & Robin (1997)", + 62 + ], + [ + 255, + "My Best Friend's Wedding (1997)", + 172 + ], + [ + 256, + "When the Cats Away (Chacun cherche son chat) (1996)", + 16 + ], + [ + 257, + "Men in Black (1997)", + 303 + ], + [ + 258, + "Contact (1997)", + 509 + ], + [ + 259, + "George of the Jungle (1997)", + 162 + ], + [ + 260, + "Event Horizon (1997)", + 127 + ], + [ + 261, + "Air Bud (1997)", + 43 + ], + [ + 262, + "In the Company of Men (1997)", + 66 + ], + [ + 263, + "Steel (1997)", + 19 + ], + [ + 264, + "Mimic (1997)", + 101 + ], + [ + 265, + "Hunt for Red October, The (1990)", + 227 + ], + [ + 266, + "Kull the Conqueror (1997)", + 35 + ], + [ + 267, + "unknown", + 9 + ], + [ + 268, + "Chasing Amy (1997)", + 255 + ], + [ + 269, + "Full Monty, The (1997)", + 315 + ], + [ + 270, + "Gattaca (1997)", + 136 + ], + [ + 271, + "Starship Troopers (1997)", + 211 + ], + [ + 272, + "Good Will Hunting (1997)", + 198 + ], + [ + 273, + "Heat (1995)", + 223 + ], + [ + 274, + "Sabrina (1995)", + 190 + ], + [ + 275, + "Sense and Sensibility (1995)", + 268 + ], + [ + 276, + "Leaving Las Vegas (1995)", + 298 + ], + [ + 277, + "Restoration (1995)", + 71 + ], + [ + 278, + "Bed of Roses (1996)", + 60 + ], + [ + 279, + "Once Upon a Time... When We Were Colored (1995)", + 28 + ], + [ + 280, + "Up Close and Personal (1996)", + 85 + ], + [ + 281, + "River Wild, The (1994)", + 146 + ], + [ + 282, + "Time to Kill, A (1996)", + 232 + ], + [ + 283, + "Emma (1996)", + 177 + ], + [ + 284, + "Tin Cup (1996)", + 193 + ], + [ + 285, + "Secrets & Lies (1996)", + 162 + ], + [ + 286, + "English Patient, The (1996)", + 481 + ], + [ + 287, + "Marvin's Room (1996)", + 78 + ], + [ + 288, + "Scream (1996)", + 478 + ], + [ + 289, + "Evita (1996)", + 259 + ], + [ + 290, + "Fierce Creatures (1997)", + 96 + ], + [ + 291, + "Absolute Power (1997)", + 127 + ], + [ + 292, + "Rosewood (1997)", + 114 + ], + [ + 293, + "Donnie Brasco (1997)", + 147 + ], + [ + 294, + "Liar Liar (1997)", + 485 + ], + [ + 295, + "Breakdown (1997)", + 77 + ], + [ + 296, + "Promesse, La (1996)", + 6 + ], + [ + 297, + "Ulee's Gold (1997)", + 50 + ], + [ + 298, + "Face/Off (1997)", + 194 + ], + [ + 299, + "Hoodlum (1997)", + 73 + ], + [ + 300, + "Air Force One (1997)", + 431 + ], + [ + 301, + "In & Out (1997)", + 230 + ], + [ + 302, + "L.A. Confidential (1997)", + 297 + ], + [ + 303, + "Ulee's Gold (1997)", + 134 + ], + [ + 304, + "Fly Away Home (1996)", + 149 + ], + [ + 305, + "Ice Storm, The (1997)", + 87 + ], + [ + 306, + "Mrs. Brown (Her Majesty, Mrs. Brown) (1997)", + 96 + ], + [ + 307, + "Devil's Advocate, The (1997)", + 188 + ], + [ + 308, + "FairyTale: A True Story (1997)", + 30 + ], + [ + 309, + "Deceiver (1997)", + 28 + ], + [ + 310, + "Rainmaker, The (1997)", + 145 + ], + [ + 311, + "Wings of the Dove, The (1997)", + 75 + ], + [ + 312, + "Midnight in the Garden of Good and Evil (1997)", + 80 + ], + [ + 313, + "Titanic (1997)", + 350 + ], + [ + 314, + "3 Ninjas: High Noon At Mega Mountain (1998)", + 5 + ], + [ + 315, + "Apt Pupil (1998)", + 160 + ], + [ + 316, + "As Good As It Gets (1997)", + 112 + ], + [ + 317, + "In the Name of the Father (1993)", + 102 + ], + [ + 318, + "Schindler's List (1993)", + 298 + ], + [ + 319, + "Everyone Says I Love You (1996)", + 168 + ], + [ + 320, + "Paradise Lost: The Child Murders at Robin Hood Hills (1996)", + 20 + ], + [ + 321, + "Mother (1996)", + 169 + ], + [ + 322, + "Murder at 1600 (1997)", + 218 + ], + [ + 323, + "Dante's Peak (1997)", + 240 + ], + [ + 324, + "Lost Highway (1997)", + 125 + ], + [ + 325, + "Crash (1996)", + 128 + ], + [ + 326, + "G.I. Jane (1997)", + 175 + ], + [ + 327, + "Cop Land (1997)", + 175 + ], + [ + 328, + "Conspiracy Theory (1997)", + 295 + ], + [ + 329, + "Desperate Measures (1998)", + 45 + ], + [ + 330, + "187 (1997)", + 41 + ], + [ + 331, + "Edge, The (1997)", + 113 + ], + [ + 332, + "Kiss the Girls (1997)", + 143 + ], + [ + 333, + "Game, The (1997)", + 251 + ], + [ + 334, + "U Turn (1997)", + 64 + ], + [ + 335, + "How to Be a Player (1997)", + 21 + ], + [ + 336, + "Playing God (1997)", + 43 + ], + [ + 337, + "House of Yes, The (1997)", + 18 + ], + [ + 338, + "Bean (1997)", + 91 + ], + [ + 339, + "Mad City (1997)", + 47 + ], + [ + 340, + "Boogie Nights (1997)", + 189 + ], + [ + 341, + "Critical Care (1997)", + 11 + ], + [ + 342, + "Man Who Knew Too Little, The (1997)", + 52 + ], + [ + 343, + "Alien: Resurrection (1997)", + 124 + ], + [ + 344, + "Apostle, The (1997)", + 55 + ], + [ + 345, + "Deconstructing Harry (1997)", + 65 + ], + [ + 346, + "Jackie Brown (1997)", + 126 + ], + [ + 347, + "Wag the Dog (1997)", + 137 + ], + [ + 348, + "Desperate Measures (1998)", + 27 + ], + [ + 349, + "Hard Rain (1998)", + 31 + ], + [ + 350, + "Fallen (1998)", + 41 + ], + [ + 351, + "Prophecy II, The (1998)", + 20 + ], + [ + 352, + "Spice World (1997)", + 26 + ], + [ + 353, + "Deep Rising (1998)", + 14 + ], + [ + 354, + "Wedding Singer, The (1998)", + 72 + ], + [ + 355, + "Sphere (1998)", + 41 + ], + [ + 356, + "Client, The (1994)", + 97 + ], + [ + 357, + "One Flew Over the Cuckoo's Nest (1975)", + 264 + ], + [ + 358, + "Spawn (1997)", + 143 + ], + [ + 359, + "Assignment, The (1997)", + 18 + ], + [ + 360, + "Wonderland (1997)", + 10 + ], + [ + 361, + "Incognito (1997)", + 10 + ], + [ + 362, + "Blues Brothers 2000 (1998)", + 28 + ], + [ + 363, + "Sudden Death (1995)", + 47 + ], + [ + 364, + "Ace Ventura: When Nature Calls (1995)", + 37 + ], + [ + 365, + "Powder (1995)", + 48 + ], + [ + 366, + "Dangerous Minds (1995)", + 47 + ], + [ + 367, + "Clueless (1995)", + 170 + ], + [ + 368, + "Bio-Dome (1996)", + 31 + ], + [ + 369, + "Black Sheep (1996)", + 55 + ], + [ + 370, + "Mary Reilly (1996)", + 39 + ], + [ + 371, + "Bridges of Madison County, The (1995)", + 67 + ], + [ + 372, + "Jeffrey (1995)", + 34 + ], + [ + 373, + "Judge Dredd (1995)", + 39 + ], + [ + 374, + "Mighty Morphin Power Rangers: The Movie (1995)", + 11 + ], + [ + 375, + "Showgirls (1995)", + 23 + ], + [ + 376, + "Houseguest (1994)", + 24 + ], + [ + 377, + "Heavyweights (1994)", + 13 + ], + [ + 378, + "Miracle on 34th Street (1994)", + 101 + ], + [ + 379, + "Tales From the Crypt Presents: Demon Knight (1995)", + 43 + ], + [ + 380, + "Star Trek: Generations (1994)", + 116 + ], + [ + 381, + "Muriel's Wedding (1994)", + 100 + ], + [ + 382, + "Adventures of Priscilla, Queen of the Desert, The (1994)", + 111 + ], + [ + 383, + "Flintstones, The (1994)", + 31 + ], + [ + 384, + "Naked Gun 33 1/3: The Final Insult (1994)", + 69 + ], + [ + 385, + "True Lies (1994)", + 208 + ], + [ + 386, + "Addams Family Values (1993)", + 87 + ], + [ + 387, + "Age of Innocence, The (1993)", + 65 + ], + [ + 388, + "Beverly Hills Cop III (1994)", + 28 + ], + [ + 389, + "Black Beauty (1994)", + 27 + ], + [ + 390, + "Fear of a Black Hat (1993)", + 10 + ], + [ + 391, + "Last Action Hero (1993)", + 59 + ], + [ + 392, + "Man Without a Face, The (1993)", + 68 + ], + [ + 393, + "Mrs. Doubtfire (1993)", + 192 + ], + [ + 394, + "Radioland Murders (1994)", + 12 + ], + [ + 395, + "Robin Hood: Men in Tights (1993)", + 56 + ], + [ + 396, + "Serial Mom (1994)", + 54 + ], + [ + 397, + "Striking Distance (1993)", + 12 + ], + [ + 398, + "Super Mario Bros. (1993)", + 26 + ], + [ + 399, + "Three Musketeers, The (1993)", + 89 + ], + [ + 400, + "Little Rascals, The (1994)", + 18 + ], + [ + 401, + "Brady Bunch Movie, The (1995)", + 76 + ], + [ + 402, + "Ghost (1990)", + 170 + ], + [ + 403, + "Batman (1989)", + 201 + ], + [ + 404, + "Pinocchio (1940)", + 101 + ], + [ + 405, + "Mission: Impossible (1996)", + 344 + ], + [ + 406, + "Thinner (1996)", + 49 + ], + [ + 407, + "Spy Hard (1996)", + 43 + ], + [ + 408, + "Close Shave, A (1995)", + 112 + ], + [ + 409, + "Jack (1996)", + 70 + ], + [ + 410, + "Kingpin (1996)", + 162 + ], + [ + 411, + "Nutty Professor, The (1996)", + 163 + ], + [ + 412, + "Very Brady Sequel, A (1996)", + 93 + ], + [ + 413, + "Tales from the Crypt Presents: Bordello of Blood (1996)", + 55 + ], + [ + 414, + "My Favorite Year (1982)", + 62 + ], + [ + 415, + "Apple Dumpling Gang, The (1975)", + 25 + ], + [ + 416, + "Old Yeller (1957)", + 64 + ], + [ + 417, + "Parent Trap, The (1961)", + 73 + ], + [ + 418, + "Cinderella (1950)", + 129 + ], + [ + 419, + "Mary Poppins (1964)", + 178 + ], + [ + 420, + "Alice in Wonderland (1951)", + 81 + ], + [ + 421, + "William Shakespeare's Romeo and Juliet (1996)", + 106 + ], + [ + 422, + "Aladdin and the King of Thieves (1996)", + 26 + ], + [ + 423, + "E.T. the Extra-Terrestrial (1982)", + 300 + ], + [ + 424, + "Children of the Corn: The Gathering (1996)", + 19 + ], + [ + 425, + "Bob Roberts (1992)", + 85 + ], + [ + 426, + "Transformers: The Movie, The (1986)", + 32 + ], + [ + 427, + "To Kill a Mockingbird (1962)", + 219 + ], + [ + 428, + "Harold and Maude (1971)", + 121 + ], + [ + 429, + "Day the Earth Stood Still, The (1951)", + 97 + ], + [ + 430, + "Duck Soup (1933)", + 93 + ], + [ + 431, + "Highlander (1986)", + 153 + ], + [ + 432, + "Fantasia (1940)", + 174 + ], + [ + 433, + "Heathers (1989)", + 171 + ], + [ + 434, + "Forbidden Planet (1956)", + 67 + ], + [ + 435, + "Butch Cassidy and the Sundance Kid (1969)", + 216 + ], + [ + 436, + "American Werewolf in London, An (1981)", + 99 + ], + [ + 437, + "Amityville 1992: It's About Time (1992)", + 5 + ], + [ + 438, + "Amityville 3-D (1983)", + 6 + ], + [ + 439, + "Amityville: A New Generation (1993)", + 5 + ], + [ + 440, + "Amityville II: The Possession (1982)", + 14 + ], + [ + 441, + "Amityville Horror, The (1979)", + 53 + ], + [ + 442, + "Amityville Curse, The (1990)", + 4 + ], + [ + 443, + "Birds, The (1963)", + 162 + ], + [ + 444, + "Blob, The (1958)", + 46 + ], + [ + 445, + "Body Snatcher, The (1945)", + 22 + ], + [ + 446, + "Burnt Offerings (1976)", + 9 + ], + [ + 447, + "Carrie (1976)", + 121 + ], + [ + 448, + "Omen, The (1976)", + 85 + ], + [ + 449, + "Star Trek: The Motion Picture (1979)", + 117 + ], + [ + 450, + "Star Trek V: The Final Frontier (1989)", + 63 + ], + [ + 451, + "Grease (1978)", + 170 + ], + [ + 452, + "Jaws 2 (1978)", + 66 + ], + [ + 453, + "Jaws 3-D (1983)", + 16 + ], + [ + 454, + "Bastard Out of Carolina (1996)", + 16 + ], + [ + 455, + "Jackie Chan's First Strike (1996)", + 145 + ], + [ + 456, + "Beverly Hills Ninja (1997)", + 48 + ], + [ + 457, + "Free Willy 3: The Rescue (1997)", + 27 + ], + [ + 458, + "Nixon (1995)", + 90 + ], + [ + 459, + "Cry, the Beloved Country (1995)", + 24 + ], + [ + 460, + "Crossing Guard, The (1995)", + 28 + ], + [ + 461, + "Smoke (1995)", + 74 + ], + [ + 462, + "Like Water For Chocolate (Como agua para chocolate) (1992)", + 148 + ], + [ + 463, + "Secret of Roan Inish, The (1994)", + 71 + ], + [ + 464, + "Vanya on 42nd Street (1994)", + 27 + ], + [ + 465, + "Jungle Book, The (1994)", + 85 + ], + [ + 466, + "Red Rock West (1992)", + 52 + ], + [ + 467, + "Bronx Tale, A (1993)", + 48 + ], + [ + 468, + "Rudy (1993)", + 64 + ], + [ + 469, + "Short Cuts (1993)", + 67 + ], + [ + 470, + "Tombstone (1993)", + 108 + ], + [ + 471, + "Courage Under Fire (1996)", + 221 + ], + [ + 472, + "Dragonheart (1996)", + 158 + ], + [ + 473, + "James and the Giant Peach (1996)", + 126 + ], + [ + 474, + "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb (1963)", + 194 + ], + [ + 475, + "Trainspotting (1996)", + 250 + ], + [ + 476, + "First Wives Club, The (1996)", + 160 + ], + [ + 477, + "Matilda (1996)", + 95 + ], + [ + 478, + "Philadelphia Story, The (1940)", + 104 + ], + [ + 479, + "Vertigo (1958)", + 179 + ], + [ + 480, + "North by Northwest (1959)", + 179 + ], + [ + 481, + "Apartment, The (1960)", + 63 + ], + [ + 482, + "Some Like It Hot (1959)", + 128 + ], + [ + 483, + "Casablanca (1942)", + 243 + ], + [ + 484, + "Maltese Falcon, The (1941)", + 138 + ], + [ + 485, + "My Fair Lady (1964)", + 125 + ], + [ + 486, + "Sabrina (1954)", + 64 + ], + [ + 487, + "Roman Holiday (1953)", + 68 + ], + [ + 488, + "Sunset Blvd. (1950)", + 65 + ], + [ + 489, + "Notorious (1946)", + 52 + ], + [ + 490, + "To Catch a Thief (1955)", + 50 + ], + [ + 491, + "Adventures of Robin Hood, The (1938)", + 67 + ], + [ + 492, + "East of Eden (1955)", + 59 + ], + [ + 493, + "Thin Man, The (1934)", + 60 + ], + [ + 494, + "His Girl Friday (1940)", + 56 + ], + [ + 495, + "Around the World in 80 Days (1956)", + 59 + ], + [ + 496, + "It's a Wonderful Life (1946)", + 231 + ], + [ + 497, + "Bringing Up Baby (1938)", + 68 + ], + [ + 498, + "African Queen, The (1951)", + 152 + ], + [ + 499, + "Cat on a Hot Tin Roof (1958)", + 62 + ], + [ + 500, + "Fly Away Home (1996)", + 31 + ], + [ + 501, + "Dumbo (1941)", + 123 + ], + [ + 502, + "Bananas (1971)", + 57 + ], + [ + 503, + "Candidate, The (1972)", + 39 + ], + [ + 504, + "Bonnie and Clyde (1967)", + 122 + ], + [ + 505, + "Dial M for Murder (1954)", + 68 + ], + [ + 506, + "Rebel Without a Cause (1955)", + 90 + ], + [ + 507, + "Streetcar Named Desire, A (1951)", + 98 + ], + [ + 508, + "People vs. Larry Flynt, The (1996)", + 215 + ], + [ + 509, + "My Left Foot (1989)", + 121 + ], + [ + 510, + "Magnificent Seven, The (1954)", + 121 + ], + [ + 511, + "Lawrence of Arabia (1962)", + 173 + ], + [ + 512, + "Wings of Desire (1987)", + 57 + ], + [ + 513, + "Third Man, The (1949)", + 72 + ], + [ + 514, + "Annie Hall (1977)", + 180 + ], + [ + 515, + "Boot, Das (1981)", + 201 + ], + [ + 516, + "Local Hero (1983)", + 63 + ], + [ + 517, + "Manhattan (1979)", + 91 + ], + [ + 518, + "Miller's Crossing (1990)", + 89 + ], + [ + 519, + "Treasure of the Sierra Madre, The (1948)", + 80 + ], + [ + 520, + "Great Escape, The (1963)", + 124 + ], + [ + 521, + "Deer Hunter, The (1978)", + 120 + ], + [ + 522, + "Down by Law (1986)", + 35 + ], + [ + 523, + "Cool Hand Luke (1967)", + 164 + ], + [ + 524, + "Great Dictator, The (1940)", + 46 + ], + [ + 525, + "Big Sleep, The (1946)", + 73 + ], + [ + 526, + "Ben-Hur (1959)", + 124 + ], + [ + 527, + "Gandhi (1982)", + 195 + ], + [ + 528, + "Killing Fields, The (1984)", + 121 + ], + [ + 529, + "My Life as a Dog (Mitt liv som hund) (1985)", + 93 + ], + [ + 530, + "Man Who Would Be King, The (1975)", + 80 + ], + [ + 531, + "Shine (1996)", + 129 + ], + [ + 532, + "Kama Sutra: A Tale of Love (1996)", + 22 + ], + [ + 533, + "Daytrippers, The (1996)", + 15 + ], + [ + 534, + "Traveller (1997)", + 13 + ], + [ + 535, + "Addicted to Love (1997)", + 54 + ], + [ + 536, + "Ponette (1996)", + 10 + ], + [ + 537, + "My Own Private Idaho (1991)", + 30 + ], + [ + 538, + "Anastasia (1997)", + 66 + ], + [ + 539, + "Mouse Hunt (1997)", + 44 + ], + [ + 540, + "Money Train (1995)", + 43 + ], + [ + 541, + "Mortal Kombat (1995)", + 49 + ], + [ + 542, + "Pocahontas (1995)", + 51 + ], + [ + 543, + "Misérables, Les (1995)", + 21 + ], + [ + 544, + "Things to Do in Denver when You're Dead (1995)", + 71 + ], + [ + 545, + "Vampire in Brooklyn (1995)", + 12 + ], + [ + 546, + "Broken Arrow (1996)", + 254 + ], + [ + 547, + "Young Poisoner's Handbook, The (1995)", + 41 + ], + [ + 548, + "NeverEnding Story III, The (1994)", + 12 + ], + [ + 549, + "Rob Roy (1995)", + 92 + ], + [ + 550, + "Die Hard: With a Vengeance (1995)", + 151 + ], + [ + 551, + "Lord of Illusions (1995)", + 24 + ], + [ + 552, + "Species (1995)", + 45 + ], + [ + 553, + "Walk in the Clouds, A (1995)", + 63 + ], + [ + 554, + "Waterworld (1995)", + 102 + ], + [ + 555, + "White Man's Burden (1995)", + 10 + ], + [ + 556, + "Wild Bill (1995)", + 12 + ], + [ + 557, + "Farinelli: il castrato (1994)", + 17 + ], + [ + 558, + "Heavenly Creatures (1994)", + 70 + ], + [ + 559, + "Interview with the Vampire (1994)", + 137 + ], + [ + 560, + "Kid in King Arthur's Court, A (1995)", + 22 + ], + [ + 561, + "Mary Shelley's Frankenstein (1994)", + 59 + ], + [ + 562, + "Quick and the Dead, The (1995)", + 48 + ], + [ + 563, + "Stephen King's The Langoliers (1995)", + 29 + ], + [ + 564, + "Tales from the Hood (1995)", + 27 + ], + [ + 565, + "Village of the Damned (1995)", + 22 + ], + [ + 566, + "Clear and Present Danger (1994)", + 179 + ], + [ + 567, + "Wes Craven's New Nightmare (1994)", + 35 + ], + [ + 568, + "Speed (1994)", + 230 + ], + [ + 569, + "Wolf (1994)", + 67 + ], + [ + 570, + "Wyatt Earp (1994)", + 50 + ], + [ + 571, + "Another Stakeout (1993)", + 28 + ], + [ + 572, + "Blown Away (1994)", + 29 + ], + [ + 573, + "Body Snatchers (1993)", + 33 + ], + [ + 574, + "Boxing Helena (1993)", + 15 + ], + [ + 575, + "City Slickers II: The Legend of Curly's Gold (1994)", + 44 + ], + [ + 576, + "Cliffhanger (1993)", + 93 + ], + [ + 577, + "Coneheads (1993)", + 41 + ], + [ + 578, + "Demolition Man (1993)", + 92 + ], + [ + 579, + "Fatal Instinct (1993)", + 19 + ], + [ + 580, + "Englishman Who Went Up a Hill, But Came Down a Mountain, The (1995)", + 32 + ], + [ + 581, + "Kalifornia (1993)", + 59 + ], + [ + 582, + "Piano, The (1993)", + 168 + ], + [ + 583, + "Romeo Is Bleeding (1993)", + 37 + ], + [ + 584, + "Secret Garden, The (1993)", + 79 + ], + [ + 585, + "Son in Law (1993)", + 39 + ], + [ + 586, + "Terminal Velocity (1994)", + 34 + ], + [ + 587, + "Hour of the Pig, The (1993)", + 14 + ], + [ + 588, + "Beauty and the Beast (1991)", + 202 + ], + [ + 589, + "Wild Bunch, The (1969)", + 43 + ], + [ + 590, + "Hellraiser: Bloodline (1996)", + 18 + ], + [ + 591, + "Primal Fear (1996)", + 178 + ], + [ + 592, + "True Crime (1995)", + 9 + ], + [ + 593, + "Stalingrad (1993)", + 12 + ], + [ + 594, + "Heavy (1995)", + 5 + ], + [ + 595, + "Fan, The (1996)", + 64 + ], + [ + 596, + "Hunchback of Notre Dame, The (1996)", + 127 + ], + [ + 597, + "Eraser (1996)", + 206 + ], + [ + 598, + "Big Squeeze, The (1996)", + 4 + ], + [ + 599, + "Police Story 4: Project S (Chao ji ji hua) (1993)", + 1 + ], + [ + 600, + "Daniel Defoe's Robinson Crusoe (1996)", + 2 + ], + [ + 601, + "For Whom the Bell Tolls (1943)", + 20 + ], + [ + 602, + "American in Paris, An (1951)", + 50 + ], + [ + 603, + "Rear Window (1954)", + 209 + ], + [ + 604, + "It Happened One Night (1934)", + 81 + ], + [ + 605, + "Meet Me in St. Louis (1944)", + 31 + ], + [ + 606, + "All About Eve (1950)", + 66 + ], + [ + 607, + "Rebecca (1940)", + 66 + ], + [ + 608, + "Spellbound (1945)", + 30 + ], + [ + 609, + "Father of the Bride (1950)", + 60 + ], + [ + 610, + "Gigi (1958)", + 41 + ], + [ + 611, + "Laura (1944)", + 40 + ], + [ + 612, + "Lost Horizon (1937)", + 34 + ], + [ + 613, + "My Man Godfrey (1936)", + 27 + ], + [ + 614, + "Giant (1956)", + 51 + ], + [ + 615, + "39 Steps, The (1935)", + 59 + ], + [ + 616, + "Night of the Living Dead (1968)", + 64 + ], + [ + 617, + "Blue Angel, The (Blaue Engel, Der) (1930)", + 18 + ], + [ + 618, + "Picnic (1955)", + 18 + ], + [ + 619, + "Extreme Measures (1996)", + 64 + ], + [ + 620, + "Chamber, The (1996)", + 43 + ], + [ + 621, + "Davy Crockett, King of the Wild Frontier (1955)", + 11 + ], + [ + 622, + "Swiss Family Robinson (1960)", + 39 + ], + [ + 623, + "Angels in the Outfield (1994)", + 39 + ], + [ + 624, + "Three Caballeros, The (1945)", + 22 + ], + [ + 625, + "Sword in the Stone, The (1963)", + 82 + ], + [ + 626, + "So Dear to My Heart (1949)", + 4 + ], + [ + 627, + "Robin Hood: Prince of Thieves (1991)", + 75 + ], + [ + 628, + "Sleepers (1996)", + 169 + ], + [ + 629, + "Victor/Victoria (1982)", + 77 + ], + [ + 630, + "Great Race, The (1965)", + 31 + ], + [ + 631, + "Crying Game, The (1992)", + 119 + ], + [ + 632, + "Sophie's Choice (1982)", + 58 + ], + [ + 633, + "Christmas Carol, A (1938)", + 69 + ], + [ + 634, + "Microcosmos: Le peuple de l'herbe (1996)", + 24 + ], + [ + 635, + "Fog, The (1980)", + 23 + ], + [ + 636, + "Escape from New York (1981)", + 91 + ], + [ + 637, + "Howling, The (1981)", + 38 + ], + [ + 638, + "Return of Martin Guerre, The (Retour de Martin Guerre, Le) (1982)", + 44 + ], + [ + 639, + "Tin Drum, The (Blechtrommel, Die) (1979)", + 40 + ], + [ + 640, + "Cook the Thief His Wife & Her Lover, The (1989)", + 82 + ], + [ + 641, + "Paths of Glory (1957)", + 33 + ], + [ + 642, + "Grifters, The (1990)", + 89 + ], + [ + 643, + "The Innocent (1994)", + 4 + ], + [ + 644, + "Thin Blue Line, The (1988)", + 35 + ], + [ + 645, + "Paris Is Burning (1990)", + 27 + ], + [ + 646, + "Once Upon a Time in the West (1969)", + 38 + ], + [ + 647, + "Ran (1985)", + 70 + ], + [ + 648, + "Quiet Man, The (1952)", + 67 + ], + [ + 649, + "Once Upon a Time in America (1984)", + 50 + ], + [ + 650, + "Seventh Seal, The (Sjunde inseglet, Det) (1957)", + 72 + ], + [ + 651, + "Glory (1989)", + 171 + ], + [ + 652, + "Rosencrantz and Guildenstern Are Dead (1990)", + 90 + ], + [ + 653, + "Touch of Evil (1958)", + 34 + ], + [ + 654, + "Chinatown (1974)", + 147 + ], + [ + 655, + "Stand by Me (1986)", + 227 + ], + [ + 656, + "M (1931)", + 44 + ], + [ + 657, + "Manchurian Candidate, The (1962)", + 131 + ], + [ + 658, + "Pump Up the Volume (1990)", + 79 + ], + [ + 659, + "Arsenic and Old Lace (1944)", + 115 + ], + [ + 660, + "Fried Green Tomatoes (1991)", + 153 + ], + [ + 661, + "High Noon (1952)", + 88 + ], + [ + 662, + "Somewhere in Time (1980)", + 82 + ], + [ + 663, + "Being There (1979)", + 116 + ], + [ + 664, + "Paris, Texas (1984)", + 46 + ], + [ + 665, + "Alien 3 (1992)", + 100 + ], + [ + 666, + "Blood For Dracula (Andy Warhol's Dracula) (1974)", + 5 + ], + [ + 667, + "Audrey Rose (1977)", + 12 + ], + [ + 668, + "Blood Beach (1981)", + 6 + ], + [ + 669, + "Body Parts (1991)", + 13 + ], + [ + 670, + "Body Snatchers (1993)", + 36 + ], + [ + 671, + "Bride of Frankenstein (1935)", + 46 + ], + [ + 672, + "Candyman (1992)", + 65 + ], + [ + 673, + "Cape Fear (1962)", + 86 + ], + [ + 674, + "Cat People (1982)", + 48 + ], + [ + 675, + "Nosferatu (Nosferatu, eine Symphonie des Grauens) (1922)", + 54 + ], + [ + 676, + "Crucible, The (1996)", + 77 + ], + [ + 677, + "Fire on the Mountain (1996)", + 1 + ], + [ + 678, + "Volcano (1997)", + 219 + ], + [ + 679, + "Conan the Barbarian (1981)", + 107 + ], + [ + 680, + "Kull the Conqueror (1997)", + 34 + ], + [ + 681, + "Wishmaster (1997)", + 27 + ], + [ + 682, + "I Know What You Did Last Summer (1997)", + 100 + ], + [ + 683, + "Rocket Man (1997)", + 49 + ], + [ + 684, + "In the Line of Fire (1993)", + 169 + ], + [ + 685, + "Executive Decision (1996)", + 157 + ], + [ + 686, + "Perfect World, A (1993)", + 50 + ], + [ + 687, + "McHale's Navy (1997)", + 69 + ], + [ + 688, + "Leave It to Beaver (1997)", + 44 + ], + [ + 689, + "Jackal, The (1997)", + 87 + ], + [ + 690, + "Seven Years in Tibet (1997)", + 155 + ], + [ + 691, + "Dark City (1998)", + 16 + ], + [ + 692, + "American President, The (1995)", + 164 + ], + [ + 693, + "Casino (1995)", + 91 + ], + [ + 694, + "Persuasion (1995)", + 44 + ], + [ + 695, + "Kicking and Screaming (1995)", + 13 + ], + [ + 696, + "City Hall (1996)", + 79 + ], + [ + 697, + "Basketball Diaries, The (1995)", + 40 + ], + [ + 698, + "Browning Version, The (1994)", + 10 + ], + [ + 699, + "Little Women (1994)", + 102 + ], + [ + 700, + "Miami Rhapsody (1995)", + 15 + ], + [ + 701, + "Wonderful, Horrible Life of Leni Riefenstahl, The (1993)", + 10 + ], + [ + 702, + "Barcelona (1994)", + 53 + ], + [ + 703, + "Widows' Peak (1994)", + 19 + ], + [ + 704, + "House of the Spirits, The (1993)", + 24 + ], + [ + 705, + "Singin' in the Rain (1952)", + 137 + ], + [ + 706, + "Bad Moon (1996)", + 6 + ], + [ + 707, + "Enchanted April (1991)", + 70 + ], + [ + 708, + "Sex, Lies, and Videotape (1989)", + 101 + ], + [ + 709, + "Strictly Ballroom (1992)", + 104 + ], + [ + 710, + "Better Off Dead... (1985)", + 79 + ], + [ + 711, + "Substance of Fire, The (1996)", + 1 + ], + [ + 712, + "Tin Men (1987)", + 51 + ], + [ + 713, + "Othello (1995)", + 72 + ], + [ + 714, + "Carrington (1995)", + 13 + ], + [ + 715, + "To Die For (1995)", + 87 + ], + [ + 716, + "Home for the Holidays (1995)", + 58 + ], + [ + 717, + "Juror, The (1996)", + 82 + ], + [ + 718, + "In the Bleak Midwinter (1995)", + 16 + ], + [ + 719, + "Canadian Bacon (1994)", + 29 + ], + [ + 720, + "First Knight (1995)", + 86 + ], + [ + 721, + "Mallrats (1995)", + 54 + ], + [ + 722, + "Nine Months (1995)", + 58 + ], + [ + 723, + "Boys on the Side (1995)", + 34 + ], + [ + 724, + "Circle of Friends (1995)", + 76 + ], + [ + 725, + "Exit to Eden (1994)", + 16 + ], + [ + 726, + "Fluke (1995)", + 14 + ], + [ + 727, + "Immortal Beloved (1994)", + 63 + ], + [ + 728, + "Junior (1994)", + 45 + ], + [ + 729, + "Nell (1994)", + 81 + ], + [ + 730, + "Queen Margot (Reine Margot, La) (1994)", + 24 + ], + [ + 731, + "Corrina, Corrina (1994)", + 39 + ], + [ + 732, + "Dave (1993)", + 180 + ], + [ + 733, + "Go Fish (1994)", + 15 + ], + [ + 734, + "Made in America (1993)", + 27 + ], + [ + 735, + "Philadelphia (1993)", + 137 + ], + [ + 736, + "Shadowlands (1993)", + 78 + ], + [ + 737, + "Sirens (1994)", + 59 + ], + [ + 738, + "Threesome (1994)", + 31 + ], + [ + 739, + "Pretty Woman (1990)", + 164 + ], + [ + 740, + "Jane Eyre (1996)", + 63 + ], + [ + 741, + "Last Supper, The (1995)", + 58 + ], + [ + 742, + "Ransom (1996)", + 267 + ], + [ + 743, + "Crow: City of Angels, The (1996)", + 39 + ], + [ + 744, + "Michael Collins (1996)", + 92 + ], + [ + 745, + "Ruling Class, The (1972)", + 16 + ], + [ + 746, + "Real Genius (1985)", + 119 + ], + [ + 747, + "Benny & Joon (1993)", + 102 + ], + [ + 748, + "Saint, The (1997)", + 316 + ], + [ + 749, + "MatchMaker, The (1997)", + 51 + ], + [ + 750, + "Amistad (1997)", + 124 + ], + [ + 751, + "Tomorrow Never Dies (1997)", + 180 + ], + [ + 752, + "Replacement Killers, The (1998)", + 39 + ], + [ + 753, + "Burnt By the Sun (1994)", + 24 + ], + [ + 754, + "Red Corner (1997)", + 57 + ], + [ + 755, + "Jumanji (1995)", + 96 + ], + [ + 756, + "Father of the Bride Part II (1995)", + 128 + ], + [ + 757, + "Across the Sea of Time (1995)", + 4 + ], + [ + 758, + "Lawnmower Man 2: Beyond Cyberspace (1996)", + 21 + ], + [ + 759, + "Fair Game (1995)", + 11 + ], + [ + 760, + "Screamers (1995)", + 46 + ], + [ + 761, + "Nick of Time (1995)", + 44 + ], + [ + 762, + "Beautiful Girls (1996)", + 115 + ], + [ + 763, + "Happy Gilmore (1996)", + 149 + ], + [ + 764, + "If Lucy Fell (1996)", + 29 + ], + [ + 765, + "Boomerang (1992)", + 32 + ], + [ + 766, + "Man of the Year (1995)", + 9 + ], + [ + 767, + "Addiction, The (1995)", + 11 + ], + [ + 768, + "Casper (1995)", + 52 + ], + [ + 769, + "Congo (1995)", + 42 + ], + [ + 770, + "Devil in a Blue Dress (1995)", + 57 + ], + [ + 771, + "Johnny Mnemonic (1995)", + 41 + ], + [ + 772, + "Kids (1995)", + 49 + ], + [ + 773, + "Mute Witness (1994)", + 17 + ], + [ + 774, + "Prophecy, The (1995)", + 32 + ], + [ + 775, + "Something to Talk About (1995)", + 26 + ], + [ + 776, + "Three Wishes (1995)", + 9 + ], + [ + 777, + "Castle Freak (1995)", + 4 + ], + [ + 778, + "Don Juan DeMarco (1995)", + 76 + ], + [ + 779, + "Drop Zone (1994)", + 31 + ], + [ + 780, + "Dumb & Dumber (1994)", + 69 + ], + [ + 781, + "French Kiss (1995)", + 84 + ], + [ + 782, + "Little Odessa (1994)", + 10 + ], + [ + 783, + "Milk Money (1994)", + 37 + ], + [ + 784, + "Beyond Bedlam (1993)", + 2 + ], + [ + 785, + "Only You (1994)", + 39 + ], + [ + 786, + "Perez Family, The (1995)", + 14 + ], + [ + 787, + "Roommates (1995)", + 13 + ], + [ + 788, + "Relative Fear (1994)", + 3 + ], + [ + 789, + "Swimming with Sharks (1995)", + 47 + ], + [ + 790, + "Tommy Boy (1995)", + 66 + ], + [ + 791, + "Baby-Sitters Club, The (1995)", + 10 + ], + [ + 792, + "Bullets Over Broadway (1994)", + 86 + ], + [ + 793, + "Crooklyn (1994)", + 10 + ], + [ + 794, + "It Could Happen to You (1994)", + 46 + ], + [ + 795, + "Richie Rich (1994)", + 21 + ], + [ + 796, + "Speechless (1994)", + 36 + ], + [ + 797, + "Timecop (1994)", + 31 + ], + [ + 798, + "Bad Company (1995)", + 9 + ], + [ + 799, + "Boys Life (1995)", + 5 + ], + [ + 800, + "In the Mouth of Madness (1995)", + 26 + ], + [ + 801, + "Air Up There, The (1994)", + 16 + ], + [ + 802, + "Hard Target (1993)", + 40 + ], + [ + 803, + "Heaven & Earth (1993)", + 9 + ], + [ + 804, + "Jimmy Hollywood (1994)", + 8 + ], + [ + 805, + "Manhattan Murder Mystery (1993)", + 27 + ], + [ + 806, + "Menace II Society (1993)", + 50 + ], + [ + 807, + "Poetic Justice (1993)", + 9 + ], + [ + 808, + "Program, The (1993)", + 31 + ], + [ + 809, + "Rising Sun (1993)", + 43 + ], + [ + 810, + "Shadow, The (1994)", + 45 + ], + [ + 811, + "Thirty-Two Short Films About Glenn Gould (1993)", + 18 + ], + [ + 812, + "Andre (1994)", + 18 + ], + [ + 813, + "Celluloid Closet, The (1995)", + 56 + ], + [ + 814, + "Great Day in Harlem, A (1994)", + 1 + ], + [ + 815, + "One Fine Day (1996)", + 112 + ], + [ + 816, + "Candyman: Farewell to the Flesh (1995)", + 21 + ], + [ + 817, + "Frisk (1995)", + 3 + ], + [ + 818, + "Girl 6 (1996)", + 25 + ], + [ + 819, + "Eddie (1996)", + 40 + ], + [ + 820, + "Space Jam (1996)", + 93 + ], + [ + 821, + "Mrs. Winterbourne (1996)", + 22 + ], + [ + 822, + "Faces (1968)", + 4 + ], + [ + 823, + "Mulholland Falls (1996)", + 82 + ], + [ + 824, + "Great White Hype, The (1996)", + 49 + ], + [ + 825, + "Arrival, The (1996)", + 83 + ], + [ + 826, + "Phantom, The (1996)", + 80 + ], + [ + 827, + "Daylight (1996)", + 57 + ], + [ + 828, + "Alaska (1996)", + 13 + ], + [ + 829, + "Fled (1996)", + 34 + ], + [ + 830, + "Power 98 (1995)", + 1 + ], + [ + 831, + "Escape from L.A. (1996)", + 91 + ], + [ + 832, + "Bogus (1996)", + 22 + ], + [ + 833, + "Bulletproof (1996)", + 49 + ], + [ + 834, + "Halloween: The Curse of Michael Myers (1995)", + 25 + ], + [ + 835, + "Gay Divorcee, The (1934)", + 15 + ], + [ + 836, + "Ninotchka (1939)", + 26 + ], + [ + 837, + "Meet John Doe (1941)", + 25 + ], + [ + 838, + "In the Line of Duty 2 (1987)", + 4 + ], + [ + 839, + "Loch Ness (1995)", + 4 + ], + [ + 840, + "Last Man Standing (1996)", + 53 + ], + [ + 841, + "Glimmer Man, The (1996)", + 48 + ], + [ + 842, + "Pollyanna (1960)", + 27 + ], + [ + 843, + "Shaggy Dog, The (1959)", + 30 + ], + [ + 844, + "Freeway (1996)", + 42 + ], + [ + 845, + "That Thing You Do! (1996)", + 176 + ], + [ + 846, + "To Gillian on Her 37th Birthday (1996)", + 44 + ], + [ + 847, + "Looking for Richard (1996)", + 55 + ], + [ + 848, + "Murder, My Sweet (1944)", + 9 + ], + [ + 849, + "Days of Thunder (1990)", + 53 + ], + [ + 850, + "Perfect Candidate, A (1996)", + 4 + ], + [ + 851, + "Two or Three Things I Know About Her (1966)", + 4 + ], + [ + 852, + "Bloody Child, The (1996)", + 1 + ], + [ + 853, + "Braindead (1992)", + 14 + ], + [ + 854, + "Bad Taste (1987)", + 16 + ], + [ + 855, + "Diva (1981)", + 66 + ], + [ + 856, + "Night on Earth (1991)", + 36 + ], + [ + 857, + "Paris Was a Woman (1995)", + 1 + ], + [ + 858, + "Amityville: Dollhouse (1996)", + 3 + ], + [ + 859, + "April Fool's Day (1986)", + 15 + ], + [ + 860, + "Believers, The (1987)", + 16 + ], + [ + 861, + "Nosferatu a Venezia (1986)", + 3 + ], + [ + 862, + "Jingle All the Way (1996)", + 18 + ], + [ + 863, + "Garden of Finzi-Contini, The (Giardino dei Finzi-Contini, Il) (1970)", + 24 + ], + [ + 864, + "My Fellow Americans (1996)", + 86 + ], + [ + 865, + "Ice Storm, The (1997)", + 21 + ], + [ + 866, + "Michael (1996)", + 119 + ], + [ + 867, + "Whole Wide World, The (1996)", + 6 + ], + [ + 868, + "Hearts and Minds (1996)", + 5 + ], + [ + 869, + "Fools Rush In (1997)", + 24 + ], + [ + 870, + "Touch (1997)", + 9 + ], + [ + 871, + "Vegas Vacation (1997)", + 75 + ], + [ + 872, + "Love Jones (1997)", + 42 + ], + [ + 873, + "Picture Perfect (1997)", + 81 + ], + [ + 874, + "Career Girls (1997)", + 39 + ], + [ + 875, + "She's So Lovely (1997)", + 53 + ], + [ + 876, + "Money Talks (1997)", + 47 + ], + [ + 877, + "Excess Baggage (1997)", + 52 + ], + [ + 878, + "That Darn Cat! (1997)", + 33 + ], + [ + 879, + "Peacemaker, The (1997)", + 136 + ], + [ + 880, + "Soul Food (1997)", + 59 + ], + [ + 881, + "Money Talks (1997)", + 45 + ], + [ + 882, + "Washington Square (1997)", + 34 + ], + [ + 883, + "Telling Lies in America (1997)", + 13 + ], + [ + 884, + "Year of the Horse (1997)", + 7 + ], + [ + 885, + "Phantoms (1998)", + 13 + ], + [ + 886, + "Life Less Ordinary, A (1997)", + 53 + ], + [ + 887, + "Eve's Bayou (1997)", + 64 + ], + [ + 888, + "One Night Stand (1997)", + 15 + ], + [ + 889, + "Tango Lesson, The (1997)", + 13 + ], + [ + 890, + "Mortal Kombat: Annihilation (1997)", + 43 + ], + [ + 891, + "Bent (1997)", + 6 + ], + [ + 892, + "Flubber (1997)", + 53 + ], + [ + 893, + "For Richer or Poorer (1997)", + 14 + ], + [ + 894, + "Home Alone 3 (1997)", + 19 + ], + [ + 895, + "Scream 2 (1997)", + 106 + ], + [ + 896, + "Sweet Hereafter, The (1997)", + 44 + ], + [ + 897, + "Time Tracers (1995)", + 2 + ], + [ + 898, + "Postman, The (1997)", + 58 + ], + [ + 899, + "Winter Guest, The (1997)", + 9 + ], + [ + 900, + "Kundun (1997)", + 42 + ], + [ + 901, + "Mr. Magoo (1997)", + 12 + ], + [ + 902, + "Big Lebowski, The (1998)", + 42 + ], + [ + 903, + "Afterglow (1997)", + 18 + ], + [ + 904, + "Ma vie en rose (My Life in Pink) (1997)", + 20 + ], + [ + 905, + "Great Expectations (1998)", + 27 + ], + [ + 906, + "Oscar & Lucinda (1997)", + 21 + ], + [ + 907, + "Vermin (1998)", + 2 + ], + [ + 908, + "Half Baked (1998)", + 20 + ], + [ + 909, + "Dangerous Beauty (1998)", + 13 + ], + [ + 910, + "Nil By Mouth (1997)", + 4 + ], + [ + 911, + "Twilight (1998)", + 4 + ], + [ + 912, + "U.S. Marshalls (1998)", + 9 + ], + [ + 913, + "Love and Death on Long Island (1997)", + 2 + ], + [ + 914, + "Wild Things (1998)", + 11 + ], + [ + 915, + "Primary Colors (1998)", + 13 + ], + [ + 916, + "Lost in Space (1998)", + 18 + ], + [ + 917, + "Mercury Rising (1998)", + 7 + ], + [ + 918, + "City of Angels (1998)", + 8 + ], + [ + 919, + "City of Lost Children, The (1995)", + 96 + ], + [ + 920, + "Two Bits (1995)", + 5 + ], + [ + 921, + "Farewell My Concubine (1993)", + 46 + ], + [ + 922, + "Dead Man (1995)", + 34 + ], + [ + 923, + "Raise the Red Lantern (1991)", + 58 + ], + [ + 924, + "White Squall (1996)", + 85 + ], + [ + 925, + "Unforgettable (1996)", + 34 + ], + [ + 926, + "Down Periscope (1996)", + 101 + ], + [ + 927, + "Flower of My Secret, The (Flor de mi secreto, La) (1995)", + 6 + ], + [ + 928, + "Craft, The (1996)", + 104 + ], + [ + 929, + "Harriet the Spy (1996)", + 40 + ], + [ + 930, + "Chain Reaction (1996)", + 80 + ], + [ + 931, + "Island of Dr. Moreau, The (1996)", + 57 + ], + [ + 932, + "First Kid (1996)", + 40 + ], + [ + 933, + "Funeral, The (1996)", + 21 + ], + [ + 934, + "Preacher's Wife, The (1996)", + 68 + ], + [ + 935, + "Paradise Road (1997)", + 7 + ], + [ + 936, + "Brassed Off (1996)", + 32 + ], + [ + 937, + "Thousand Acres, A (1997)", + 37 + ], + [ + 938, + "Smile Like Yours, A (1997)", + 25 + ], + [ + 939, + "Murder in the First (1995)", + 60 + ], + [ + 940, + "Airheads (1994)", + 32 + ], + [ + 941, + "With Honors (1994)", + 46 + ], + [ + 942, + "What's Love Got to Do with It (1993)", + 45 + ], + [ + 943, + "Killing Zoe (1994)", + 40 + ], + [ + 944, + "Renaissance Man (1994)", + 43 + ], + [ + 945, + "Charade (1963)", + 40 + ], + [ + 946, + "Fox and the Hound, The (1981)", + 61 + ], + [ + 947, + "Big Blue, The (Grand bleu, Le) (1988)", + 17 + ], + [ + 948, + "Booty Call (1997)", + 48 + ], + [ + 949, + "How to Make an American Quilt (1995)", + 71 + ], + [ + 950, + "Georgia (1995)", + 30 + ], + [ + 951, + "Indian in the Cupboard, The (1995)", + 39 + ], + [ + 952, + "Blue in the Face (1995)", + 45 + ], + [ + 953, + "Unstrung Heroes (1995)", + 22 + ], + [ + 954, + "Unzipped (1995)", + 11 + ], + [ + 955, + "Before Sunrise (1995)", + 49 + ], + [ + 956, + "Nobody's Fool (1994)", + 46 + ], + [ + 957, + "Pushing Hands (1992)", + 2 + ], + [ + 958, + "To Live (Huozhe) (1994)", + 14 + ], + [ + 959, + "Dazed and Confused (1993)", + 64 + ], + [ + 960, + "Naked (1993)", + 25 + ], + [ + 961, + "Orlando (1993)", + 34 + ], + [ + 962, + "Ruby in Paradise (1993)", + 23 + ], + [ + 963, + "Some Folks Call It a Sling Blade (1993)", + 41 + ], + [ + 964, + "Month by the Lake, A (1995)", + 9 + ], + [ + 965, + "Funny Face (1957)", + 21 + ], + [ + 966, + "Affair to Remember, An (1957)", + 26 + ], + [ + 967, + "Little Lord Fauntleroy (1936)", + 12 + ], + [ + 968, + "Inspector General, The (1949)", + 18 + ], + [ + 969, + "Winnie the Pooh and the Blustery Day (1968)", + 75 + ], + [ + 970, + "Hear My Song (1991)", + 8 + ], + [ + 971, + "Mediterraneo (1991)", + 34 + ], + [ + 972, + "Passion Fish (1992)", + 28 + ], + [ + 973, + "Grateful Dead (1995)", + 4 + ], + [ + 974, + "Eye for an Eye (1996)", + 32 + ], + [ + 975, + "Fear (1996)", + 44 + ], + [ + 976, + "Solo (1996)", + 12 + ], + [ + 977, + "Substitute, The (1996)", + 49 + ], + [ + 978, + "Heaven's Prisoners (1996)", + 27 + ], + [ + 979, + "Trigger Effect, The (1996)", + 35 + ], + [ + 980, + "Mother Night (1996)", + 22 + ], + [ + 981, + "Dangerous Ground (1997)", + 8 + ], + [ + 982, + "Maximum Risk (1996)", + 20 + ], + [ + 983, + "Rich Man's Wife, The (1996)", + 15 + ], + [ + 984, + "Shadow Conspiracy (1997)", + 44 + ], + [ + 985, + "Blood & Wine (1997)", + 22 + ], + [ + 986, + "Turbulence (1997)", + 23 + ], + [ + 987, + "Underworld (1997)", + 4 + ], + [ + 988, + "Beautician and the Beast, The (1997)", + 86 + ], + [ + 989, + "Cats Don't Dance (1997)", + 32 + ], + [ + 990, + "Anna Karenina (1997)", + 33 + ], + [ + 991, + "Keys to Tulsa (1997)", + 25 + ], + [ + 992, + "Head Above Water (1996)", + 4 + ], + [ + 993, + "Hercules (1997)", + 66 + ], + [ + 994, + "Last Time I Committed Suicide, The (1997)", + 7 + ], + [ + 995, + "Kiss Me, Guido (1997)", + 31 + ], + [ + 996, + "Big Green, The (1995)", + 14 + ], + [ + 997, + "Stuart Saves His Family (1995)", + 16 + ], + [ + 998, + "Cabin Boy (1994)", + 16 + ], + [ + 999, + "Clean Slate (1994)", + 10 + ], + [ + 1000, + "Lightning Jack (1994)", + 10 + ], + [ + 1001, + "Stupids, The (1996)", + 17 + ], + [ + 1002, + "Pest, The (1997)", + 8 + ], + [ + 1003, + "That Darn Cat! (1997)", + 8 + ], + [ + 1004, + "Geronimo: An American Legend (1993)", + 9 + ], + [ + 1005, + "Double vie de Véronique, La (Double Life of Veronique, The) (1991)", + 22 + ], + [ + 1006, + "Until the End of the World (Bis ans Ende der Welt) (1991)", + 23 + ], + [ + 1007, + "Waiting for Guffman (1996)", + 47 + ], + [ + 1008, + "I Shot Andy Warhol (1996)", + 37 + ], + [ + 1009, + "Stealing Beauty (1996)", + 64 + ], + [ + 1010, + "Basquiat (1996)", + 44 + ], + [ + 1011, + "2 Days in the Valley (1996)", + 93 + ], + [ + 1012, + "Private Parts (1997)", + 100 + ], + [ + 1013, + "Anaconda (1997)", + 38 + ], + [ + 1014, + "Romy and Michele's High School Reunion (1997)", + 98 + ], + [ + 1015, + "Shiloh (1997)", + 12 + ], + [ + 1016, + "Con Air (1997)", + 137 + ], + [ + 1017, + "Trees Lounge (1996)", + 50 + ], + [ + 1018, + "Tie Me Up! Tie Me Down! (1990)", + 32 + ], + [ + 1019, + "Die xue shuang xiong (Killer, The) (1989)", + 31 + ], + [ + 1020, + "Gaslight (1944)", + 35 + ], + [ + 1021, + "8 1/2 (1963)", + 38 + ], + [ + 1022, + "Fast, Cheap & Out of Control (1997)", + 32 + ], + [ + 1023, + "Fathers' Day (1997)", + 31 + ], + [ + 1024, + "Mrs. Dalloway (1997)", + 15 + ], + [ + 1025, + "Fire Down Below (1997)", + 44 + ], + [ + 1026, + "Lay of the Land, The (1997)", + 4 + ], + [ + 1027, + "Shooter, The (1995)", + 3 + ], + [ + 1028, + "Grumpier Old Men (1995)", + 148 + ], + [ + 1029, + "Jury Duty (1995)", + 14 + ], + [ + 1030, + "Beverly Hillbillies, The (1993)", + 20 + ], + [ + 1031, + "Lassie (1994)", + 7 + ], + [ + 1032, + "Little Big League (1994)", + 16 + ], + [ + 1033, + "Homeward Bound II: Lost in San Francisco (1996)", + 32 + ], + [ + 1034, + "Quest, The (1996)", + 27 + ], + [ + 1035, + "Cool Runnings (1993)", + 68 + ], + [ + 1036, + "Drop Dead Fred (1991)", + 24 + ], + [ + 1037, + "Grease 2 (1982)", + 24 + ], + [ + 1038, + "Switchback (1997)", + 17 + ], + [ + 1039, + "Hamlet (1996)", + 90 + ], + [ + 1040, + "Two if by Sea (1996)", + 25 + ], + [ + 1041, + "Forget Paris (1995)", + 62 + ], + [ + 1042, + "Just Cause (1995)", + 28 + ], + [ + 1043, + "Rent-a-Kid (1995)", + 8 + ], + [ + 1044, + "Paper, The (1994)", + 40 + ], + [ + 1045, + "Fearless (1993)", + 25 + ], + [ + 1046, + "Malice (1993)", + 46 + ], + [ + 1047, + "Multiplicity (1996)", + 134 + ], + [ + 1048, + "She's the One (1996)", + 73 + ], + [ + 1049, + "House Arrest (1996)", + 25 + ], + [ + 1050, + "Ghost and Mrs. Muir, The (1947)", + 43 + ], + [ + 1051, + "Associate, The (1996)", + 41 + ], + [ + 1052, + "Dracula: Dead and Loving It (1995)", + 25 + ], + [ + 1053, + "Now and Then (1995)", + 24 + ], + [ + 1054, + "Mr. Wrong (1996)", + 23 + ], + [ + 1055, + "Simple Twist of Fate, A (1994)", + 10 + ], + [ + 1056, + "Cronos (1992)", + 10 + ], + [ + 1057, + "Pallbearer, The (1996)", + 22 + ], + [ + 1058, + "War, The (1994)", + 15 + ], + [ + 1059, + "Don't Be a Menace to South Central While Drinking Your Juice in the Hood (1996)", + 35 + ], + [ + 1060, + "Adventures of Pinocchio, The (1996)", + 39 + ], + [ + 1061, + "Evening Star, The (1996)", + 29 + ], + [ + 1062, + "Four Days in September (1997)", + 12 + ], + [ + 1063, + "Little Princess, A (1995)", + 41 + ], + [ + 1064, + "Crossfire (1947)", + 4 + ], + [ + 1065, + "Koyaanisqatsi (1983)", + 53 + ], + [ + 1066, + "Balto (1995)", + 16 + ], + [ + 1067, + "Bottle Rocket (1996)", + 44 + ], + [ + 1068, + "Star Maker, The (Uomo delle stelle, L') (1995)", + 12 + ], + [ + 1069, + "Amateur (1994)", + 18 + ], + [ + 1070, + "Living in Oblivion (1995)", + 27 + ], + [ + 1071, + "Party Girl (1995)", + 16 + ], + [ + 1072, + "Pyromaniac's Love Story, A (1995)", + 7 + ], + [ + 1073, + "Shallow Grave (1994)", + 66 + ], + [ + 1074, + "Reality Bites (1994)", + 77 + ], + [ + 1075, + "Man of No Importance, A (1994)", + 7 + ], + [ + 1076, + "Pagemaster, The (1994)", + 12 + ], + [ + 1077, + "Love and a .45 (1994)", + 8 + ], + [ + 1078, + "Oliver & Company (1988)", + 22 + ], + [ + 1079, + "Joe's Apartment (1996)", + 45 + ], + [ + 1080, + "Celestial Clockwork (1994)", + 2 + ], + [ + 1081, + "Curdled (1996)", + 8 + ], + [ + 1082, + "Female Perversions (1996)", + 8 + ], + [ + 1083, + "Albino Alligator (1996)", + 6 + ], + [ + 1084, + "Anne Frank Remembered (1995)", + 21 + ], + [ + 1085, + "Carried Away (1996)", + 11 + ], + [ + 1086, + "It's My Party (1995)", + 21 + ], + [ + 1087, + "Bloodsport 2 (1995)", + 10 + ], + [ + 1088, + "Double Team (1997)", + 13 + ], + [ + 1089, + "Speed 2: Cruise Control (1997)", + 38 + ], + [ + 1090, + "Sliver (1993)", + 37 + ], + [ + 1091, + "Pete's Dragon (1977)", + 43 + ], + [ + 1092, + "Dear God (1996)", + 12 + ], + [ + 1093, + "Live Nude Girls (1995)", + 23 + ], + [ + 1094, + "Thin Line Between Love and Hate, A (1996)", + 12 + ], + [ + 1095, + "High School High (1996)", + 29 + ], + [ + 1096, + "Commandments (1997)", + 3 + ], + [ + 1097, + "Hate (Haine, La) (1995)", + 18 + ], + [ + 1098, + "Flirting With Disaster (1996)", + 42 + ], + [ + 1099, + "Red Firecracker, Green Firecracker (1994)", + 13 + ], + [ + 1100, + "What Happened Was... (1994)", + 8 + ], + [ + 1101, + "Six Degrees of Separation (1993)", + 74 + ], + [ + 1102, + "Two Much (1996)", + 7 + ], + [ + 1103, + "Trust (1990)", + 19 + ], + [ + 1104, + "C'est arrivé près de chez vous (1992)", + 4 + ], + [ + 1105, + "Firestorm (1998)", + 18 + ], + [ + 1106, + "Newton Boys, The (1998)", + 4 + ], + [ + 1107, + "Beyond Rangoon (1995)", + 18 + ], + [ + 1108, + "Feast of July (1995)", + 5 + ], + [ + 1109, + "Death and the Maiden (1994)", + 28 + ], + [ + 1110, + "Tank Girl (1995)", + 41 + ], + [ + 1111, + "Double Happiness (1994)", + 7 + ], + [ + 1112, + "Cobb (1994)", + 15 + ], + [ + 1113, + "Mrs. Parker and the Vicious Circle (1994)", + 22 + ], + [ + 1114, + "Faithful (1996)", + 10 + ], + [ + 1115, + "Twelfth Night (1996)", + 29 + ], + [ + 1116, + "Mark of Zorro, The (1940)", + 13 + ], + [ + 1117, + "Surviving Picasso (1996)", + 19 + ], + [ + 1118, + "Up in Smoke (1978)", + 47 + ], + [ + 1119, + "Some Kind of Wonderful (1987)", + 59 + ], + [ + 1120, + "I'm Not Rappaport (1996)", + 17 + ], + [ + 1121, + "Umbrellas of Cherbourg, The (Parapluies de Cherbourg, Les) (1964)", + 21 + ], + [ + 1122, + "They Made Me a Criminal (1939)", + 1 + ], + [ + 1123, + "Last Time I Saw Paris, The (1954)", + 3 + ], + [ + 1124, + "Farewell to Arms, A (1932)", + 12 + ], + [ + 1125, + "Innocents, The (1961)", + 4 + ], + [ + 1126, + "Old Man and the Sea, The (1958)", + 32 + ], + [ + 1127, + "Truman Show, The (1998)", + 11 + ], + [ + 1128, + "Heidi Fleiss: Hollywood Madam (1995) ", + 13 + ], + [ + 1129, + "Chungking Express (1994)", + 28 + ], + [ + 1130, + "Jupiter's Wife (1994)", + 1 + ], + [ + 1131, + "Safe (1995)", + 13 + ], + [ + 1132, + "Feeling Minnesota (1996)", + 32 + ], + [ + 1133, + "Escape to Witch Mountain (1975)", + 30 + ], + [ + 1134, + "Get on the Bus (1996)", + 38 + ], + [ + 1135, + "Doors, The (1991)", + 46 + ], + [ + 1136, + "Ghosts of Mississippi (1996)", + 29 + ], + [ + 1137, + "Beautiful Thing (1996)", + 29 + ], + [ + 1138, + "Best Men (1997)", + 5 + ], + [ + 1139, + "Hackers (1995)", + 33 + ], + [ + 1140, + "Road to Wellville, The (1994)", + 17 + ], + [ + 1141, + "War Room, The (1993)", + 9 + ], + [ + 1142, + "When We Were Kings (1996)", + 44 + ], + [ + 1143, + "Hard Eight (1996)", + 15 + ], + [ + 1144, + "Quiet Room, The (1996)", + 3 + ], + [ + 1145, + "Blue Chips (1994)", + 9 + ], + [ + 1146, + "Calendar Girl (1993)", + 3 + ], + [ + 1147, + "My Family (1995)", + 21 + ], + [ + 1148, + "Tom & Viv (1994)", + 9 + ], + [ + 1149, + "Walkabout (1971)", + 26 + ], + [ + 1150, + "Last Dance (1996)", + 9 + ], + [ + 1151, + "Original Gangstas (1996)", + 7 + ], + [ + 1152, + "In Love and War (1996)", + 28 + ], + [ + 1153, + "Backbeat (1993)", + 19 + ], + [ + 1154, + "Alphaville (1965)", + 12 + ], + [ + 1155, + "Rendezvous in Paris (Rendez-vous de Paris, Les) (1995)", + 3 + ], + [ + 1156, + "Cyclo (1995)", + 1 + ], + [ + 1157, + "Relic, The (1997)", + 25 + ], + [ + 1158, + "Fille seule, La (A Single Girl) (1995)", + 4 + ], + [ + 1159, + "Stalker (1979)", + 11 + ], + [ + 1160, + "Love! Valour! Compassion! (1997)", + 26 + ], + [ + 1161, + "Palookaville (1996)", + 13 + ], + [ + 1162, + "Phat Beach (1996)", + 5 + ], + [ + 1163, + "Portrait of a Lady, The (1996)", + 25 + ], + [ + 1164, + "Zeus and Roxanne (1997)", + 6 + ], + [ + 1165, + "Big Bully (1996)", + 14 + ], + [ + 1166, + "Love & Human Remains (1993)", + 12 + ], + [ + 1167, + "Sum of Us, The (1994)", + 11 + ], + [ + 1168, + "Little Buddha (1993)", + 22 + ], + [ + 1169, + "Fresh (1994)", + 10 + ], + [ + 1170, + "Spanking the Monkey (1994)", + 27 + ], + [ + 1171, + "Wild Reeds (1994)", + 14 + ], + [ + 1172, + "Women, The (1939)", + 15 + ], + [ + 1173, + "Bliss (1997)", + 7 + ], + [ + 1174, + "Caught (1996)", + 8 + ], + [ + 1175, + "Hugo Pool (1997)", + 5 + ], + [ + 1176, + "Welcome To Sarajevo (1997)", + 22 + ], + [ + 1177, + "Dunston Checks In (1996)", + 7 + ], + [ + 1178, + "Major Payne (1994)", + 19 + ], + [ + 1179, + "Man of the House (1995)", + 9 + ], + [ + 1180, + "I Love Trouble (1994)", + 10 + ], + [ + 1181, + "Low Down Dirty Shame, A (1994)", + 10 + ], + [ + 1182, + "Cops and Robbersons (1994)", + 13 + ], + [ + 1183, + "Cowboy Way, The (1994)", + 19 + ], + [ + 1184, + "Endless Summer 2, The (1994)", + 10 + ], + [ + 1185, + "In the Army Now (1994)", + 18 + ], + [ + 1186, + "Inkwell, The (1994)", + 3 + ], + [ + 1187, + "Switchblade Sisters (1975)", + 13 + ], + [ + 1188, + "Young Guns II (1990)", + 44 + ], + [ + 1189, + "Prefontaine (1997)", + 3 + ], + [ + 1190, + "That Old Feeling (1997)", + 11 + ], + [ + 1191, + "Letter From Death Row, A (1998)", + 3 + ], + [ + 1192, + "Boys of St. Vincent, The (1993)", + 13 + ], + [ + 1193, + "Before the Rain (Pred dozhdot) (1994)", + 10 + ], + [ + 1194, + "Once Were Warriors (1994)", + 31 + ], + [ + 1195, + "Strawberry and Chocolate (Fresa y chocolate) (1993)", + 11 + ], + [ + 1196, + "Savage Nights (Nuits fauves, Les) (1992)", + 3 + ], + [ + 1197, + "Family Thing, A (1996)", + 45 + ], + [ + 1198, + "Purple Noon (1960)", + 7 + ], + [ + 1199, + "Cemetery Man (Dellamorte Dellamore) (1994)", + 23 + ], + [ + 1200, + "Kim (1950)", + 7 + ], + [ + 1201, + "Marlene Dietrich: Shadow and Light (1996) ", + 1 + ], + [ + 1202, + "Maybe, Maybe Not (Bewegte Mann, Der) (1994)", + 8 + ], + [ + 1203, + "Top Hat (1935)", + 21 + ], + [ + 1204, + "To Be or Not to Be (1942)", + 18 + ], + [ + 1205, + "Secret Agent, The (1996)", + 6 + ], + [ + 1206, + "Amos & Andrew (1993)", + 19 + ], + [ + 1207, + "Jade (1995)", + 17 + ], + [ + 1208, + "Kiss of Death (1995)", + 20 + ], + [ + 1209, + "Mixed Nuts (1994)", + 15 + ], + [ + 1210, + "Virtuosity (1995)", + 38 + ], + [ + 1211, + "Blue Sky (1994)", + 12 + ], + [ + 1212, + "Flesh and Bone (1993)", + 6 + ], + [ + 1213, + "Guilty as Sin (1993)", + 6 + ], + [ + 1214, + "In the Realm of the Senses (Ai no corrida) (1976)", + 9 + ], + [ + 1215, + "Barb Wire (1996)", + 30 + ], + [ + 1216, + "Kissed (1996)", + 6 + ], + [ + 1217, + "Assassins (1995)", + 39 + ], + [ + 1218, + "Friday (1995)", + 26 + ], + [ + 1219, + "Goofy Movie, A (1995)", + 20 + ], + [ + 1220, + "Higher Learning (1995)", + 30 + ], + [ + 1221, + "When a Man Loves a Woman (1994)", + 39 + ], + [ + 1222, + "Judgment Night (1993)", + 25 + ], + [ + 1223, + "King of the Hill (1993)", + 4 + ], + [ + 1224, + "Scout, The (1994)", + 12 + ], + [ + 1225, + "Angus (1995)", + 14 + ], + [ + 1226, + "Night Falls on Manhattan (1997)", + 32 + ], + [ + 1227, + "Awfully Big Adventure, An (1995)", + 8 + ], + [ + 1228, + "Under Siege 2: Dark Territory (1995)", + 48 + ], + [ + 1229, + "Poison Ivy II (1995)", + 13 + ], + [ + 1230, + "Ready to Wear (Pret-A-Porter) (1994)", + 18 + ], + [ + 1231, + "Marked for Death (1990)", + 22 + ], + [ + 1232, + "Madonna: Truth or Dare (1991)", + 17 + ], + [ + 1233, + "Nénette et Boni (1996)", + 6 + ], + [ + 1234, + "Chairman of the Board (1998)", + 8 + ], + [ + 1235, + "Big Bang Theory, The (1994)", + 1 + ], + [ + 1236, + "Other Voices, Other Rooms (1997)", + 1 + ], + [ + 1237, + "Twisted (1996)", + 6 + ], + [ + 1238, + "Full Speed (1996)", + 8 + ], + [ + 1239, + "Cutthroat Island (1995)", + 18 + ], + [ + 1240, + "Ghost in the Shell (Kokaku kidotai) (1995)", + 26 + ], + [ + 1241, + "Van, The (1996)", + 6 + ], + [ + 1242, + "Old Lady Who Walked in the Sea, The (Vieille qui marchait dans la mer, La) (1991)", + 5 + ], + [ + 1243, + "Night Flier (1997)", + 7 + ], + [ + 1244, + "Metro (1997)", + 36 + ], + [ + 1245, + "Gridlock'd (1997)", + 19 + ], + [ + 1246, + "Bushwhacked (1995)", + 7 + ], + [ + 1247, + "Bad Girls (1994)", + 6 + ], + [ + 1248, + "Blink (1994)", + 19 + ], + [ + 1249, + "For Love or Money (1993)", + 12 + ], + [ + 1250, + "Best of the Best 3: No Turning Back (1995)", + 6 + ], + [ + 1251, + "A Chef in Love (1996)", + 8 + ], + [ + 1252, + "Contempt (Mépris, Le) (1963)", + 9 + ], + [ + 1253, + "Tie That Binds, The (1995)", + 7 + ], + [ + 1254, + "Gone Fishin' (1997)", + 11 + ], + [ + 1255, + "Broken English (1996)", + 8 + ], + [ + 1256, + "Designated Mourner, The (1997)", + 3 + ], + [ + 1257, + "Designated Mourner, The (1997)", + 4 + ], + [ + 1258, + "Trial and Error (1997)", + 23 + ], + [ + 1259, + "Pie in the Sky (1995)", + 4 + ], + [ + 1260, + "Total Eclipse (1995)", + 4 + ], + [ + 1261, + "Run of the Country, The (1995)", + 4 + ], + [ + 1262, + "Walking and Talking (1996)", + 8 + ], + [ + 1263, + "Foxfire (1996)", + 15 + ], + [ + 1264, + "Nothing to Lose (1994)", + 7 + ], + [ + 1265, + "Star Maps (1997)", + 19 + ], + [ + 1266, + "Bread and Chocolate (Pane e cioccolata) (1973)", + 12 + ], + [ + 1267, + "Clockers (1995)", + 33 + ], + [ + 1268, + "Bitter Moon (1992)", + 10 + ], + [ + 1269, + "Love in the Afternoon (1957)", + 10 + ], + [ + 1270, + "Life with Mikey (1993)", + 7 + ], + [ + 1271, + "North (1994)", + 7 + ], + [ + 1272, + "Talking About Sex (1994)", + 5 + ], + [ + 1273, + "Color of Night (1994)", + 15 + ], + [ + 1274, + "Robocop 3 (1993)", + 11 + ], + [ + 1275, + "Killer (Bulletproof Heart) (1994)", + 4 + ], + [ + 1276, + "Sunset Park (1996)", + 8 + ], + [ + 1277, + "Set It Off (1996)", + 19 + ], + [ + 1278, + "Selena (1997)", + 16 + ], + [ + 1279, + "Wild America (1997)", + 9 + ], + [ + 1280, + "Gang Related (1997)", + 16 + ], + [ + 1281, + "Manny & Lo (1996)", + 13 + ], + [ + 1282, + "Grass Harp, The (1995)", + 9 + ], + [ + 1283, + "Out to Sea (1997)", + 19 + ], + [ + 1284, + "Before and After (1996)", + 26 + ], + [ + 1285, + "Princess Caraboo (1994)", + 15 + ], + [ + 1286, + "Shall We Dance? (1937)", + 17 + ], + [ + 1287, + "Ed (1996)", + 6 + ], + [ + 1288, + "Denise Calls Up (1995)", + 7 + ], + [ + 1289, + "Jack and Sarah (1995)", + 7 + ], + [ + 1290, + "Country Life (1994)", + 2 + ], + [ + 1291, + "Celtic Pride (1996)", + 15 + ], + [ + 1292, + "Simple Wish, A (1997)", + 3 + ], + [ + 1293, + "Star Kid (1997)", + 3 + ], + [ + 1294, + "Ayn Rand: A Sense of Life (1997)", + 7 + ], + [ + 1295, + "Kicked in the Head (1997)", + 7 + ], + [ + 1296, + "Indian Summer (1996)", + 20 + ], + [ + 1297, + "Love Affair (1994)", + 12 + ], + [ + 1298, + "Band Wagon, The (1953)", + 9 + ], + [ + 1299, + "Penny Serenade (1941)", + 8 + ], + [ + 1300, + "'Til There Was You (1997)", + 9 + ], + [ + 1301, + "Stripes (1981)", + 5 + ], + [ + 1302, + "Late Bloomers (1996)", + 5 + ], + [ + 1303, + "Getaway, The (1994)", + 18 + ], + [ + 1304, + "New York Cop (1996)", + 2 + ], + [ + 1305, + "National Lampoon's Senior Trip (1995)", + 7 + ], + [ + 1306, + "Delta of Venus (1994)", + 2 + ], + [ + 1307, + "Carmen Miranda: Bananas Is My Business (1994)", + 2 + ], + [ + 1308, + "Babyfever (1994)", + 2 + ], + [ + 1309, + "Very Natural Thing, A (1974)", + 1 + ], + [ + 1310, + "Walk in the Sun, A (1945)", + 1 + ], + [ + 1311, + "Waiting to Exhale (1995)", + 16 + ], + [ + 1312, + "Pompatus of Love, The (1996)", + 7 + ], + [ + 1313, + "Palmetto (1998)", + 14 + ], + [ + 1314, + "Surviving the Game (1994)", + 11 + ], + [ + 1315, + "Inventing the Abbotts (1997)", + 23 + ], + [ + 1316, + "Horse Whisperer, The (1998)", + 7 + ], + [ + 1317, + "Journey of August King, The (1995)", + 4 + ], + [ + 1318, + "Catwalk (1995)", + 3 + ], + [ + 1319, + "Neon Bible, The (1995)", + 4 + ], + [ + 1320, + "Homage (1995)", + 1 + ], + [ + 1321, + "Open Season (1996)", + 2 + ], + [ + 1322, + "Metisse (Café au Lait) (1993)", + 6 + ], + [ + 1323, + "Wooden Man's Bride, The (Wu Kui) (1994)", + 3 + ], + [ + 1324, + "Loaded (1994)", + 5 + ], + [ + 1325, + "August (1996)", + 1 + ], + [ + 1326, + "Boys (1996)", + 6 + ], + [ + 1327, + "Captives (1994)", + 3 + ], + [ + 1328, + "Of Love and Shadows (1994)", + 6 + ], + [ + 1329, + "Low Life, The (1994)", + 1 + ], + [ + 1330, + "An Unforgettable Summer (1994)", + 4 + ], + [ + 1331, + "Last Klezmer: Leopold Kozlowski, His Life and Music, The (1995)", + 4 + ], + [ + 1332, + "My Life and Times With Antonin Artaud (En compagnie d'Antonin Artaud) (1993)", + 2 + ], + [ + 1333, + "Midnight Dancers (Sibak) (1994)", + 5 + ], + [ + 1334, + "Somebody to Love (1994)", + 2 + ], + [ + 1335, + "American Buffalo (1996)", + 11 + ], + [ + 1336, + "Kazaam (1996)", + 10 + ], + [ + 1337, + "Larger Than Life (1996)", + 9 + ], + [ + 1338, + "Two Deaths (1995)", + 4 + ], + [ + 1339, + "Stefano Quantestorie (1993)", + 1 + ], + [ + 1340, + "Crude Oasis, The (1995)", + 1 + ], + [ + 1341, + "Hedd Wyn (1992)", + 1 + ], + [ + 1342, + "Convent, The (Convento, O) (1995)", + 2 + ], + [ + 1343, + "Lotto Land (1995)", + 1 + ], + [ + 1344, + "Story of Xinghua, The (1993)", + 5 + ], + [ + 1345, + "Day the Sun Turned Cold, The (Tianguo niezi) (1994)", + 2 + ], + [ + 1346, + "Dingo (1992)", + 5 + ], + [ + 1347, + "Ballad of Narayama, The (Narayama Bushiko) (1958)", + 4 + ], + [ + 1348, + "Every Other Weekend (1990)", + 1 + ], + [ + 1349, + "Mille bolle blu (1993)", + 1 + ], + [ + 1350, + "Crows and Sparrows (1949)", + 2 + ], + [ + 1351, + "Lover's Knot (1996)", + 3 + ], + [ + 1352, + "Shadow of Angels (Schatten der Engel) (1976)", + 1 + ], + [ + 1353, + "1-900 (1994)", + 5 + ], + [ + 1354, + "Venice/Venice (1992)", + 2 + ], + [ + 1355, + "Infinity (1996)", + 6 + ], + [ + 1356, + "Ed's Next Move (1996)", + 3 + ], + [ + 1357, + "For the Moment (1994)", + 3 + ], + [ + 1358, + "The Deadly Cure (1996)", + 2 + ], + [ + 1359, + "Boys in Venice (1996)", + 2 + ], + [ + 1360, + "Sexual Life of the Belgians, The (1994)", + 2 + ], + [ + 1361, + "Search for One-eye Jimmy, The (1996)", + 3 + ], + [ + 1362, + "American Strays (1996)", + 2 + ], + [ + 1363, + "Leopard Son, The (1996)", + 1 + ], + [ + 1364, + "Bird of Prey (1996)", + 1 + ], + [ + 1365, + "Johnny 100 Pesos (1993)", + 2 + ], + [ + 1366, + "JLG/JLG - autoportrait de décembre (1994)", + 1 + ], + [ + 1367, + "Faust (1994)", + 5 + ], + [ + 1368, + "Mina Tannenbaum (1994)", + 6 + ], + [ + 1369, + "Forbidden Christ, The (Cristo proibito, Il) (1950)", + 4 + ], + [ + 1370, + "I Can't Sleep (J'ai pas sommeil) (1994)", + 3 + ], + [ + 1371, + "Machine, The (1994)", + 2 + ], + [ + 1372, + "Stranger, The (1994)", + 3 + ], + [ + 1373, + "Good Morning (1971)", + 1 + ], + [ + 1374, + "Falling in Love Again (1980)", + 2 + ], + [ + 1375, + "Cement Garden, The (1993)", + 10 + ], + [ + 1376, + "Meet Wally Sparks (1997)", + 7 + ], + [ + 1377, + "Hotel de Love (1996)", + 4 + ], + [ + 1378, + "Rhyme & Reason (1997)", + 5 + ], + [ + 1379, + "Love and Other Catastrophes (1996)", + 7 + ], + [ + 1380, + "Hollow Reed (1996)", + 6 + ], + [ + 1381, + "Losing Chase (1996)", + 8 + ], + [ + 1382, + "Bonheur, Le (1965)", + 4 + ], + [ + 1383, + "Second Jungle Book: Mowgli & Baloo, The (1997)", + 6 + ], + [ + 1384, + "Squeeze (1996)", + 3 + ], + [ + 1385, + "Roseanna's Grave (For Roseanna) (1997)", + 5 + ], + [ + 1386, + "Tetsuo II: Body Hammer (1992)", + 6 + ], + [ + 1387, + "Fall (1997)", + 3 + ], + [ + 1388, + "Gabbeh (1996)", + 6 + ], + [ + 1389, + "Mondo (1996)", + 3 + ], + [ + 1390, + "Innocent Sleep, The (1995)", + 2 + ], + [ + 1391, + "For Ever Mozart (1996)", + 3 + ], + [ + 1392, + "Locusts, The (1997)", + 5 + ], + [ + 1393, + "Stag (1997)", + 9 + ], + [ + 1394, + "Swept from the Sea (1997)", + 7 + ], + [ + 1395, + "Hurricane Streets (1998)", + 6 + ], + [ + 1396, + "Stonewall (1995)", + 5 + ], + [ + 1397, + "Of Human Bondage (1934)", + 5 + ], + [ + 1398, + "Anna (1996)", + 2 + ], + [ + 1399, + "Stranger in the House (1997)", + 7 + ], + [ + 1400, + "Picture Bride (1995)", + 10 + ], + [ + 1401, + "M. Butterfly (1993)", + 18 + ], + [ + 1402, + "Ciao, Professore! (1993)", + 4 + ], + [ + 1403, + "Caro Diario (Dear Diary) (1994)", + 4 + ], + [ + 1404, + "Withnail and I (1987)", + 13 + ], + [ + 1405, + "Boy's Life 2 (1997)", + 6 + ], + [ + 1406, + "When Night Is Falling (1995)", + 5 + ], + [ + 1407, + "Specialist, The (1994)", + 20 + ], + [ + 1408, + "Gordy (1995)", + 3 + ], + [ + 1409, + "Swan Princess, The (1994)", + 7 + ], + [ + 1410, + "Harlem (1993)", + 4 + ], + [ + 1411, + "Barbarella (1968)", + 28 + ], + [ + 1412, + "Land Before Time III: The Time of the Great Giving (1995) (V)", + 6 + ], + [ + 1413, + "Street Fighter (1994)", + 8 + ], + [ + 1414, + "Coldblooded (1995)", + 1 + ], + [ + 1415, + "Next Karate Kid, The (1994)", + 9 + ], + [ + 1416, + "No Escape (1994)", + 5 + ], + [ + 1417, + "Turning, The (1992)", + 2 + ], + [ + 1418, + "Joy Luck Club, The (1993)", + 3 + ], + [ + 1419, + "Highlander III: The Sorcerer (1994)", + 16 + ], + [ + 1420, + "Gilligan's Island: The Movie (1998)", + 3 + ], + [ + 1421, + "My Crazy Life (Mi vida loca) (1993)", + 11 + ], + [ + 1422, + "Suture (1993)", + 4 + ], + [ + 1423, + "Walking Dead, The (1995)", + 4 + ], + [ + 1424, + "I Like It Like That (1994)", + 3 + ], + [ + 1425, + "I'll Do Anything (1994)", + 10 + ], + [ + 1426, + "Grace of My Heart (1996)", + 8 + ], + [ + 1427, + "Drunks (1995)", + 5 + ], + [ + 1428, + "SubUrbia (1997)", + 12 + ], + [ + 1429, + "Sliding Doors (1998)", + 4 + ], + [ + 1430, + "Ill Gotten Gains (1997)", + 3 + ], + [ + 1431, + "Legal Deceit (1997)", + 5 + ], + [ + 1432, + "Mighty, The (1998)", + 3 + ], + [ + 1433, + "Men of Means (1998)", + 2 + ], + [ + 1434, + "Shooting Fish (1997)", + 10 + ], + [ + 1435, + "Steal Big, Steal Little (1995)", + 7 + ], + [ + 1436, + "Mr. Jones (1993)", + 2 + ], + [ + 1437, + "House Party 3 (1994)", + 9 + ], + [ + 1438, + "Panther (1995)", + 5 + ], + [ + 1439, + "Jason's Lyric (1994)", + 8 + ], + [ + 1440, + "Above the Rim (1994)", + 5 + ], + [ + 1441, + "Moonlight and Valentino (1995)", + 7 + ], + [ + 1442, + "Scarlet Letter, The (1995)", + 5 + ], + [ + 1443, + "8 Seconds (1994)", + 4 + ], + [ + 1444, + "That Darn Cat! (1965)", + 19 + ], + [ + 1445, + "Ladybird Ladybird (1994)", + 4 + ], + [ + 1446, + "Bye Bye, Love (1995)", + 15 + ], + [ + 1447, + "Century (1993)", + 1 + ], + [ + 1448, + "My Favorite Season (1993)", + 3 + ], + [ + 1449, + "Pather Panchali (1955)", + 8 + ], + [ + 1450, + "Golden Earrings (1947)", + 2 + ], + [ + 1451, + "Foreign Correspondent (1940)", + 15 + ], + [ + 1452, + "Lady of Burlesque (1943)", + 1 + ], + [ + 1453, + "Angel on My Shoulder (1946)", + 1 + ], + [ + 1454, + "Angel and the Badman (1947)", + 6 + ], + [ + 1455, + "Outlaw, The (1943)", + 2 + ], + [ + 1456, + "Beat the Devil (1954)", + 7 + ], + [ + 1457, + "Love Is All There Is (1996)", + 1 + ], + [ + 1458, + "Damsel in Distress, A (1937)", + 1 + ], + [ + 1459, + "Madame Butterfly (1995)", + 7 + ], + [ + 1460, + "Sleepover (1995)", + 1 + ], + [ + 1461, + "Here Comes Cookie (1935)", + 1 + ], + [ + 1462, + "Thieves (Voleurs, Les) (1996)", + 7 + ], + [ + 1463, + "Boys, Les (1997)", + 3 + ], + [ + 1464, + "Stars Fell on Henrietta, The (1995)", + 3 + ], + [ + 1465, + "Last Summer in the Hamptons (1995)", + 3 + ], + [ + 1466, + "Margaret's Museum (1995)", + 6 + ], + [ + 1467, + "Saint of Fort Washington, The (1993)", + 2 + ], + [ + 1468, + "Cure, The (1995)", + 6 + ], + [ + 1469, + "Tom and Huck (1995)", + 12 + ], + [ + 1470, + "Gumby: The Movie (1995)", + 5 + ], + [ + 1471, + "Hideaway (1995)", + 9 + ], + [ + 1472, + "Visitors, The (Visiteurs, Les) (1993)", + 2 + ], + [ + 1473, + "Little Princess, The (1939)", + 9 + ], + [ + 1474, + "Nina Takes a Lover (1994)", + 6 + ], + [ + 1475, + "Bhaji on the Beach (1993)", + 8 + ], + [ + 1476, + "Raw Deal (1948)", + 1 + ], + [ + 1477, + "Nightwatch (1997)", + 2 + ], + [ + 1478, + "Dead Presidents (1995)", + 18 + ], + [ + 1479, + "Reckless (1995)", + 8 + ], + [ + 1480, + "Herbie Rides Again (1974)", + 11 + ], + [ + 1481, + "S.F.W. (1994)", + 2 + ], + [ + 1482, + "Gate of Heavenly Peace, The (1995)", + 1 + ], + [ + 1483, + "Man in the Iron Mask, The (1998)", + 12 + ], + [ + 1484, + "Jerky Boys, The (1994)", + 3 + ], + [ + 1485, + "Colonel Chabert, Le (1994)", + 4 + ], + [ + 1486, + "Girl in the Cadillac (1995)", + 1 + ], + [ + 1487, + "Even Cowgirls Get the Blues (1993)", + 5 + ], + [ + 1488, + "Germinal (1993)", + 4 + ], + [ + 1489, + "Chasers (1994)", + 5 + ], + [ + 1490, + "Fausto (1993)", + 3 + ], + [ + 1491, + "Tough and Deadly (1995)", + 2 + ], + [ + 1492, + "Window to Paris (1994)", + 1 + ], + [ + 1493, + "Modern Affair, A (1995)", + 1 + ], + [ + 1494, + "Mostro, Il (1994)", + 1 + ], + [ + 1495, + "Flirt (1995)", + 5 + ], + [ + 1496, + "Carpool (1996)", + 5 + ], + [ + 1497, + "Line King: Al Hirschfeld, The (1996)", + 2 + ], + [ + 1498, + "Farmer & Chase (1995)", + 1 + ], + [ + 1499, + "Grosse Fatigue (1994)", + 4 + ], + [ + 1500, + "Santa with Muscles (1996)", + 2 + ], + [ + 1501, + "Prisoner of the Mountains (Kavkazsky Plennik) (1996)", + 5 + ], + [ + 1502, + "Naked in New York (1994)", + 2 + ], + [ + 1503, + "Gold Diggers: The Secret of Bear Mountain (1995)", + 10 + ], + [ + 1504, + "Bewegte Mann, Der (1994)", + 3 + ], + [ + 1505, + "Killer: A Journal of Murder (1995)", + 1 + ], + [ + 1506, + "Nelly & Monsieur Arnaud (1995)", + 3 + ], + [ + 1507, + "Three Lives and Only One Death (1996)", + 1 + ], + [ + 1508, + "Babysitter, The (1995)", + 3 + ], + [ + 1509, + "Getting Even with Dad (1994)", + 5 + ], + [ + 1510, + "Mad Dog Time (1996)", + 1 + ], + [ + 1511, + "Children of the Revolution (1996)", + 5 + ], + [ + 1512, + "World of Apu, The (Apur Sansar) (1959)", + 6 + ], + [ + 1513, + "Sprung (1997)", + 3 + ], + [ + 1514, + "Dream With the Fishes (1997)", + 7 + ], + [ + 1515, + "Wings of Courage (1995)", + 1 + ], + [ + 1516, + "Wedding Gift, The (1994)", + 3 + ], + [ + 1517, + "Race the Sun (1996)", + 5 + ], + [ + 1518, + "Losing Isaiah (1995)", + 12 + ], + [ + 1519, + "New Jersey Drive (1995)", + 2 + ], + [ + 1520, + "Fear, The (1995)", + 1 + ], + [ + 1521, + "Mr. Wonderful (1993)", + 4 + ], + [ + 1522, + "Trial by Jury (1994)", + 7 + ], + [ + 1523, + "Good Man in Africa, A (1994)", + 2 + ], + [ + 1524, + "Kaspar Hauser (1993)", + 8 + ], + [ + 1525, + "Object of My Affection, The (1998)", + 1 + ], + [ + 1526, + "Witness (1985)", + 1 + ], + [ + 1527, + "Senseless (1998)", + 7 + ], + [ + 1528, + "Nowhere (1997)", + 3 + ], + [ + 1529, + "Underground (1995)", + 5 + ], + [ + 1530, + "Jefferson in Paris (1995)", + 5 + ], + [ + 1531, + "Far From Home: The Adventures of Yellow Dog (1995)", + 7 + ], + [ + 1532, + "Foreign Student (1994)", + 2 + ], + [ + 1533, + "I Don't Want to Talk About It (De eso no se habla) (1993)", + 1 + ], + [ + 1534, + "Twin Town (1997)", + 6 + ], + [ + 1535, + "Enfer, L' (1994)", + 4 + ], + [ + 1536, + "Aiqing wansui (1994)", + 1 + ], + [ + 1537, + "Cosi (1996)", + 4 + ], + [ + 1538, + "All Over Me (1997)", + 3 + ], + [ + 1539, + "Being Human (1993)", + 4 + ], + [ + 1540, + "Amazing Panda Adventure, The (1995)", + 10 + ], + [ + 1541, + "Beans of Egypt, Maine, The (1994)", + 2 + ], + [ + 1542, + "Scarlet Letter, The (1926)", + 2 + ], + [ + 1543, + "Johns (1996)", + 1 + ], + [ + 1544, + "It Takes Two (1995)", + 3 + ], + [ + 1545, + "Frankie Starlight (1995)", + 4 + ], + [ + 1546, + "Shadows (Cienie) (1988)", + 1 + ], + [ + 1547, + "Show, The (1995)", + 2 + ], + [ + 1548, + "The Courtyard (1995)", + 1 + ], + [ + 1549, + "Dream Man (1995)", + 2 + ], + [ + 1550, + "Destiny Turns on the Radio (1995)", + 2 + ], + [ + 1551, + "Glass Shield, The (1994)", + 2 + ], + [ + 1552, + "Hunted, The (1995)", + 3 + ], + [ + 1553, + "Underneath, The (1995)", + 4 + ], + [ + 1554, + "Safe Passage (1994)", + 2 + ], + [ + 1555, + "Secret Adventures of Tom Thumb, The (1993)", + 5 + ], + [ + 1556, + "Condition Red (1995)", + 2 + ], + [ + 1557, + "Yankee Zulu (1994)", + 1 + ], + [ + 1558, + "Aparajito (1956)", + 7 + ], + [ + 1559, + "Hostile Intentions (1994)", + 1 + ], + [ + 1560, + "Clean Slate (Coup de Torchon) (1981)", + 4 + ], + [ + 1561, + "Tigrero: A Film That Was Never Made (1994)", + 1 + ], + [ + 1562, + "Eye of Vichy, The (Oeil de Vichy, L') (1993)", + 1 + ], + [ + 1563, + "Promise, The (Versprechen, Das) (1994)", + 1 + ], + [ + 1564, + "To Cross the Rubicon (1991)", + 1 + ], + [ + 1565, + "Daens (1992)", + 1 + ], + [ + 1566, + "Man from Down Under, The (1943)", + 1 + ], + [ + 1567, + "Careful (1992)", + 1 + ], + [ + 1568, + "Vermont Is For Lovers (1992)", + 1 + ], + [ + 1569, + "Vie est belle, La (Life is Rosey) (1987)", + 1 + ], + [ + 1570, + "Quartier Mozart (1992)", + 1 + ], + [ + 1571, + "Touki Bouki (Journey of the Hyena) (1973)", + 1 + ], + [ + 1572, + "Wend Kuuni (God's Gift) (1982)", + 1 + ], + [ + 1573, + "Spirits of the Dead (Tre passi nel delirio) (1968)", + 2 + ], + [ + 1574, + "Pharaoh's Army (1995)", + 1 + ], + [ + 1575, + "I, Worst of All (Yo, la peor de todas) (1990)", + 1 + ], + [ + 1576, + "Hungarian Fairy Tale, A (1987)", + 1 + ], + [ + 1577, + "Death in the Garden (Mort en ce jardin, La) (1956)", + 1 + ], + [ + 1578, + "Collectionneuse, La (1967)", + 2 + ], + [ + 1579, + "Baton Rouge (1988)", + 1 + ], + [ + 1580, + "Liebelei (1933)", + 1 + ], + [ + 1581, + "Woman in Question, The (1950)", + 1 + ], + [ + 1582, + "T-Men (1947)", + 1 + ], + [ + 1583, + "Invitation, The (Zaproszenie) (1986)", + 1 + ], + [ + 1584, + "Symphonie pastorale, La (1946)", + 1 + ], + [ + 1585, + "American Dream (1990)", + 2 + ], + [ + 1586, + "Lashou shentan (1992)", + 1 + ], + [ + 1587, + "Terror in a Texas Town (1958)", + 1 + ], + [ + 1588, + "Salut cousin! (1996)", + 2 + ], + [ + 1589, + "Schizopolis (1996)", + 4 + ], + [ + 1590, + "To Have, or Not (1995)", + 2 + ], + [ + 1591, + "Duoluo tianshi (1995)", + 6 + ], + [ + 1592, + "Magic Hour, The (1998)", + 5 + ], + [ + 1593, + "Death in Brunswick (1991)", + 1 + ], + [ + 1594, + "Everest (1998)", + 2 + ], + [ + 1595, + "Shopping (1994)", + 1 + ], + [ + 1596, + "Nemesis 2: Nebula (1995)", + 1 + ], + [ + 1597, + "Romper Stomper (1992)", + 5 + ], + [ + 1598, + "City of Industry (1997)", + 6 + ], + [ + 1599, + "Someone Else's America (1995)", + 1 + ], + [ + 1600, + "Guantanamera (1994)", + 4 + ], + [ + 1601, + "Office Killer (1997)", + 1 + ], + [ + 1602, + "Price Above Rubies, A (1998)", + 3 + ], + [ + 1603, + "Angela (1995)", + 1 + ], + [ + 1604, + "He Walked by Night (1948)", + 1 + ], + [ + 1605, + "Love Serenade (1996)", + 4 + ], + [ + 1606, + "Deceiver (1997)", + 1 + ], + [ + 1607, + "Hurricane Streets (1998)", + 3 + ], + [ + 1608, + "Buddy (1997)", + 4 + ], + [ + 1609, + "B*A*P*S (1997)", + 3 + ], + [ + 1610, + "Truth or Consequences, N.M. (1997)", + 3 + ], + [ + 1611, + "Intimate Relations (1996)", + 2 + ], + [ + 1612, + "Leading Man, The (1996)", + 4 + ], + [ + 1613, + "Tokyo Fist (1995)", + 1 + ], + [ + 1614, + "Reluctant Debutante, The (1958)", + 1 + ], + [ + 1615, + "Warriors of Virtue (1997)", + 10 + ], + [ + 1616, + "Desert Winds (1995)", + 1 + ], + [ + 1617, + "Hugo Pool (1997)", + 2 + ], + [ + 1618, + "King of New York (1990)", + 1 + ], + [ + 1619, + "All Things Fair (1996)", + 1 + ], + [ + 1620, + "Sixth Man, The (1997)", + 9 + ], + [ + 1621, + "Butterfly Kiss (1995)", + 1 + ], + [ + 1622, + "Paris, France (1993)", + 3 + ], + [ + 1623, + "Cérémonie, La (1995)", + 3 + ], + [ + 1624, + "Hush (1998)", + 1 + ], + [ + 1625, + "Nightwatch (1997)", + 1 + ], + [ + 1626, + "Nobody Loves Me (Keiner liebt mich) (1994)", + 1 + ], + [ + 1627, + "Wife, The (1995)", + 1 + ], + [ + 1628, + "Lamerica (1994)", + 4 + ], + [ + 1629, + "Nico Icon (1995)", + 2 + ], + [ + 1630, + "Silence of the Palace, The (Saimt el Qusur) (1994)", + 1 + ], + [ + 1631, + "Slingshot, The (1993)", + 2 + ], + [ + 1632, + "Land and Freedom (Tierra y libertad) (1995)", + 1 + ], + [ + 1633, + "Á köldum klaka (Cold Fever) (1994)", + 1 + ], + [ + 1634, + "Etz Hadomim Tafus (Under the Domin Tree) (1994)", + 1 + ], + [ + 1635, + "Two Friends (1986) ", + 1 + ], + [ + 1636, + "Brothers in Trouble (1995)", + 1 + ], + [ + 1637, + "Girls Town (1996)", + 1 + ], + [ + 1638, + "Normal Life (1996)", + 1 + ], + [ + 1639, + "Bitter Sugar (Azucar Amargo) (1996)", + 3 + ], + [ + 1640, + "Eighth Day, The (1996)", + 1 + ], + [ + 1641, + "Dadetown (1995)", + 1 + ], + [ + 1642, + "Some Mother's Son (1996)", + 2 + ], + [ + 1643, + "Angel Baby (1995)", + 4 + ], + [ + 1644, + "Sudden Manhattan (1996)", + 2 + ], + [ + 1645, + "Butcher Boy, The (1998)", + 1 + ], + [ + 1646, + "Men With Guns (1997)", + 2 + ], + [ + 1647, + "Hana-bi (1997)", + 1 + ], + [ + 1648, + "Niagara, Niagara (1997)", + 1 + ], + [ + 1649, + "Big One, The (1997)", + 1 + ], + [ + 1650, + "Butcher Boy, The (1998)", + 1 + ], + [ + 1651, + "Spanish Prisoner, The (1997)", + 1 + ], + [ + 1652, + "Temptress Moon (Feng Yue) (1996)", + 3 + ], + [ + 1653, + "Entertaining Angels: The Dorothy Day Story (1996)", + 1 + ], + [ + 1654, + "Chairman of the Board (1998)", + 1 + ], + [ + 1655, + "Favor, The (1994)", + 1 + ], + [ + 1656, + "Little City (1998)", + 2 + ], + [ + 1657, + "Target (1995)", + 1 + ], + [ + 1658, + "Substance of Fire, The (1996)", + 3 + ], + [ + 1659, + "Getting Away With Murder (1996)", + 1 + ], + [ + 1660, + "Small Faces (1995)", + 1 + ], + [ + 1661, + "New Age, The (1994)", + 1 + ], + [ + 1662, + "Rough Magic (1995)", + 2 + ], + [ + 1663, + "Nothing Personal (1995)", + 1 + ], + [ + 1664, + "8 Heads in a Duffel Bag (1997)", + 4 + ], + [ + 1665, + "Brother's Kiss, A (1997)", + 1 + ], + [ + 1666, + "Ripe (1996)", + 1 + ], + [ + 1667, + "Next Step, The (1995)", + 1 + ], + [ + 1668, + "Wedding Bell Blues (1996)", + 1 + ], + [ + 1669, + "MURDER and murder (1996)", + 1 + ], + [ + 1670, + "Tainted (1998)", + 1 + ], + [ + 1671, + "Further Gesture, A (1996)", + 1 + ], + [ + 1672, + "Kika (1993)", + 2 + ], + [ + 1673, + "Mirage (1995)", + 1 + ], + [ + 1674, + "Mamma Roma (1962)", + 1 + ], + [ + 1675, + "Sunchaser, The (1996)", + 1 + ], + [ + 1676, + "War at Home, The (1996)", + 1 + ], + [ + 1677, + "Sweet Nothing (1995)", + 1 + ], + [ + 1678, + "Mat' i syn (1997)", + 1 + ], + [ + 1679, + "B. Monkey (1998)", + 1 + ], + [ + 1680, + "Sliding Doors (1998)", + 1 + ], + [ + 1681, + "You So Crazy (1994)", + 1 + ], + [ + 1682, + "Scream of Stone (Schrei aus Stein) (1991)", + 1 + ] + ], + "hovertemplate": "tsne_1=%{x}
tsne_2=%{y}
item_id=%{customdata[0]}
title=%{customdata[1]}
popularity=%{marker.color}", + "legendgroup": "", + "marker": { + "color": { + "bdata": "xAGDAFoA0QBWABoAiAHbACsBWQDsAAsBuAC3ACUBJwBcAAoARQBIAFQAKQG2AK4AJQFJADkAFAFyACUAmgBRAGEABwALAA0ACAB4AFcAOQAlAJQAKABPAFAAGwCFAHUAUQBHAlEAWwCAAGgAlQCKASgArwBTAEAAOwB/AFIAGwFzAKIAZwCGAEEB+wDcAIEAgAAHAAUANgCXACEAUAFEAG4ABQGwABIAOgCWAIoA1QATAV8AjwBoAHAAiQDbACcBAAGGAawA/AFJADYADwAFAEoARwAqAEEAggAfABABFAAJAEMADwB9AHoBJQEEAEMArQFqAHMAuwD0AGEAnQFBAIEAFwBfAPYAqwDGAAMBaQCrABMAMgA9AEgAOQDeAPMAQQAKALkAgAAXAJ0ARgFSAPcArgBiAJQAfwA8AGUARQDcAGoAXACXAEAAOgBDADwBdgB5AEEAbwFEAaQB0AAcAYkAfQDdAN0A+wHiACMBdADvAPsA0QCqAEIAfAAUAXQAnQDxAC0B+wDvAH8ApQDOAFkAGAG2AF4BiAAyAEIAyAC/AEsBzgBcAIYAcgDUACIBeACrAG8AQgBKAG0BiAAsAG0ApgChAPQAqwDHAI4AZQB8ABgB2QAtAIABAAGWAJwAgAB1AIQAMADwAHwABQCgAIIAxQAuAJ4AGgA+AKwAEAAvAf0BogB/ACsAQgATAGUA4wAjAAkA/wA7AYgA0wDGAN8AvgAMASoBRwA8ABwAVQCSAOgAsQDBAKIA4QFOAN4BAwFgAH8AcgCTAOUBTQAGADIAwgBJAK8B5gApAYYAlQBXAGAAvAAeABwAkQBLAFAAXgEFAKAAcABmACoBqAAUAKkA2gDwAH0AgACvAK8AJwEtACkAcQCPAPsAQAAVACsAEgBbAC8AvQALADQAfAA3AEEAfgCJABsAHwApABQAGgAOAEgAKQBhAAgBjwASAAoACgAcAC8AJQAwAC8AqgAfADcAJwBDACIAJwALABcAGAANAGUAKwB0AGQAbwAfAEUA0ABXAEEAHAAbAAoAOwBEAMAADAA4ADYADAAaAFkAEgBMAKoAyQBlAFgBMQArAHAARgCiAKMAXQA3AD4AGQBAAEkAgQCyAFEAagAaACwBEwBVACAA2wB5AGEAXQCZAK4AqwBDANgAYwAFAAYABQAOADUABACiAC4AFgAJAHkAVQB1AD8AqgBCABAAEACRADAAGwBaABgAHABKAJQARwAbAFUANAAwAEAAQwBsAN0AngB+AMIA+gCgAF8AaACzALMAPwCAAPMAigB9AEAARABBADQAMgBDADsAPAA4ADsA5wBEAJgAPgAfAHsAOQAnAHoARABaAGIA1wB5AHkArQA5AEgAtADJAD8AWwBZAFAAfAB4ACMApAAuAEkAfADDAHkAXQBQAIEAFgAPAA0ANgAKAB4AQgAsACsAMQAzABUARwAMAP4AKQAMAFwAlwAYAC0APwBmAAoADAARAEYAiQAWADsAMAAdABsAFgCzACMA5gBDADIAHAAdACEADwAsAF0AKQBcABMAIAA7AKgAJQBPACcAIgAOAMoAKwASALIACQAMAAUAQAB/AM4ABAABAAIAFAAyANEAUQAfAEIAQgAeADwAKQAoACIAGwAzADsAQAASABIAQAArAAsAJwAnABYAUgAEAEsAqQBNAB8AdwA6AEUAGAAXAFsAJgAsACgAUgAhAFkABAAjABsAJgBGAEMAMgBIAKsAWgAiAJMA4wAsAIMATwBzAJkAWABSAHQALgBkAAUADAAGAA0AJAAuAEEAVgAwADYATQABANsAawAiABsAZAAxAKkAnQAyAEUALABXAJsAEACkAFsALAANAE8AKAAKAGYADwAKADUAEwAYAIkABgBGAGUAaABPAAEAMwBIAA0AVwA6AFIAEAAdAFYANgA6ACIATAAQAA4APwAtAFEAGAAnALQADwAbAIkATgA7AB8ApAA/ADoACwEnAFwAEAB3AGYAPAEzAHwAtAAnABgAOQBgAIAABAAVAAsALgAsAHMAlQAdACAACQALADQAKgA5ACkAMQARACAAGgAJAAQATAAfAEUAVAAKACUAAgAnAA4ADQADAC8AQgAKAFYACgAuABUAJAAfAAkABQAaABAAKAAJAAgAGwAyAAkAHwArAC0AEgASADgAAQBwABUAAwAZACgAXQAWAAQAUgAxAFMAUAA5AA0AIgABAFsAFgAxABkADwAaABkABAAEADUAMAAbAB4AKgCwACwANwAJADUABAAEAAEADgAQAEIAJAABAAMADwAQAAMAEgAYAFYAFQB3AAYABQAYAAkASwAqAFEAJwA1AC8ANAAhAIgAOwAtACIADQAHAA0ANQBAAA8ADQArAAYANQAOABMAagAsAAIAOgAJACoADAAqABIAFAAbABUAAgAUAA0ABAAEAAkAAgALAA0AEgAHAAgAYAAFAC4AIgA6AFUAIgBlAAYAaAAoAFAAOQAoABUARAAHACAAJQAZADwAIAAuAC0AKAArACgAPQARADAARwAeACcALQAWAAsAMQAuAAIADgBAABkAIgAXACkACQAVABoADAASAEsACAAiABwABAAgACwADAAxABsAIwAWAAgAFAAPACwAFgAXAAQAVgAgACEAGQAEAEIABwAfAA4AEAAQAAoACgARAAgACAAJABYAFwAvACUAQAAsAF0AZAAmAGIADACJADIAIAAfACMAJgAgAB8ADwAsAAQAAwCUAA4AFAAHABAAIAAbAEQAGAAYABEAWgAZAD4AHAAIACgAGQAuAIYASQAZACsAKQAZABgAFwAKAAoAFgAPACMAJwAdAAwAKQAEADUAEAAsAAwAEgAbABAABwBCAE0ABwAMAAgAFgAtAAIACAAIAAYAFQALABUACgANACYAJQArAAwAFwAMAB0AAwASACoADQAIAEoABwATAAQAEgAEABIABQAcACkABwAPABYACgAdAA0AEwAvADsAEQAVAAEAAwAMAAQAIAALAA0AHAABAA0AIAAeACYALgAdAB0ABQAhABEACQAsAA8AAwAJAAMAFQAJABoACQAHABwAEwAMAAMAAQAZAAQACwAaAA0ABQAZAAYADgAMAAsAFgAKABsADgAPAAcACAAFABYABwATAAkACgAKAA0AEwAKABIAAwANACwAAwALAAMADQAKAB8ACwADAC0ABwAXAAcAAQAIABUAEgAGABMAEQAUAA8AJgAMAAYABgAJAB4ABgAnABoAFAAeACcAGQAEAAwADgAgAAgAMAANABIAFgARAAYACAABAAEABgAIABIAGgAGAAUABwAkABMABwAGABMADAAGAAgACQAHAAsACAADAAQAFwAEAAQABAAIAA8ABwATAAwAIQAKAAoABwAHAAUADwALAAQACAATABAACQAQAA0ACQATABoADwARAAYABwAHAAIADwADAAMABwAHABQADAAJAAgACQAFAAUAEgACAAcAAgACAAIAAQABABAABwAOAAsAFwAHAAQAAwAEAAEAAgAGAAMABQABAAYAAwAGAAEABAAEAAIABQACAAsACgAJAAQAAQABAAEAAgABAAUAAgAFAAQAAQABAAIAAwABAAUAAgAGAAMAAwACAAIAAgADAAIAAQABAAIAAQAFAAYABAADAAIAAwABAAIACgAHAAQABQAHAAYACAAEAAYAAwAFAAYAAwAGAAMAAgADAAUACQAHAAYABQAFAAIABwAKABIABAAEAA0ABgAFABQAAwAHAAQAHAAGAAgAAQAJAAUAAgADABAAAwALAAQABAADAAoACAAFAAwABAADAAUAAwACAAoABwACAAkABQAIAAUABwAFAAQAEwAEAA8AAQADAAgAAgAPAAEAAQAGAAIABwABAAEABwABAAEABwADAAMAAwAGAAIABgAMAAUACQACAAkABgAIAAEAAgASAAgACwACAAEADAADAAQAAQAFAAQABQADAAIAAQABAAEABQAFAAIAAQAEAAIABQACAAoAAwABAAMAAQADAAUAAQAFAAYAAwAHAAEAAwAFAAwAAgABAAQABwACAAgAAQABAAcAAwAFAAUABwACAAEABgAEAAEABAADAAQACgACAAIAAQADAAQAAQACAAEAAgACAAIAAwAEAAIABQACAAEABwABAAQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAgABAAEAAQABAAIAAQABAAEAAQABAAEAAgABAAEAAgAEAAIABgAFAAEAAgABAAEABQAGAAEABAABAAMAAQABAAQAAQADAAQAAwADAAIABAABAAEACgABAAIAAQABAAkAAQADAAMAAQABAAEAAQAEAAIAAQACAAEAAQABAAEAAQABAAEAAwABAAEAAgAEAAIAAQACAAEAAQABAAEAAQADAAEAAQABAAIAAQADAAEAAQABAAIAAQAEAAEAAQABAAEAAQABAAEAAgABAAEAAQABAAEAAQABAAEAAQABAA==", + "dtype": "i2" + }, + "coloraxis": "coloraxis", + "symbol": "circle" + }, + "mode": "markers", + "name": "", + "showlegend": false, + "type": "scattergl", + "x": { + "bdata": "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", + "dtype": "f4" + }, + "xaxis": "x", + "y": { + "bdata": "8B6IwdxAjcF6YYdAcHyhwG8YmcFQdz5ArQqPwYqR4EBS+4xBUdkfQSp+msHhEUfB69u4QUKlPkETtcq+6C9hQb0YDEHkVqJBtmvrQK0y50GZ+uTAIMeewZN1n0HPWVhBVSbQwJbnv8CDHxbBY4NfwbzasMEJ6rpA/U2vwahhg0FGtwpBPJX3wIvzeb98qvdAUakKQYbyQsE4RB1ANehMwTEBecC9OsRBGKpQwaGGUEB9BzRBHqiUQYoZrkGBPo1Aice7wIDFscGszIPBDvFmQUQhk0FS/aDBtEUCQew9vEH83Pg/JF84wMwuKkGFDiZBjfMaQa+Ms8EBn2LBPDkvwVTcJMA79tDBYOe2wQtc40DHj5fBYMOTwAk1csHZuMTBSWjUwacYUEGXDXDBuFaVwW80q8E5IfK/aXSiwZG4m8EnnLBBlzbNwQp6esH1J3jAgAIzQPl9JkHYikM/KKylwdz51EAcVENA5b4+QSj7VEDkA8ZAJ7HBwVBUpMGd8qXBxTJowUj/zz+TcFJBd3qSQUy8usEkX1PBo8HOPsfa87/MhcPBb335wGYVnT5GK0bAqnHqQOs2gsHrjzHArkcKwURrF0HcRS9BqICMwWpNKkG4o8vBEa3awTubBUE8RJhApMDPwSmcOEGCG/hAZPKEQQwkvMGeeGG/la4xQenJgMEM+ItAvNC3QGNNHEGNHnBBL7JvQfeIOkHnY9hAZC3pPy3RoUEWe77BgguJwUtBDsFuk5LBj/UrwWHSTMHU8J/BIu9uwYX0xT/UArXBn+HBwErdq0EDkjhBkaZ7Qa5ZoMC1atNAGL+yQVtSRMHC1bpBjgnSvy1dEr1KJrrAWwKNQVqXqcGoVopBCok3wYDfjcG2ZKRAdYMQQTqLDMGE3IJAxvITwLfMPD1zWoZBdhivwZYIq8Grq6fBGmSlQViNmsEbp1NA8HiIQNbarUH5RUJBCLCxwYIdt0G0/hZACxiIwYk5dkHWnpbA5uMtQZ0Ozz1+hMlA/UVgQdIMK0GoEzJBUiVlQO7nZsFGY6PBFXVawBTYgEEmHe1AHA2HQGRhS0EAuQpA1IquwSLI4kDurJfB3IjJP1qefUGgB7JAZhe4QEaPMUFTHaDBOu+BQGScFkHwY5NBS3bQwNDQj8EkJhq/JG6XP5xzj8H/4ow/0puawABvV0GbKbbBV3UPQSn7EkGsT5u9BNy+wQTuusFSmpjBFrRjwawXy8EoXZLBFMuMwS7CucF74aBAkN6uQF22W0DzjobBprO0QQ4ew8FE3TNBC2CCwUiRDkEAad3BnTwRP5mq7MFLw0vBNuQkv2msJ0GoZ5nBUxCVwTRA3UC62rfBP+nfQJ6rosF6ydHBRCQlQdnZsMFE20/BQ+kgwYXDTMBlPJTAOXuGQUOY8MBTgJTAsi+XwSoemUEaapnB2EpMwSlkNEFwSKrBuby7wWTSSMFQNoDBEyuewZTflUHxlp1BsPJ5wLJsCsFNk73Aw76uwaWonb9D19jB1dABv2WUkcH/UmxBd9M+QZv7BsDeVL3BpGwAwRa1JUCZub7BTOf5QLKs50AM4uvBpcRFwbDaOUDW6p4/QGN/wewhx0CE/+XBvZOcwf80YEFLlFBB3zONwXJpYkGgCqlALnWhwScnD8FtINfBEcSwwWVmDUHPwiLBBISuwWVM8L/57TXBUBc7wfLtC0Fp2uRAq/2qvxLvxkEsohRBSJTWwQG22cGSFqtBivjAwIIKtsFn6ZXBIpDowbiNE8E0puDA/V+swTjh5MGVL+jBATxhQFQ8xkBwrPa/ljuNPiKJoUDuXpjA4So3QUG23cDy6oDBZrD7QKthlkA9gVlBJW2aQDJXrEHIN6DB5vnJwSqe+cAehRjB6JDRQI4tRz4xa6PBC/OfQWYZK8GqyChBiOoLQFa22kBzoCNAqYWHQKQsiUE7qRFBKFLbQEVdScGhAoDBwWVPwaeBnMDesIxA9z3DP9nJskCpO3VAeMuLwZ4WxMGAO1BBAZ2BwXemscHrWz/BhmLIQDPFrsHM4z9BqgcMQb1E5L+fJmHBZfDNwTszwUEUedhAUIuTwRmwPsGjr5hBGE+BwWTuN8HUlUDBcrQGwadOlcHoKKJB0zlfwcDDeMHUXYHB2DWGwT4wg0GnUJfBKWiOwailXkGR9cjBiAS8P6Z81L8XIRbAgbskwNnGH0HSrrS85wU/QR7Tnb8GcllBCH0HwY+MjkEjTUrA6lWPQCDMgcGDJEpBEGllP6SnfkHMUnjBHWJmP9YyjkE7JX7AJfB8QcVHuEGsdJPALjo0v61ansFjSRdBsxsXQAmO0r9Ao/m/5583wbMjhz8+p/s/kSq6P2FZfL9npPnA/xjzP3i77EBQK7ZBYDQpwd6+eMBw3sdBYietQZu15sDvNGZB7WMbwSaAmsDkUqBAiztywawkWEH3qQTBcs6pwYlNU0HlGJ7AgVo3QBjOOkERWeRAw+0KQVTLHEEdCADBEYkVQZEWbkBlO53BStOMQWySGsEn3D4/6pOawZ+qVkES7ZVBpm+TQemGyMAFp1tBdi8CQXEPJ0HulzNBLO0/QT1Je0HHJhJBGegfQZOuhMAItFjB79PaQCx2TkE6UhdAoAzeQDhBmkA5Hk9BJnd4QS3eekGx0f/Aw1xkwRXVpcCFKQpBI3OQQJ7D078/5llBs5QGwSuzVUD7QSdBswPaQI1IeUF8341B5JjAQSwDgkHkBR5ATmAQQXEPf0HureNAU31/QWn/G0Gpojk/NpZEQUCZl0GHaxBBsIcFQPCBhj5YNJNB38fMQBftAEGSghJBeBd4wRKY6ECSLxBBFSLQQBbWSMBSa9m/Da7kQPMlFEEU1nhA9/7RwMq0D0GAU55AHw6lwAlRzsFLMEjBatLrwKXKgsAjv+VAlH5LwIxzB0DqNAc/JRUdQdBN40HuJHpAatG/wSN7nT+1neC8xpOTwCF7V8GUZGFA1mCpQRbGOD8rhE5BrNQLQRriMsFKPpfA2r6FwJhpE8ElzrlAW6RIwdQ5zsElnE/AgM9+wdfr5j6w4HxBtcSCwYN7m8BPhAvA1E2twVQkjcE2SnjBiIgzQN/RsMH3UlPBv3GzQAgyhEHL08xBkDCJQWPle0BjE4zBL2CSwadwJL4XcIPBC8x/QZ0yH0ACFYDBgY6oPGxfMEFpE9FB3ppAwR62HsCZjsHBxvASQdL6O8Bcy9JB+nb3P8OFo0B/yDFBwSHYvx/3TEGQrIJBLzqKQTarEkHEE07BQW6LQU5bbEFjo+VA58xbv5DjNMD+g9lASov4QBu5PkC0G2hBc50Dvxk3RMEYfNRBh1YcwShjP8EJtbBBlWxkwaE+pEEglSPB7p6Pv08/HsFctjnBO1qXQTIwh0EjzodBHxfaQGUaL0EGArdBC7uHQfiPfEGL+htB4mudQdjglUFRpiZBm9gJQbnxjUEETR5BmASuQcRPjkEff+hAFhd7QPBJCEErUnfB7gdKQW+BfEFOskRBh7J8QCHTSUEZMxhBWH7bwFSCv75fcXrA5EAyQUPpjcHJT99APLMkQWv6oEATMgZBwc9ZwXfoi0EJDK0/PieXwaBrrkHntwhAdvCkwTcWRMGylK5B5qt5vgaVNMHcmtnB/L+4QXQjmUG14RrALMMRwZzAWsB3JWnBThnCwSMTmMBqnJLB+TOZwIJZ1cFlt4/BkMo4QXIpvcHJppNAJlAnQQVtbUHEETC+GqTcwIfrq0CqU3vAyNAFQTRt20DC3cdA/1a0wIwavkFMrvVA7ONiwHrv1j8kE25B9kZgQdFvhsF7ZwLBmV0HwfF6CkGKeYpBo66nQRq2ZcCSIAfBl4fVQH9jQUA2FUfBinW0wR36l8CXfcjAU9pTwbR+1EC2ii7BiJO5wMRQrcGzJ67BBJ/UP/cyFsCdn3/BvLSiP2MaTMGMoh/Auw8fP7je0EHch1jBFYCpwSGgbUAGQofAS6/RwU0PTkAlpSbAClEJQAfZj8CjUxe/kjjewcRG/sDRhjbBuOCuwWFMZMFjH3hAvypzwVmKhsGtiOfA5bvMwHlnLECXaZBAmT+1QCbYX8AAgX1AdDjZwBZO0rxu76vA64+WQWO/r0Dn6/jApCy9wQRAukH4Fo7B/gtHQRiiuEGObMLBeqp0wT1yosDtbnxACJSePmWRX8HSc6PAGSajwTbz2EHHmKvB6g8pwYX2FMBkjpBBZQeNwc6RI8E5LfVANHK+wB62tEB9yqdBDLWDQdsKKcGxzKHBfpaawXt1OsHd9zpBUc4GwNX9VsDn6lbB+R6jwdKOxkF9g4bBjtIKQdTChUBrtOLAg+rYwK1asMGqux/BWFUiQBi0+MBBJShBqcc8wav6F8FOEQQ/Zc8qwOntjkFfuTjBVmN1Pz6jq8HjN6RB+IaRwf5mD0HJQaTBNZ2TwSULv8EhMEHBucIjwf5mKcB85OI/GZflQHYCLsFfpyXAS+sFQStgKkFAfLE9dx6jPxTBF8AOViy+duijwcdxg0Gk9ppBKxU0QUbfnL4fRMHBjSWNwBpbh0Bm+3XAabFFQPXxQUEUax/ATLKOQQTpjkGGhRpB3wSMQYNBw0EWPqg/bC9Zvw4dhMAX4I9B2y/2wC09qkDeoEBBp2hHQXxttMFTCnfAiztPQbO+p8GS6UxBhidbwJXZk0GdrJzBYxRIQLFlJUHgLhzBLA8XwfylysEfmdHBWvvHPxOZHMGRGJ6+XauOwIuyvr/V97LA+q5zwb3h0EDEU7PA8gxUQOHPOMAyT5zAtEqMwVXlqMHa2arA20+uwWPPIECQF069akWHQNuAIkA8qcRAORopP4fT8EBvqoFBLf+GQD9wwMAKWBzBSOQ+PgsLxcDw7UbAqepKQW+YP0EAg6DA9gkywKnPHUBVLJjANXXCQJ8Jv8CHZo7BD7jOQLSGREFw5LZAII4kQRqyUEHTXcJAy4r4v8Ihx8Floaa/IafBwRSUgMB9xsXBshuVQDxoosFL8bVA9A24wU7hIUFJMwnAkQ0FQIGRBsECUby/JIk8QJi0MMFmXJbATmKsQB+Tn8EU14DA2Elgwd5PT0Eyv7A+L7jiwAzt4UFNN5O/0kczQZy3BsDDQJZBGRP3QN1SqEEqGQpBjwCOP3hnAUC4UVFBn6wUQVUFq0GgV3i/mrKjQbrBJUEmERPBb0eyQLmc6j72t9u/eVE2QVOyD0FcUnhBeBECwQBEHcFywZ1BYwqCwbHuxsBoGcc/4peGwdNNcEFuzqTB7A49wNmxNcEeOdPBK3wvPzw1DMFnd7BATu7FwdhRIsAMmKDAJ8K5QJfWZECRTsHAQZsrQDFiyj8TIXrB+fs+QbxEXsHCMj7BwIxtwTbef8HGIf/AobwgQRtg2sDoK0dBMnpbQI39KcBXq7dAfouMPqXf8EDoWZVBXPWCwVJi2cDNW/o/UnuMwOZdzMF3ZdZBpuyXv2TKpUBC65JBuv5nQW8BCcDyfc3B780UwI9FnMAtds6/I+6CQPDG6MDdNCxACLN7wGSrPsFCX4XBCIMLwUpKmcEQOwXB9x0AwUaYfEALCAzBQ7ndQCjYt8Hvgx7BaRaHwFKkAsEKaQvByoAlQaI3jsFOycbBU4utQbgxn8EOnwhABNaRPvGQR8C4I6K/g23qvgNUJ8FWeYJAtis6QYNp8MDze4DBhQpSP5u8isGxfRRAhhZ+wRpyD0EWaS1BvpbFQBo5A0FOLxXAuoNyQMDVq0FIGY2/DXBuwZhSQ0Ebu8LA9DsCwdkVbsEUHq5AdhyGwTQSAkFJppe/PLraQHc1ukHLXKhAwEwCQZ/bbUFg/hvAmEKHwJCFbMH1uKjB5qtbwfTjlUBIG3HBGlwmv0nbH76DghFAR/wSQSX9AUCbP7lAIfAvQVvX2UFvuXa/cfepwcrAgkEY5ApBCnSXwY9AU0ATEqnBpWbEQT73nD+NPorA787oQHkW5cBAvo9BSyfYP7mpgUFC07FAxUZRQRNbXUFeN+jAzj1OQfdpREDaUWc+Bv95QH9zRj7p7qxAlRCQQSLd+0Dja7BB15+pQEztpEGTvJFBXZI6QLPBsj8wSJ3AiQSQQXIHdsFxNwdAE6UhwWXDTL9BmTtBcAmKQUjxhUFuChVBROAJQQcPecEaV4BAjscEQS+ps0FWUoBBCZz7QPD5QEFIdW7B2RgiwMm1h0BxgB7BGYSfQY3D6MAJfQBB9Defvt1j4cBN5yZAnQN/wV9XPMFlW9XA2JIdwDXX6sCBssrAOoe+wGeU6EAe+6VBNc9iQS9fNkFTYmbBsb+MQZazoL8pViVBOiOiQF7DTcHPq2HB3gBCwZFd70DKo4HBGsnoQJsyA0FzQZ3B5vi/QXbkmUERe4pBj9EHwZAOtMHXUkvALU34QNwBkUCtJZI/SfOqQY8rykFjj7s+LbJjQYeIqEGMRDtB7xMGwbdyQEGykwtBtoOZQZdIrECZxArBTNZ4QcB7s0EnA4zBN4otwaYo50EhLCNBbQHDv9r5MUF9GpxAoNOGQcD0cMG/BJvBg1tpv4x92cEifsvAGwTVP25Ct0EYd0HBzYcNPiHftUEiYixBiFNpwetQWMFcyP5AIuDbQC83ykGaa8dB9rjov+pIa8Gi/RXBuDKbwQLuVUBPJqzBtQ8dQbBod0C5J6k/tIySwU/NdUAbHzxBfaocwFWB1UAznIhBMq8wwQGxG7vXLUu9pxqEwIUFH8BTtHpAbBTEQfALV0F+rQdA07tLQR4/gz+OvCVAKhXoQBsQakGf8cdBI2qOwZHJ4D9zYkZBMUyJQJkBX0CkQX3BsrumwXWmT0FS+RhBQamYQCMQc8Gh7ohACBbEwV6RnT6sdSzBpC0uwXWn/r9qKnFBG6o/QOFjqcFuhPY95k6ewfcZcEGfvzTABwiiPzdXVb+bJu3A5Q4nQSOku8Ds7FtARr/lwWfTTcH121JAXf9CwW5J7UAoiB1BvaGfQP9xUcEY8ClA+7L+QIvOCMGefXvBvxA1QRjSg0ACC7c+eVX2wNan9T++/QpBZuaVwCCWF7+u9dlAvyHdwLSqxcDQWKq8yYhhQC84zUGhESLAdwt2wVnRyUDCeZBApeyQQY7C079+SAZBP5nGv10mkkBKmzXBOvqOQdzsgj1VH2xAhHWdQcyBHMA/eZNA9jaMwJxvTsFU93FAzgfKv1Pj+L9XNMK/kqB0vh8A87+zRZI/E4+cwTFDA0CZLIVA1FH/vx37IMGrlwPA4t7DQblA2b8WxKtAj8JGv+XXkkDs0cRBFT8DPzLSOkA3q08+DwRVQJYLrEEmGRHAuoTPv7hgJsFt/oE/yyIFwIgb6UBWUvhAsgxUQXjccUAngydAIluhQKJRFsB0LyrAivumQAtyLD7NE5pAKjyQQTGPu78oQMdBCu2qv0xXDsDPT9bA59FZQIcxAUEpxqZAmHTMwFAmyUD3l+3AZL3WwBdZ8sBuCBfA7jVZwcplDcEsgA5AEqXMvgNzjkFpOLRBZjkOPw0HD8BPQuK/4EeLP938zkFw65NBIMJBQQysGkF+NXDBkbJNQGKpIsE9Dd69e0tQQYqxhkCntV3AopVAQPXJosF2giRBqU0kQCNU3EEF5U5Bgv1nP3e1/MBIrGtBbqkdQayGq0HKYqNBRGtiQZ0jAUEJPaNBLsRtQOZGM8EzjifBkbAwQFOzZcDoHQJA5frfP6HvOkEJzUnBYz2fQb5nU8GivvA+rcTawD29V8FxyhvBP9+YwQ88kUH9tZTBaJvAQadEJcH3UGZBHXbAQcp1bkGOTI9Bz7AMwd24EcCbWMVA5s2VQY5mwUGg8Y9BKqyUQCLuDMEBBjRBkb5LQYFzxj8BRoBBiTmOQfqvAMCpta1AbWygvxfXHj8WSUPBSXIKQBrKLMH5qCNACB84P5sDjUE0wjTByanTwJxqAcGaz6VAX4WPwSmidMGMW61BEFq0wQrX2j9d5h5AagI+wJs+F0H/7LU/SpF/wd5fb8G1FxzBHM9wwQFyLMFug0zAveDrwOK1fsE2BxlAAH10wchBPkHa0d5AuGXmQYDfNcBhmoNBNaf0wGvCHcGGzT9ByoySQYMwXsEPsDxANIoQQcAYVT8HUGhBPBMOQVbsoEAdmolAqHmpwCL7DcE9C5bBPKAdviw17D4yBYNB9bJTQMTwL0HI6d5AG3qlQcqzMMHGZb7A7C2QQW7IjkEeGyNBd5zDQKMlQkE/YJs+O5afv6fyA0G6VxxB6hmqQO7ZmEFarcVAjDeWwQmzXUGeZ7bAccgBwcqK1MAUlN+/cyURQKdpDcHz8TtAGAMBQA5eMcGmKejAZK8SQCXmCUEQ7jDBuMheQYQpxEBEOwtA3LAGQWnGJ0CZj8nAPxg0QJPVK0A133tAvggswQPbUUDgYTXBYDAjwYlwQ0DeFBJAb9AkwTkhP0B4AVpAMVhxQP/3gEB9eTJAko4sQKxfKz8Yx9FBI4wdQGX0Y0C4Xh3BAMJlQPEXKcHZlALBReLVQXB7UECGfh1Ab0bgwNUI0j+1NLfAC+4ewd+ZPEFSag7BZ5O5wAqOM8GhZBpBpbuXQZIIXcAZYV6/kqRlPyEZ9j6eZGJBERgBwb6sWkElITjB6KxCQGIA50BiRsLA0+aLv+mmSL4OuuJAE6aKv63RScAnekPBKRKfwZOcIsH6oerAtXQWwT9KiEFDwATBXr5WwFbkHkHP3G9AULG5P73pFEBIiwA+VXnHQa0at8BWvEVBv2rPQQpOJ0Ei/c9BanLNQbTBO0GdgsxB4+QcwaiGzUH6zfnAnm7XQT36zkFmPjvBDTU1wCrB9z+DQRLBzGQuwcexXr9C/c5BOK0FwYuh0UHARx/BgYENwQN9OzyKyhvBnysOwYXHGMHYJso/3Li9PzwEmkA01UnAQBUjQado2T9IScDAtDmPwA5tnL/N2ynBetSJwNNV58DVEODAxeGUwFLw6cC+pGs+2XEUQc54v0DVbh1B1xg/wRnr6D9hv8BBOibxPrphmMFuIt8/xDrOQd8gq0E=", + "dtype": "f4" + }, + "yaxis": "y" + } + ], + "layout": { + "coloraxis": { + "colorbar": { + "title": { + "text": "popularity" + } + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermap": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermap" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "tsne_1" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "tsne_2" + } + } + } + } + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import plotly.express as px\n", "\n", @@ -723,7 +11268,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 44, "metadata": { "scrolled": true }, @@ -745,9 +11290,27 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 45, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[1m48/48\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 14ms/step\n", + " 4.1: Affair to Remember, An (1957)\n", + " 4.1: Dead Man Walking (1995)\n", + " 4.0: 20,000 Leagues Under the Sea (1954)\n", + " 4.0: Celtic Pride (1996)\n", + " 3.9: Boys of St. Vincent, The (1993)\n", + " 3.9: Faster Pussycat! Kill! Kill! (1965)\n", + " 3.8: Eat Drink Man Woman (1994)\n", + " 3.8: Young Guns (1988)\n", + " 3.8: Jude (1996)\n", + " 3.8: Legends of the Fall (1994)\n" + ] + } + ], "source": [ "for title, pred_rating in recommend(5):\n", " print(\" %0.1f: %s\" % (pred_rating, title))" @@ -767,50 +11330,102 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Extend and improve the model below\n", - "class RegressionModel(Model):\n", - " def __init__(self, embedding_size, max_user_id, max_item_id):\n", + "class EnhancedRegressionModel(Model):\n", + " def __init__(self, embedding_size, max_user_id, max_item_id, dropout_rate=0.2):\n", " super().__init__()\n", "\n", - " self.user_embedding = Embedding(output_dim=embedding_size,\n", - " input_dim=max_user_id + 1,\n", + " # Embeddings\n", + " self.user_embedding = Embedding(input_dim=max_user_id + 1,\n", + " output_dim=embedding_size,\n", " name='user_embedding')\n", - " self.item_embedding = Embedding(output_dim=embedding_size,\n", - " input_dim=max_item_id + 1,\n", + " self.item_embedding = Embedding(input_dim=max_item_id + 1,\n", + " output_dim=embedding_size,\n", " name='item_embedding')\n", "\n", - " # The following two layers don't have parameters.\n", + " # Bias terms\n", + " self.user_bias = Embedding(input_dim=max_user_id + 1,\n", + " output_dim=1,\n", + " name='user_bias')\n", + " self.item_bias = Embedding(input_dim=max_item_id + 1,\n", + " output_dim=1,\n", + " name='item_bias')\n", + "\n", + " # Layers\n", " self.flatten = Flatten()\n", " self.dot = Dot(axes=1)\n", + " self.batch_norm = BatchNormalization()\n", + " self.dropout = Dropout(dropout_rate)\n", + " self.dense1 = Dense(64, activation='relu')\n", + " self.dense2 = Dense(32, activation='relu')\n", + " self.output_layer = Dense(1, activation='linear') # Use 'sigmoid' if ratings are normalized\n", "\n", " def call(self, inputs):\n", - " user_inputs = inputs[0]\n", - " item_inputs = inputs[1]\n", + " user_inputs, item_inputs = inputs\n", "\n", + " # Embeddings\n", " user_vecs = self.flatten(self.user_embedding(user_inputs))\n", " item_vecs = self.flatten(self.item_embedding(item_inputs))\n", "\n", - " y = self.dot([user_vecs, item_vecs])\n", - " return y\n", + " # Biases\n", + " user_b = self.flatten(self.user_bias(user_inputs))\n", + " item_b = self.flatten(self.item_bias(item_inputs))\n", "\n", + " # Interaction\n", + " interaction = self.dot([user_vecs, item_vecs])\n", + " x = Add()([interaction, user_b, item_b])\n", "\n", - "model = RegressionModel(embedding_size=64, max_user_id=all_ratings['user_id'].max(), max_item_id=all_ratings['item_id'].max())\n", - "model.compile(optimizer=\"adam\", loss='mae')" + " # Non-linear layers\n", + " x = self.batch_norm(x)\n", + " x = self.dropout(x)\n", + " x = self.dense1(x)\n", + " x = self.dropout(x)\n", + " x = self.dense2(x)\n", + " y = self.output_layer(x)\n", + "\n", + " return y\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 48, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 9ms/step - loss: 0.3939 - val_loss: 0.7680\n", + "Epoch 2/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 9ms/step - loss: 0.3729 - val_loss: 0.7752\n", + "Epoch 3/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 9ms/step - loss: 0.3529 - val_loss: 0.7790\n", + "Epoch 4/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m21s\u001b[0m 9ms/step - loss: 0.3349 - val_loss: 0.7850\n", + "Epoch 5/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 10ms/step - loss: 0.3184 - val_loss: 0.7884\n", + "Epoch 6/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m20s\u001b[0m 10ms/step - loss: 0.3040 - val_loss: 0.7940\n", + "Epoch 7/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 10ms/step - loss: 0.2902 - val_loss: 0.7998\n", + "Epoch 8/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m19s\u001b[0m 8ms/step - loss: 0.2777 - val_loss: 0.8053\n", + "Epoch 9/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m10s\u001b[0m 9ms/step - loss: 0.2668 - val_loss: 0.8099\n", + "Epoch 10/10\n", + "\u001b[1m1125/1125\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m21s\u001b[0m 10ms/step - loss: 0.2565 - val_loss: 0.8140\n" + ] + } + ], "source": [ "# Training the model\n", "history = model.fit([user_id_train, item_id_train], rating_train,\n", @@ -818,6 +11433,128 @@ " shuffle=True)" ] }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.models import Model\n", + "from tensorflow.keras.layers import Embedding, Flatten, Dot, Dense, Dropout, BatchNormalization, Input, Add\n", + "from tensorflow.keras.optimizers import Adam\n", + "from tensorflow.keras.regularizers import l2\n", + "from tensorflow.keras.callbacks import EarlyStopping\n", + "\n", + "class EnhancedRegressionModel(Model):\n", + " def __init__(self, embedding_size, max_user_id, max_item_id, dropout_rate=0.4):\n", + " super().__init__()\n", + "\n", + " # Embeddings with L2 regularization\n", + " self.user_embedding = Embedding(input_dim=max_user_id + 1,\n", + " output_dim=embedding_size,\n", + " embeddings_regularizer=l2(1e-6),\n", + " name='user_embedding')\n", + " self.item_embedding = Embedding(input_dim=max_item_id + 1,\n", + " output_dim=embedding_size,\n", + " embeddings_regularizer=l2(1e-6),\n", + " name='item_embedding')\n", + "\n", + " # Bias terms\n", + " self.user_bias = Embedding(input_dim=max_user_id + 1,\n", + " output_dim=1,\n", + " name='user_bias')\n", + " self.item_bias = Embedding(input_dim=max_item_id + 1,\n", + " output_dim=1,\n", + " name='item_bias')\n", + "\n", + " # Layers\n", + " self.flatten = Flatten()\n", + " self.dot = Dot(axes=1)\n", + " self.batch_norm = BatchNormalization()\n", + " self.dropout = Dropout(dropout_rate)\n", + " self.dense1 = Dense(32, activation='relu') # Reduced complexity\n", + " self.output_layer = Dense(1, activation='linear') # Use 'sigmoid' if ratings are normalized\n", + "\n", + " def call(self, inputs):\n", + " user_inputs, item_inputs = inputs\n", + "\n", + " # Embeddings\n", + " user_vecs = self.flatten(self.user_embedding(user_inputs))\n", + " item_vecs = self.flatten(self.item_embedding(item_inputs))\n", + "\n", + " # Biases\n", + " user_b = self.flatten(self.user_bias(user_inputs))\n", + " item_b = self.flatten(self.item_bias(item_inputs))\n", + "\n", + " # Interaction\n", + " interaction = self.dot([user_vecs, item_vecs])\n", + " x = Add()([interaction, user_b, item_b])\n", + "\n", + " # Non-linear layers\n", + " x = self.batch_norm(x)\n", + " x = self.dropout(x)\n", + " x = self.dense1(x)\n", + " y = self.output_layer(x)\n", + "\n", + " return y\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/50\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 19ms/step - loss: 2.9548 - mse: 10.2169 - val_loss: 1.5876 - val_mse: 3.4493\n", + "Epoch 2/50\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m8s\u001b[0m 12ms/step - loss: 0.8480 - mse: 1.1386 - val_loss: 1.1526 - val_mse: 1.8545\n", + "Epoch 3/50\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m6s\u001b[0m 13ms/step - loss: 0.7269 - mse: 0.8807 - val_loss: 1.1390 - val_mse: 1.8133\n", + "Epoch 4/50\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 14ms/step - loss: 0.7016 - mse: 0.8385 - val_loss: 1.1446 - val_mse: 1.8346\n", + "Epoch 5/50\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 14ms/step - loss: 0.6794 - mse: 0.8009 - val_loss: 1.1548 - val_mse: 1.8741\n", + "Epoch 6/50\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 15ms/step - loss: 0.6567 - mse: 0.7621 - val_loss: 1.1697 - val_mse: 1.9317\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model = EnhancedRegressionModel(\n", + " embedding_size=64,\n", + " max_user_id=all_ratings['user_id'].max(),\n", + " max_item_id=all_ratings['item_id'].max(),\n", + " dropout_rate=0.4\n", + ")\n", + "\n", + "model.compile(optimizer=Adam(learning_rate=0.0005), loss='mae', metrics=['mse'])\n", + "\n", + "early_stop = EarlyStopping(monitor='val_loss', patience=3, restore_best_weights=True)\n", + "\n", + "model.fit(\n", + " x=[all_ratings['user_id'], all_ratings['item_id']],\n", + " y=all_ratings['rating'], # Normalize to [0, 1] if using sigmoid\n", + " validation_split=0.2,\n", + " epochs=50,\n", + " batch_size=256,\n", + " callbacks=[early_stop]\n", + ")\n" + ] + }, { "cell_type": "code", "execution_count": null, @@ -828,7 +11565,7 @@ ], "metadata": { "kernelspec": { - "display_name": "lab_1", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -842,7 +11579,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.9" + "version": "3.13.5" } }, "nbformat": 4, diff --git a/02_activities/assignments/assignment_1.ipynb b/02_activities/assignments/assignment_1.ipynb index 6a1f0581..90a79a29 100644 --- a/02_activities/assignments/assignment_1.ipynb +++ b/02_activities/assignments/assignment_1.ipynb @@ -29,10 +29,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "420c7178", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz\n", + "\u001b[1m29515/29515\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 3us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz\n", + "\u001b[1m26421880/26421880\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 0us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz\n", + "\u001b[1m5148/5148\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 1us/step\n", + "Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz\n", + "\u001b[1m4422102/4422102\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m0s\u001b[0m 0us/step\n" + ] + } + ], "source": [ "from tensorflow.keras.datasets import fashion_mnist\n", "(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()\n", @@ -47,28 +62,66 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "a6c89fe7", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Before one-hot encoding: 9\n", + "After one-hot encoding: [0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n" + ] + } + ], "source": [ "# Inspect the shapes of the datasets\n", "\n", "\n", "# Convert labels to one-hot encoding\n", "from tensorflow.keras.utils import to_categorical\n", - "\n" + "print(f'Before one-hot encoding: {y_train[0]}')\n", + "y_train = to_categorical(y_train, num_classes=10)\n", + "y_test = to_categorical(y_test, num_classes=10)\n", + "print(f'After one-hot encoding: {y_train[0]}')" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "13e100db", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAACtCAYAAABfjTYXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVatJREFUeJzt3Xu8lWP+//FPaXfcnfbufFBJB3SSHCp0ouiAFJJDNEyTMRHNNJivmJhODMYYDKkcigghlVA5RAenioiopLZqV3Si1P37w6897ut6r/a11967vavX8/GYxzzuj2vd615rXeu67/tq7etdJIqiyAAAAAAAAAAAgKdoQR8AAAAAAAAAAACFFZPoAAAAAAAAAAAkwCQ6AAAAAAAAAAAJMIkOAAAAAAAAAEACTKIDAAAAAAAAAJAAk+gAAAAAAAAAACTAJDoAAAAAAAAAAAkwiQ4AAAAAAAAAQAJMogMAAAAAAAAAkEChm0T/17/+ZUWKFLEmTZrkel9XXHGFpaamZtuuffv21r59+1w/X06fNz9MnDjR7r333gJ57sKmSJEiQf+bM2dO0s9Rt25d6969e7bt5syZk6PnCvkcb7jhBmvevLmZmc2bN89uu+0227JlS9D+kXP0JxR248ePj/XFkiVLWrVq1axDhw42YsQIW79+fUEfIvIRYxQKijv2FCtWzGrVqmVXXnmlfffddzneX5EiRey2227L2s5pf8LBb/78+dazZ0878sgjrUSJEla1alVr3bq13XjjjQV9aGYWPhaicGCMwoFQmMatlStXWpEiRWz8+PE5fiz9ufCgTxVOxQr6AFyPPfaYmZl9+umnNn/+fDv55JML+IgOLhMnTrSlS5fa9ddfX9CHUuDee++92Pbw4cNt9uzZ9uabb8bqxx57bL4fS8uWLe29994Lfq6Qz/H555+3/v37m9mvEwq33367XXHFFVahQoU8OGK46E84WIwbN84aN25su3fvtvXr19s777xjo0aNsrvuusueeeYZO+OMMwr6EJEPGKNQ0PaNPTt37rS33nrLRowYYXPnzrUlS5ZYmTJlCvrwcJCYNm2anXPOOda+fXsbPXq0Va9e3datW2eLFi2yp59+2u6+++6CPkQcpBijkF8Yt5DX6FOFV6GaRF+0aJF98skn1q1bN5s2bZqNHTuWSXQk7ZRTToltV65c2YoWLerVD4Ry5coFPe+OHTusdOnS2bZbuHChrVq1ynr16pUXh4cA9CccLJo0aWKtWrXK2u7Vq5cNHjzYTj31VDv//PPtyy+/tKpVq8rHhvYZFD6MUShovx17OnToYHv27LHhw4fbiy++aJdcckkBH13+2blzp5UsWdKKFClS0IdySBg9erTVq1fPZs6cacWK/e9WtU+fPjZ69OgCPLIDh3Nx/mCMYozKL4xbyGv0qcKrUC3nMnbsWDMzGzlypLVp08aefvpp27FjR6zNvj8juOuuu+yf//yn1atXz1JTU61169b2/vvvZ/sc7777rlWqVMm6d+9u27dvT9hu165ddscdd1jjxo2tRIkSVrlyZbvyyittw4YNwa/n008/tU6dOlmZMmWscuXKdu2113qv56effrKbbrrJ6tWrZ8WLF7eaNWvaH//4R+9PlPfu3WujR4/OOp4qVarY5ZdfbmvWrMlq0759e5s2bZqtWrUq9idrSM7XX39tffr0sRo1amT9+UynTp3s448/9trOmDHDWrZsaaVKlbLGjRtn/UXFPupPWPYt+7NkyRLr3LmzlS1b1jp16hT0OU6ZMsUaNWpkxx13nN1222325z//2czM6tWr5/3JfkjfMfu1/zRp0sTefvttO+WUU6xUqVJWs2ZN+7//+z/bs2dP7t/Qwxz9if5UkI488ki7++67bevWrfbwww+bWeI+YxZ+DnzzzTetffv2lp6ebqVKlbIjjzzSevXqFTvXPfjgg9a8eXNLTU21smXLWuPGje3mm28+cC8eQRijGKPy2r5/SFm1alXCpROvuOIKq1u3blL7f+mll6x169ZWunRpK1u2rJ155pmxv8h48cUXrUiRIvbGG294j33wwQetSJEitnjx4qzaokWL7JxzzrG0tDQrWbKkHX/88TZ58uTY4/YtC/Haa69Z//79rXLlyla6dGn7+eefk3oN8GVmZlqlSpVikwb7FC36v1vXfUuqZDcemZllZGTYgAEDrFatWla8eHGrV6+e3X777fbLL7/E2t1+++128sknW1pampUrV85atmxpY8eOtSiKsj3u//znP1asWDEbNmxYVu3111+3Tp06Wbly5ax06dLWtm1brz/edtttVqRIEfvwww+td+/eVrFiRatfv362z4fcY4xCXgkdt5555hnr3LmzVa9e3UqVKmXHHHOM/fWvf/XmpfZdM3311VfWtWtXS01Ntdq1a9uNN97ofZZr1661Cy+80MqWLWvly5e3iy66yDIyMrzjWLRokfXp08fq1q1rpUqVsrp169rFF19sq1atyqN3AXmJPlV4FZpJ9J07d9qkSZPsxBNPtCZNmlj//v1t69at9uyzz8r2DzzwgM2aNcvuvfdee+qpp2z79u3WtWtX++GHHxI+x+TJk61Tp0524YUX2tSpUxP+2dbevXvt3HPPtZEjR1rfvn1t2rRpNnLkSJs1a5a1b9/edu7cme3r2b17t3Xt2tU6depkL774ol177bX28MMP20UXXZTVJooiO++88+yuu+6yyy67zKZNm2Y33HCDTZgwwTp27BjrzAMHDrShQ4famWeeaS+99JINHz7cZsyYYW3atLGNGzea2a8Xb23btrVq1arZe++9l/U/JKdr1672wQcf2OjRo23WrFn24IMP2vHHH+/9A8cnn3xiN954ow0ePNimTp1qzZo1s9/97nf21ltvZfscu3btsnPOOcc6duxoU6dOtdtvvz3oc5wyZUrWL/Kuuuoq+9Of/mRmv/65+772LVu2NLOwvrNPRkaG9enTxy655BKbOnWq9e7d2+644w677rrrkn0b8f/Rn+hPBa1r1652xBFHxPqS6jOh58CVK1dat27drHjx4vbYY4/ZjBkzbOTIkVamTBnbtWuXmZk9/fTTds0111i7du3shRdesBdffNEGDx6833/ERsFgjGKMymtfffWVmf36VxF5beLEiXbuuedauXLlbNKkSTZ27FjbvHmztW/f3t555x0zM+vevbtVqVLFxo0b5z1+/Pjx1rJlS2vWrJmZmc2ePdvatm1rW7ZssYceesimTp1qLVq0sIsuukiu/9m/f39LSUmxJ554wp577jlLSUnJ89d4uGrdurXNnz/fBg0aZPPnz7fdu3cnbBsyHmVkZNhJJ51kM2fOtFtvvdWmT59uv/vd72zEiBF29dVXx/a3cuVKGzBggE2ePNmef/55O//88+1Pf/qTDR8+POExRFFkQ4YMseuvv94effRRu/32283M7Mknn7TOnTtbuXLlbMKECTZ58mRLS0uzLl26yEnT888/344++mh79tln7aGHHsrp24YkMEYhr4SOW19++aV17drVxo4dazNmzLDrr7/eJk+ebD169PDa7t6928455xzr1KmTTZ061fr372/33HOPjRo1KqvNzp077YwzzrDXXnvNRowYYc8++6xVq1YtNue0z8qVK61Ro0Z277332syZM23UqFG2bt06O/HEE73rIxQ8+lQhFhUSjz/+eGRm0UMPPRRFURRt3bo1Sk1NjU477bRYu2+++SYys6hp06bRL7/8klVfsGBBZGbRpEmTsmr9+vWLypQpE0VRFI0cOTI64ogjolGjRnnP3a5du6hdu3ZZ25MmTYrMLJoyZUqs3cKFCyMzi/7zn//s97X069cvMrPovvvui9XvvPPOyMyid955J4qiKJoxY0ZkZtHo0aNj7Z555pnIzKL//ve/URRF0bJlyyIzi6655ppYu/nz50dmFt18881ZtW7dukV16tTZ7/Edrn7bH7KzcePGyMyie++9d7/t6tSpE5UsWTJatWpVVm3nzp1RWlpaNGDAgKza7NmzIzOLZs+eHTseM4see+wxb7/7+xw//vjjyMyiDz74IKs2ZsyYyMyib775JtY2J32nXbt2kZlFU6dOjbW9+uqro6JFi8ZeI+hPv0V/KhzGjRsXmVm0cOHChG2qVq0aHXPMMVEUJe4zoefA5557LjKz6OOPP074fNdee21UoUKFZF8ScoEx6n8Yo/LXvrHn/fffj3bv3h1t3bo1euWVV6LKlStHZcuWjTIyMrxr7X369evnffZmFg0bNixr2+1Pe/bsiWrUqBE1bdo02rNnT1a7rVu3RlWqVInatGmTVbvhhhuiUqVKRVu2bMmqffbZZ5GZRffff39WrXHjxtHxxx8f7d69O3Ys3bt3j6pXr571PPte6+WXX57TtwmBNm7cGJ166qmRmUVmFqWkpERt2rSJRowYEW3dujWrXeh4NGDAgCg1NdX7Tt91112RmUWffvqpPI49e/ZEu3fvjv7+979H6enp0d69e2PP3a1bt2jHjh1Rr169ovLly0evv/561n/fvn17lJaWFvXo0cPbZ/PmzaOTTjopqzZs2LDIzKJbb701h+8UQjFGIb+Fjlu/tXfv3mj37t3R3LlzIzOLPvnkk6z/tu+aafLkybHHdO3aNWrUqFHW9oMPPpjwWsbMonHjxiU85l9++SXatm1bVKZMmdi8lbqGw4FHnyq8Cs0v0ceOHWulSpWyPn36mJlZamqqXXDBBfb222/bl19+6bXv1q2bHXHEEVnb+/6V1v3TgSiKbMCAATZs2DCbOHGi/eUvf8n2WF555RWrUKGC9ejRw3755Zes/7Vo0cKqVasWnCrrrq3Wt29fM/v1X5LNLCvs64orroi1u+CCC6xMmTJZv1LY195td9JJJ9kxxxwjf82AMFEUxT7jfX/WmZaWZvXr17cxY8bYP//5T/voo49s7969ch8tWrSwI488Mmu7ZMmS1rBhw+A/Y8npGq9TpkyxunXrZv3qbn9y2nfKli1r55xzTqzWt29f27t3b9CvDA939Cf6U2EXiT9Jd/tM6DmwRYsWVrx4cfv9739vEyZMsK+//trb90knnWRbtmyxiy++2KZOnXpo/yrhIMAYxRiVn0455RRLSUmxsmXLWvfu3a1atWo2ffr0hBkMyfriiy9s7dq1dtlll8X+pDk1NdV69epl77//ftaSUv3797edO3faM888k9Vu3LhxVqJEiazr8q+++so+//zzrOv2334/unbtauvWrbMvvvgidgysz59/0tPT7e2337aFCxfayJEj7dxzz7Xly5fbTTfdZE2bNo2dR0LGo1deecU6dOhgNWrUiH22Z599tpmZzZ07N6vtm2++aWeccYaVL1/ejjjiCEtJSbFbb73VMjMzbf369bHjzMzMtI4dO9qCBQvsnXfeyVoOzezX8ONNmzZZv379Ys+5d+9eO+uss2zhwoXeX2TRp/IfYxTyS+i49fXXX1vfvn2tWrVqWWNMu3btzMxs2bJlsX0WKVLE+zVxs2bNYuPb7NmzE17LuLZt22ZDhw61o48+2ooVK2bFihWz1NRU2759u/fcKHj0qcKrUEyif/XVV/bWW29Zt27dLIoi27Jli23ZssV69+5tZibXtktPT49tlyhRwszMW2pl165d9swzz9hxxx2XdbGUne+//962bNlixYsXt5SUlNj/MjIygiYBihUr5h1jtWrVzOzXi659/1+sWDHvT8iKFCli1apVi7UzM6tevbr3PDVq1Mj678i5CRMmeJ+xmWWtT9elSxcbPXq0tWzZ0ipXrmyDBg2yrVu3xvbhfs5mv/bHkGV/SpcubeXKlcvRMT/33HPBF0Y57TvqItLtt0iM/kR/Ksy2b99umZmZVqNGjaya6jOh58D69evb66+/blWqVLE//vGPVr9+fatfv77dd999Wfu67LLL7LHHHssKhaxSpYqdfPLJNmvWrAPzohHDGMUYlZ8ef/xxW7hwoX300Ue2du1aW7x4sbVt2zbP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7DJ7+OGH7dJLL7Wrr77aMjMzbfTo0Tle3sfMrGjRojZ69Gi75JJLrHv37jZgwAD7+eefbcyYMbZlyxYbOXJkrH2FChWsZ8+eNn78eNuyZYsNGTIktk6x2a83nGeffbZ16dLFrrjiCqtZs6Zt2rTJli1bZh9++KE9++yzuXr9CNelSxerVauW9ejRwxo3bmx79+61jz/+2O6++25LTU216667Lkf7+/vf/26zZs2yNm3a2KBBg6xRo0b2008/2cqVK+3VV1+1hx56yGrVqmXdunWzf/7zn9a3b1/7/e9/b5mZmXbXXXd5EwSu3r17W+nSpa137962c+dOmzRpkqWmptr9999v/fr1s02bNlnv3r2tSpUqtmHDBvvkk09sw4YN9uCDD+bmbUIeY4xCboSMWzVq1LCKFSvaH/7wBxs2bJilpKTYU089ZZ988knSz3v55ZfbPffcY5dffrndeeed1qBBA3v11Vdt5syZsXblypWz008/3caMGWOVKlWyunXr2ty5c23s2LFWoUKFXL565Af6VCFWIHGmv3HeeedFxYsXj9avX5+wTZ8+faJixYpFGRkZ0TfffBOZWTRmzBivnTlJ2f369YvKlCkTa7NmzZqocePGUd26daMVK1ZEURTJNO7du3dHd911V9S8efOoZMmSUWpqatS4ceNowIAB0Zdffrnf17TveRcvXhy1b98+KlWqVJSWlhYNHDgw2rZtW6ztzp07o6FDh0Z16tSJUlJSourVq0cDBw6MNm/eHGu3Z8+eaNSoUVHDhg2jlJSUqFKlStGll14affvtt7F2mzZtinr37h1VqFAhKlKkSFQIPuJCQ/WHRL7//vvoiiuuiBo3bhyVKVMmSk1NjZo1axbdc8890S+//JLVrk6dOlG3bt28x7t9SiUS7+941Of41Vdf7TfV+Kabbopq1KgRFS1a1EuID+k77dq1i4477rhozpw5UatWraISJUpE1atXj26++WYvCR70J/pT4TNu3LisBHczi4oXLx5VqVIlateuXfSPf/zDO8/ur8+EnAPfe++9qGfPnlGdOnWiEiVKROnp6VG7du2il156KWs/EyZMiDp06BBVrVo1Kl68eFSjRo3owgsvjBYvXpx/bwSiKGKMYow6cPaNPQsXLtxvuwkTJkTHHHNMVLJkyejYY4+Nnnnmmahfv35RnTp1Yu3c63nVn6Io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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "import matplotlib.pyplot as plt\n", - "# Verify the data looks as expected\n" + "# Verify the data looks as expected\n", + "\n", + "# Number of samples to display\n", + "num_samples = 10\n", + "\n", + "# Create a figure with subplots\n", + "plt.figure(figsize=(15, 3))\n", + "for i in range(num_samples):\n", + " plt.subplot(1, num_samples, i + 1)\n", + " plt.imshow(X_train[i], cmap='gray') # Fashion MNIST images are grayscale\n", + " label_index = y_train[i].argmax() # Convert one-hot back to class index\n", + " plt.title(class_names[label_index])\n", + " plt.axis('off')\n", + "\n", + "plt.tight_layout()\n", + "plt.show()" ] }, { @@ -78,7 +131,7 @@ "source": [ "Reflection: Does the data look as expected? How is the quality of the images? Are there any issues with the dataset that you notice?\n", "\n", - "**Your answer here**" + "The data looks as expected. The image quality is a bit low resulting in slight ambiguity in classes like T-shirt/top and dress. " ] }, { @@ -101,23 +154,59 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "8563a7aa", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\annam\\miniconda3\\envs\\dsi_participant\\Lib\\site-packages\\keras\\src\\layers\\reshaping\\flatten.py:37: 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__(**kwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m18s\u001b[0m 9ms/step - accuracy: 0.7922 - loss: 0.6159 - val_accuracy: 0.8372 - val_loss: 0.4741\n", + "Epoch 2/5\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 7ms/step - accuracy: 0.8396 - loss: 0.4685 - val_accuracy: 0.8385 - val_loss: 0.4597\n", + "Epoch 3/5\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m12s\u001b[0m 7ms/step - accuracy: 0.8489 - loss: 0.4403 - val_accuracy: 0.8517 - val_loss: 0.4383\n", + "Epoch 4/5\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m13s\u001b[0m 8ms/step - accuracy: 0.8552 - loss: 0.4251 - val_accuracy: 0.8525 - val_loss: 0.4226\n", + "Epoch 5/5\n", + "\u001b[1m1688/1688\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m11s\u001b[0m 6ms/step - accuracy: 0.8560 - loss: 0.4175 - val_accuracy: 0.8552 - val_loss: 0.4116\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 7ms/step - accuracy: 0.8432 - loss: 0.4496\n", + "Test accuracy: 0.8432\n" + ] + } + ], "source": [ "from keras.models import Sequential\n", "from keras.layers import Dense, Flatten\n", "\n", "# Create a simple linear regression model\n", "model = Sequential()\n", + "model.add(Flatten(input_shape=(28, 28))) # Flatten 2D images to 1D vectors\n", + "\n", "# You can use `model.add()` to add layers to the model\n", + "model.add(Dense(10, activation='softmax')) # Output layer with 10 classes\n", "\n", "# Compile the model using `model.compile()`\n", + "model.compile(optimizer='adam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", "\n", "# Train the model with `model.fit()`\n", + "model.fit(X_train, y_train, epochs=5, batch_size=32, validation_split=0.1)\n", "\n", - "# Evaluate the model with `model.evaluate()`" + "# Evaluate the model with `model.evaluate()`\n", + "test_loss, test_acc = model.evaluate(X_test, y_test)\n", + "print(f\"Test accuracy: {test_acc:.4f}\")" ] }, { @@ -127,7 +216,7 @@ "source": [ "Reflection: What is the performance of the baseline model? How does it compare to what you expected? Why do you think the performance is at this level?\n", "\n", - "**Your answer here**" + "Performace is strong for a linear model, especially considering the simplicity of the architecture. The small gap between training and test accuracy suggests the model is not overfitting. The model performs at this level because its capacity is limited. A single dense layer can only learn linear decision boundaries. There is no feature exraction. The model sees raw pixel intensities, with no spatial awareness. 28x28 grayscale images limit the amount of visual detail available for classification." ] }, { @@ -151,23 +240,75 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "id": "3513cf3d", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\annam\\miniconda3\\envs\\dsi_participant\\Lib\\site-packages\\keras\\src\\layers\\convolutional\\base_conv.py:113: 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": [ + "Epoch 1/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m24s\u001b[0m 25ms/step - accuracy: 0.8468 - loss: 0.4362 - val_accuracy: 0.8778 - val_loss: 0.3456\n", + "Epoch 2/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m21s\u001b[0m 25ms/step - accuracy: 0.8936 - loss: 0.2994 - val_accuracy: 0.8983 - val_loss: 0.2885\n", + "Epoch 3/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 26ms/step - accuracy: 0.9096 - loss: 0.2528 - val_accuracy: 0.9052 - val_loss: 0.2653\n", + "Epoch 4/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 28ms/step - accuracy: 0.9190 - loss: 0.2210 - val_accuracy: 0.9092 - val_loss: 0.2617\n", + "Epoch 5/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 32ms/step - accuracy: 0.9302 - loss: 0.1920 - val_accuracy: 0.9067 - val_loss: 0.2572\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 10ms/step - accuracy: 0.9033 - loss: 0.2715\n", + "Test accuracy: 0.9033\n" + ] + } + ], "source": [ - "from keras.layers import Conv2D\n", + "from keras.models import Sequential\n", + "from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense\n", + "from keras.utils import to_categorical\n", + "from tensorflow.keras.datasets import fashion_mnist\n", + "\n", + "# Load and preprocess data\n", + "(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()\n", + "X_train = X_train.astype('float32') / 255.0\n", + "X_test = X_test.astype('float32') / 255.0\n", "\n", "# Reshape the data to include the channel dimension\n", "X_train = X_train.reshape(-1, 28, 28, 1)\n", "X_test = X_test.reshape(-1, 28, 28, 1)\n", "\n", + "# One-hot encode labels\n", + "y_train = to_categorical(y_train, num_classes=10)\n", + "y_test = to_categorical(y_test, num_classes=10)\n", + "\n", "# Create a simple CNN model\n", "model = Sequential()\n", + "model.add(Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))\n", + "model.add(MaxPooling2D(pool_size=(2, 2)))\n", + "model.add(Flatten())\n", + "model.add(Dense(128, activation='relu'))\n", + "model.add(Dense(10, activation='softmax')) # Output layer for 10 classes\n", + "\n", + "# Compile the model\n", + "model.compile(optimizer='adam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", "\n", "# Train the model\n", + "model.fit(X_train, y_train, epochs=5, batch_size=64, validation_split=0.1)\n", "\n", - "# Evaluate the model" + "# Evaluate the model\n", + "test_loss, test_acc = model.evaluate(X_test, y_test)\n", + "print(f\"Test accuracy: {test_acc:.4f}\")" ] }, { @@ -177,7 +318,7 @@ "source": [ "Reflection: Did the CNN model perform better than the baseline model? If so, by how much? What do you think contributed to this improvement?\n", "\n", - "**Your answer here**" + "Yes, the CNN model clearly outperformed the baseline linear model by 6.0 percentage points. Even a simple CNN with one convolutional layer and one dense layer can significantly outperform a linear model on image data because CNNs process the image in its 2D form, maintaining spatial relationships. The convolutional layer captures local patterns like edges, textures, and shapes, which is crucial for distinguishing similar classes. " ] }, { @@ -201,22 +342,164 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "id": "99d6f46c", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Testing model with 16 filters\n", + "\n", + "Testing model with 32 filters\n", + "\n", + "Testing model with 64 filters\n", + "\n", + "🔍 Filter Experiment Results:\n", + "Filters: 16, Accuracy: 0.9051, Loss: 0.2629\n", + "Filters: 32, Accuracy: 0.9091, Loss: 0.2509\n", + "Filters: 64, Accuracy: 0.9091, Loss: 0.2537\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# A. Test Hyperparameters" + "# A. Test Hyperparameters\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from tensorflow.keras.datasets import fashion_mnist\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense\n", + "from tensorflow.keras.utils import to_categorical\n", + "\n", + "# Load and preprocess Fashion MNIST data\n", + "(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()\n", + "X_train = X_train.astype('float32') / 255.0\n", + "X_test = X_test.astype('float32') / 255.0\n", + "X_train = X_train.reshape(-1, 28, 28, 1)\n", + "X_test = X_test.reshape(-1, 28, 28, 1)\n", + "y_train = to_categorical(y_train, num_classes=10)\n", + "y_test = to_categorical(y_test, num_classes=10)\n", + "\n", + "# Test different numbers of filters\n", + "filter_options = [16, 32, 64]\n", + "results_filters = []\n", + "\n", + "for filters in filter_options:\n", + " print(f\"\\nTesting model with {filters} filters\")\n", + " model = Sequential()\n", + " model.add(Conv2D(filters=filters, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))\n", + " model.add(MaxPooling2D(pool_size=(2, 2)))\n", + " model.add(Flatten())\n", + " model.add(Dense(128, activation='relu'))\n", + " model.add(Dense(10, activation='softmax'))\n", + "\n", + " model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", + " model.fit(X_train, y_train, epochs=5, batch_size=64, verbose=0)\n", + " test_loss, test_acc = model.evaluate(X_test, y_test, verbose=0)\n", + "\n", + " results_filters.append({'filters': filters, 'accuracy': test_acc, 'loss': test_loss})\n", + "\n", + "# Display results\n", + "print(\"\\n🔍 Filter Experiment Results:\")\n", + "for r in results_filters:\n", + " print(f\"Filters: {r['filters']}, Accuracy: {r['accuracy']:.4f}, Loss: {r['loss']:.4f}\")\n", + "\n", + "# Plot results\n", + "plt.figure(figsize=(8, 5))\n", + "plt.plot([r['filters'] for r in results_filters], [r['accuracy'] for r in results_filters], marker='o')\n", + "plt.title('Test Accuracy vs. Number of Filters')\n", + "plt.xlabel('Number of Filters')\n", + "plt.ylabel('Test Accuracy')\n", + "plt.grid(True)\n", + "plt.tight_layout()\n", + "plt.show()\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "dc43ac81", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Testing model with dropout=False\n", + "\n", + "Testing model with dropout=True\n", + "\n", + "🛡️ Dropout Experiment Results:\n", + "Dropout: False, Accuracy: 0.9129, Loss: 0.2464\n", + "Dropout: True, Accuracy: 0.9039, Loss: 0.2673\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAHqCAYAAADyPMGQAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQAFJREFUeJzt3Xl8TGf///H3ZI8lQSSxRaR2pdTaUJVYb7Q3/baqm11V0draov0qcrdo7xbVEu1tV1VVS6k1al+rSlVR7pZSEho0sTWyXL8//DLfjkk4Q2KieT0fj3k8zDXXuc5nTmbOvJ1zzRmbMcYIAAAAN+Xh7gIAAADuFgQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJ7iFzWazdNuwYcNtr+vy5csaOXLkLY31ww8/yGazydvbW/Hx8bddC25sw4YNTn/3FStWaOTIkVn2t9ls6tev350pzo1mzpwpm82mY8eO2ds+/fRTTZgwwanvsWPHZLPZ9O677965Av9i9OjRWrJkieX+f32/e3p6qmjRoqpZs6aef/557dixI/cKdZMDBw5o5MiRDn9L3F0ITnCL7du3O9zatGkjf39/p/batWvf9rouX76sUaNG3VJwmjp1qiQpLS1Ns2fPvu1acGO1a9d2+ruvWLFCo0aNcmNV7te2bVtt375dJUuWtLdlF5zczdXgJEmPP/64tm/fri1btuizzz5T586dtWPHDkVGRqp///65U6ibHDhwQKNGjSI43cW83F0A8qcHHnjA4X5wcLA8PDyc2t0pJSVFc+fOVc2aNZWYmKjp06dryJAh7i4rS1euXJGfn59sNpu7S7ktAQEBeeo1kFcEBwcrODjY3WXkmtDQUIe/e6tWrTRgwAD16tVLEydOVJUqVfTCCy9ku3xqaqpsNpu8vPhIQ+7jiBPyrKtXr+rNN99UlSpV5Ovrq+DgYHXr1k2///67Q79169YpKipKQUFB8vf3V9myZfXYY4/p8uXLOnbsmP0DZ9SoUfZTAl27dr3p+pcsWaKzZ8+qZ8+e6tKliw4fPqwtW7Y49UtJSVFMTIyqVq0qPz8/BQUFKTo6Wtu2bbP3ycjI0AcffKBatWrJ399fRYoU0QMPPKClS5fa+9hstixPSZUrV86h3szTNmvWrFH37t0VHBysAgUKKCUlRf/973/VrVs3VaxYUQUKFFDp0qX1yCOP6IcffnAa948//tDgwYN1zz33yNfXVyEhIWrTpo0OHTokY4wqVqyoVq1aOS138eJFBQYGqm/fvtluuw4dOujee+91aHvkkUdks9m0YMECe9t3330nm82mZcuWSXI+Vde1a1dNmjTJvn0yb9f/b33OnDmqWrWqChQooJo1a+qrr77KtjZJ+v333+Xj46Phw4c7PXbo0CHZbDZNnDhR0rUjli+//LIiIiLk5+enYsWKqW7dupo3b94N15GVevXqqW3btg5tNWrUkM1m065du+xtixYtks1ms//drj9VFxUVpeXLl+vXX3912C7XGzdunCIiIlSoUCFFRkZmeepr6dKlioyMVIECBVS4cGG1aNFC27dvd+jTtWtXlStXzmnZkSNHOqzXZrPp0qVLmjVrlr2mqKgoq5vHgaenpz788EMVL15c//73v+3tma+ROXPmaPDgwSpdurR8fX313//+V5I0ffp01axZ0/63evTRR3Xw4EGn51OoUCH9+OOPatasmQoWLKjg4GD169dPly9fduj7559/atiwYYqIiJCPj49Kly6tvn376o8//nDoZ+X9O3PmTHXo0EGSFB0dbd9GM2fOvKVtBPcgOCFPysjIULt27TR27Fg9/fTTWr58ucaOHau4uDhFRUXpypUrkq7N52jbtq18fHw0ffp0rVq1SmPHjlXBggV19epVlSxZUqtWrZIk9ejRw34KMKsPzOtNmzZNvr6+euaZZ9S9e3fZbDZNmzbNoU9aWppat26tf/3rX3r44Ye1ePFizZw5Uw0bNtTx48ft/bp27ar+/furXr16mj9/vj777DP985//vK3D9d27d5e3t7fmzJmjL774Qt7e3jp16pSCgoI0duxYrVq1SpMmTZKXl5caNGign376yb7shQsX9OCDD+qjjz5St27dtGzZMk2ZMkWVKlVSfHy8bDabXnzxRcXFxenIkSMO6509e7aSk5NvGJyaN2+uAwcO2OeFpaWlaePGjfL391dcXJy939q1a+Xl5ZXth+vw4cP1+OOPS3I8vfvXU1bLly/Xhx9+qJiYGC1cuND+YfnLL79kW19wcLAefvhhzZo1SxkZGQ6PzZgxQz4+PnrmmWckSYMGDVJsbKxeeuklrVq1SnPmzFGHDh109uzZbMe/0XbZtGmTUlNTJUmnT5/W/v37s9wuoaGhqlGjRpbjTJ48WY0aNVKJEiUctstfTZo0SXFxcZowYYLmzp2rS5cuqU2bNkpKSrL3+fTTT9WuXTsFBARo3rx5mjZtms6fP6+oqKgs/5NwM9u3b5e/v7/atGljr2ny5Mkuj5PJ399fzZs319GjR/Xbb785PDZs2DAdP35cU6ZM0bJlyxQSEqIxY8aoR48euvfee7Vo0SK9//772rdvnyIjI51ex6mpqWrTpo2aNWumJUuWqF+/fvroo4/UsWNHex9jjNq3b693331XnTp10vLlyzVo0CDNmjVLTZs2VUpKikvPp23btho9erSka3+fzG10fZhGHmeAPKBLly6mYMGC9vvz5s0zkszChQsd+u3atctIMpMnTzbGGPPFF18YSWbv3r3Zjv37778bSWbEiBGW6zl27Jjx8PAwTz75pL2tSZMmpmDBgiY5OdneNnv2bCPJ/Oc//8l2rE2bNhlJ5vXXX7/hOrOrMTw83HTp0sV+f8aMGUaS6dy5802fR1pamrl69aqpWLGiGThwoL09JibGSDJxcXHZLpucnGwKFy5s+vfv79BerVo1Ex0dfcP1/ve//zWSzOzZs40xxmzZssVIMq+++qqJiIiw92vRooVp2LCh/f769euNJLN+/Xp7W9++fU12uypJJjQ01OFvkpCQYDw8PMyYMWNuWOPSpUuNJLNmzRp7W1pamilVqpR57LHH7G3Vq1c37du3v+FYVq1du9ZIMps2bTLGGPPJJ5+YwoULmz59+jhs04oVK5qnn37afj/zb3706FF7W9u2bU14eLjTOo4ePWokmRo1api0tDR7+zfffGMkmXnz5hljjElPTzelSpUyNWrUMOnp6fZ+Fy5cMCEhIQ5/ly5dumS5rhEjRjj9bQoWLOjwer0ZSaZv377ZPj5kyBAjyezcudMY83+vkYceesih3/nz542/v79p06aNQ/vx48eNr6+vw/bs0qWLkWTef/99h75vvfWWkWS2bNlijDFm1apVRpJ55513HPrNnz/fSDIff/yxw/Ow8v5dsGCB02scdxeOOCFP+uqrr1SkSBE98sgjSktLs99q1aqlEiVK2E/l1KpVSz4+PurVq5dmzZp1w6MMrpgxY4YyMjLUvXt3e1v37t116dIlzZ8/3962cuVK+fn5OfS73sqVKyXphkdobsVjjz3m1JaWlqbRo0erWrVq8vHxkZeXl3x8fHTkyBGH0xUrV65UpUqV1Lx582zHL1y4sLp166aZM2fq0qVLkq6dFj1w4MBNv8lWvnx5lStXTmvXrpUkxcXFqUaNGnr22Wd19OhR/fzzz0pJSdGWLVtuWIMV0dHRKly4sP1+aGioQkJC9Ouvv95wudatW6tEiRKaMWOGvW316tU6deqUw9+zfv36WrlypYYOHaoNGzbYj3beikaNGsnPz89hu0RFRekf//iHtm3bpsuXL+vEiRM6cuTIbW+Xtm3bytPT037/vvvukyT7dvnpp5906tQpderUSR4e//dRUKhQIT322GPasWOH02krdzDGZNl+/et/+/btunLlitNp+LCwMDVt2lRff/210xiZRxUzPf3005Kk9evXS7r2epfkNGaHDh1UsGDBLMfE3x/BCXnS6dOn9ccff8jHx0fe3t4Ot4SEBCUmJkq69gG9du1ahYSEqG/fvipfvrzKly+v999//5bXnZGRoZkzZ6pUqVKqU6eO/vjjD/3xxx9q3ry5ChYs6HC67vfff1epUqUcPniu9/vvv8vT01MlSpS45Zqy8tfTVZkGDRqk4cOHq3379lq2bJl27typXbt2qWbNmg4f+L///rvKlClz03W8+OKLunDhgubOnStJ+vDDD1WmTBm1a9fupss2a9bM/sGydu1atWjRQjVq1FBoaKjWrl2rrVu36sqVK7cdEIKCgpzafH19bxpwvLy81KlTJy1evNg+X2XmzJkqWbKkw9yuiRMnasiQIVqyZImio6NVrFgxtW/f3unUjxV+fn5q1KiRPTh9/fXXatGihaKiopSenq7NmzfbT9nl9Hbx9fWVJPt2yTzVmNXrqFSpUsrIyND58+dvq4ackBn0SpUq5dB+fd03ez7Xn1r18vJy2kaZ79HMvmfPnpWXl5fTxHybzaYSJUrc0ula3P0ITsiTihcvrqCgIO3atSvL21/nTTRu3FjLli1TUlKS/SvMAwYM0GeffXZL6167dq1+/fVX+3yhokWLqmjRoipdurQuXbqkHTt26MCBA5KuzZU5deqU0zyZvwoODlZ6eroSEhJuuF5fX98s50xkt3POajLwJ598os6dO2v06NFq1aqV6tevr7p169qD5l9run7OSFYqVKig1q1ba9KkSTpx4oSWLl2q3r17OxzJyE6zZs108uRJffPNN9q5c6datGghSWratKni4uK0du1aFSpUyK3fouvWrZv+/PNPffbZZzp//ryWLl2qzp07Ozy/ggULatSoUTp06JASEhIUGxurHTt26JFHHrmldTZr1kzffPONvvnmG/32229q0aKFChcurHr16tm3S6VKlRQWFpZTTzNLmaEhq+uTnTp1Sh4eHipatKika4Evq9fm9a+rnHblyhWtXbtW5cuXdwr617/+b/Z8ihcv7tCWlpbm9N7KfI9mjhUUFKS0tDSnL6QYY5SQkOAwpqvvX9y9CE7Ikx5++GGdPXtW6enpqlu3rtOtcuXKTst4enqqQYMG9m9hfffdd5Kc/6d9M9OmTZOHh4eWLFmi9evXO9zmzJkj6do3d6Rrp3v+/PPPG34rpnXr1pKk2NjYG663XLly2rdvn0PbunXrdPHiRUt1S9c+TDKfb6bly5fr5MmTTjUdPnzYfiriRvr37699+/apS5cu8vT01HPPPWeplmbNmslms2n48OHy8PDQQw89JOnakZT169crLi5ODz30kLy9vW84jqt/P1dUrVpVDRo00IwZM/Tpp58qJSVF3bp1y7Z/aGiounbtqqeeeko//fTTLZ3Kat68udLS0jR8+HCVKVNGVapUsbevXbtW69ats3S0ycpRtRupXLmySpcurU8//dThdNilS5e0cOFC+zftpGuvzTNnzuj06dP2flevXtXq1atzvK5M6enp6tevn86ePWvpMiCRkZHy9/fXJ5984tD+22+/ad26dWrWrJnTMplHUjN9+umnkmT/skLmMtePuXDhQl26dMlhTKvv39x8PeMOcfMcK8AY4zw5PC0tzbRu3doUK1bMjBo1yqxcudKsXbvWzJw503Tp0sUsWrTIGGNMbGys6dChg5k5c6ZZt26dWbFihXn88ceNJLN69Wr7eOHh4aZy5cpm9erVZteuXQ6TbP8qMTHR+Pr6mtatW2dba+3atU1wcLC5evWqSU1NNdHR0cbb29u8+uqrZuXKlWb58uXmjTfesE/CNcaYTp06GZvNZnr16mWWLl1qVq9ebcaOHWsmTpxo7/Pmm28am81mhg8fbtauXWsmTpxoKlWqZAIDA7OcHL5r1y6n2jp37mx8fX3N+PHjzddff23eeecdExwcbMqUKWOaNGli75ecnGzuvfdeU6hQIfPmm2+aNWvWmC+//NIMGjTIrFu3zmncatWqGUnm2WefzXa7ZKVGjRpGksPE519//dVIMpLMuHHjHPpnNTk88/mOGDHC7Nixw+zatcukpKQYY7KfWHz9hNwb+eijj4wkU6ZMGYcJ0Znq169vYmJizJIlS8zGjRvNlClTTFBQkImMjLT3mTVrlvH09DSzZs266frS09NN0aJFjSTTrVs3e/vGjRvt2yXz9X39Nvjr6zZzYvbkyZPNzp077a+HzMnh//73v53WresmMM+dO9dIMm3atDFffvml+fzzz029evWMj4+P2bx5s73fL7/8Yry9vU1UVJRZvny5WbhwoWnSpImJiIhwmhzepEkTExISYpYuXWp27dplDh06dMPtIck8/vjjZvv27Wbbtm1m9erV5r333jM1a9Y0khy+1GDM/71GFixY4DTW6NGjjSTTqVMns2LFCjNnzhxToUIFExgYaA4fPmzv16VLF+Pj42PKli1r3nrrLbNmzRozcuRI4+Xl5fDez8jIMK1atTLe3t5m5MiRJi4uzrz33numUKFC5v777zd//vmnva/V9+8vv/xiJJn27dubzZs3m127dpnExMQbbiPkLQQn5AnXBydjjElNTTXvvvuuqVmzpvHz8zOFChUyVapUMc8//7w5cuSIMcaY7du3m0cffdSEh4cbX19fExQUZJo0aWKWLl3qMNbatWvN/fffb3x9fY2kbD9UJ0yYYCSZJUuWZFvrlClTHL7xd+XKFfPGG2+YihUrGh8fHxMUFGSaNm1qtm3bZl8mPT3djB8/3lSvXt34+PiYwMBAExkZaZYtW2bvk5KSYl599VUTFhZm/P39TZMmTczevXuz/VZdVsHp/PnzpkePHiYkJMQUKFDAPPjgg2bz5s2mSZMmDsEps2///v1N2bJljbe3twkJCTFt27bN8oNu5MiRRpLZsWNHttslKwMHDjSSzFtvveXQXrFiRSPJ7Nu3z6E9q+CUkpJievbsaYKDg43NZnMIEDkRnJKSkoy/v3+2344cOnSoqVu3rilatKjx9fU199xzjxk4cKDDh13m32TGjBmW1vnoo48aSWbu3Ln2tqtXr5qCBQsaDw8Pc/78eYf+WQWnc+fOmccff9wUKVLEvl2McS04GWPMkiVLTIMGDYyfn58pWLCgadasmdm6davTsitWrDC1atUy/v7+5p577jEffvhhlt+q27t3r2nUqJEpUKCAkeT0usuqpsybh4eHCQgIMDVq1DC9evUy27dvd+p/o+BkjDFTp0419913n/191q5dO/Pjjz869Mnc3+zbt89ERUUZf39/U6xYMfPCCy+YixcvOvS9cuWKGTJkiAkPDzfe3t6mZMmS5oUXXnD6G1l9/xpzbT8TERFhPD09XXrdIG+wGZPNVxYA4P+rW7eu00UagbtV165d9cUXX7h0GhzIxPXpAWQpOTlZ+/fv11dffaXdu3dr8eLF7i4JANyO4AQgS999952io6MVFBSkESNGqH379u4uCQDcjlN1AAAAFnE5AgAAAIsITgAAABYRnAAAACzKd5PDMzIydOrUKRUuXDjLn6wAAAD5izFGFy5cuOlvj0r5MDidOnUq138DCgAA3H1OnDhx0x9Az3fBqXDhwpKubZyAgAA3VwMAANwtOTlZYWFh9oxwI/kuOGWengsICCA4AQAAOytTeJgcDgAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIi93F/B3NHZPortLAO56Q+8v7u4SAMAJR5wAAAAsIjgBAABYRHACAACwiDlOAHAHpI4a7O4SgLua94j33F2CJI44AQAAWEZwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAscntwmjx5siIiIuTn56c6depo8+bNN+w/d+5c1axZUwUKFFDJkiXVrVs3nT179g5VCwAA8jO3Bqf58+drwIABev3117Vnzx41btxYrVu31vHjx7Psv2XLFnXu3Fk9evTQjz/+qAULFmjXrl3q2bPnHa4cAADkR24NTuPGjVOPHj3Us2dPVa1aVRMmTFBYWJhiY2Oz7L9jxw6VK1dOL730kiIiIvTggw/q+eef17fffnuHKwcAAPmR24LT1atXtXv3brVs2dKhvWXLltq2bVuWyzRs2FC//fabVqxYIWOMTp8+rS+++EJt27a9EyUDAIB8zm3BKTExUenp6QoNDXVoDw0NVUJCQpbLNGzYUHPnzlXHjh3l4+OjEiVKqEiRIvrggw+yXU9KSoqSk5MdbgAAALfC7ZPDbTabw31jjFNbpgMHDuill17SG2+8od27d2vVqlU6evSoevfune34Y8aMUWBgoP0WFhaWo/UDAID8w23BqXjx4vL09HQ6unTmzBmno1CZxowZo0aNGumVV17Rfffdp1atWmny5MmaPn264uPjs1xm2LBhSkpKst9OnDiR488FAADkD24LTj4+PqpTp47i4uIc2uPi4tSwYcMsl7l8+bI8PBxL9vT0lHTtSFVWfH19FRAQ4HADAAC4FW49VTdo0CBNnTpV06dP18GDBzVw4EAdP37cfupt2LBh6ty5s73/I488okWLFik2Nla//PKLtm7dqpdeekn169dXqVKl3PU0AABAPuHlzpV37NhRZ8+eVUxMjOLj41W9enWtWLFC4eHhkqT4+HiHazp17dpVFy5c0IcffqjBgwerSJEiatq0qd5++213PQUAAJCP2Ex257j+ppKTkxUYGKikpKRcO203dk9irowL5CdD7y/u7hJyVOqowe4uAbireY94L9fGdiUbuP1bdQAAAHcLghMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABY5PbgNHnyZEVERMjPz0916tTR5s2bb9g/JSVFr7/+usLDw+Xr66vy5ctr+vTpd6haAACQn3m5c+Xz58/XgAEDNHnyZDVq1EgfffSRWrdurQMHDqhs2bJZLvPEE0/o9OnTmjZtmipUqKAzZ84oLS3tDlcOAADyI7cGp3HjxqlHjx7q2bOnJGnChAlavXq1YmNjNWbMGKf+q1at0saNG/XLL7+oWLFikqRy5crdyZIBAEA+5rZTdVevXtXu3bvVsmVLh/aWLVtq27ZtWS6zdOlS1a1bV++8845Kly6tSpUq6eWXX9aVK1fuRMkAACCfc9sRp8TERKWnpys0NNShPTQ0VAkJCVku88svv2jLli3y8/PT4sWLlZiYqD59+ujcuXPZznNKSUlRSkqK/X5ycnLOPQkAAJCvuH1yuM1mc7hvjHFqy5SRkSGbzaa5c+eqfv36atOmjcaNG6eZM2dme9RpzJgxCgwMtN/CwsJy/DkAAID8wW3BqXjx4vL09HQ6unTmzBmno1CZSpYsqdKlSyswMNDeVrVqVRlj9Ntvv2W5zLBhw5SUlGS/nThxIueeBAAAyFfcFpx8fHxUp04dxcXFObTHxcWpYcOGWS7TqFEjnTp1ShcvXrS3HT58WB4eHipTpkyWy/j6+iogIMDhBgAAcCvceqpu0KBBmjp1qqZPn66DBw9q4MCBOn78uHr37i3p2tGizp072/s//fTTCgoKUrdu3XTgwAFt2rRJr7zyirp37y5/f393PQ0AAJBPuPVyBB07dtTZs2cVExOj+Ph4Va9eXStWrFB4eLgkKT4+XsePH7f3L1SokOLi4vTiiy+qbt26CgoK0hNPPKE333zTXU8BAADkIzZjjHF3EXdScnKyAgMDlZSUlGun7cbuScyVcYH8ZOj9xd1dQo5KHTXY3SUAdzXvEe/l2tiuZAO3f6sOAADgbuFycOratas2bdqUG7UAAADkaS4HpwsXLqhly5aqWLGiRo8erZMnT+ZGXQAAAHmOy8Fp4cKFOnnypPr166cFCxaoXLlyat26tb744gulpqbmRo0AAAB5wi3NcQoKClL//v21Z88effPNN6pQoYI6deqkUqVKaeDAgTpy5EhO1wkAAOB2tzU5PD4+XmvWrNGaNWvk6empNm3a6Mcff1S1atU0fvz4nKoRAAAgT3A5OKWmpmrhwoV6+OGHFR4ergULFmjgwIGKj4/XrFmztGbNGs2ZM0cxMTG5US8AAIDbuHwBzJIlSyojI0NPPfWUvvnmG9WqVcupT6tWrVSkSJEcKA8AACDvcDk4jR8/Xh06dJCfn1+2fYoWLaqjR4/eVmEAAAB5jcun6v75z3/q8uXLTu3nzp1TcnJyjhQFAACQF7kcnJ588kl99tlnTu2ff/65nnzyyRwpCgAAIC9yOTjt3LlT0dHRTu1RUVHauXNnjhQFAACQF7kcnFJSUpSWlubUnpqaqitXruRIUQAAAHmRy8GpXr16+vjjj53ap0yZojp16uRIUQAAAHmRy9+qe+utt9S8eXN9//33atasmSTp66+/1q5du7RmzZocLxAAACCvcPmIU6NGjbR9+3aFhYXp888/17Jly1ShQgXt27dPjRs3zo0aAQAA8gSXjzhJUq1atTR37tycrgUAACBPu6XglOnKlStKTU11aAsICLitggAAAPIql0/VXb58Wf369VNISIgKFSqkokWLOtwAAAD+rlwOTq+88orWrVunyZMny9fXV1OnTtWoUaNUqlQpzZ49OzdqBAAAyBNcPlW3bNkyzZ49W1FRUerevbsaN26sChUqKDw8XHPnztUzzzyTG3UCAAC4nctHnM6dO6eIiAhJ1+YznTt3TpL04IMPatOmTTlbHQAAQB7icnC65557dOzYMUlStWrV9Pnnn0u6diSqSJEiOVkbAABAnuJycOrWrZu+//57SdKwYcPsc50GDhyoV155JccLBAAAyCtcnuM0cOBA+7+jo6N16NAhffvttypfvrxq1qyZo8UBAADkJS4dcUpNTVV0dLQOHz5sbytbtqz+53/+h9AEAAD+9lwKTt7e3tq/f79sNltu1QMAAJBnuTzHqXPnzpo2bVpu1AIAAJCnuTzH6erVq5o6dari4uJUt25dFSxY0OHxcePG5VhxAAAAeYnLwWn//v2qXbu2JDnMdZLEKTwAAPC35nJwWr9+fW7UAQAAkOe5PMcJAAAgv3L5iFN0dPQNT8mtW7futgoCAADIq1wOTrVq1XK4n5qaqr1792r//v3q0qVLTtUFAACQ57gcnMaPH59l+8iRI3Xx4sXbLggAACCvyrE5Ts8++6ymT5+eU8MBAADkOTkWnLZv3y4/P7+cGg4AACDPcflU3f/8z/843DfGKD4+Xt9++62GDx+eY4UBAADkNS4Hp8DAQIf7Hh4eqly5smJiYtSyZcscKwwAACCvcTk4zZgxIzfqAAAAyPNcnuO0a9cu7dy506l9586d+vbbb3OkKAAAgLzI5eDUt29fnThxwqn95MmT6tu3b44UBQAAkBe5HJwOHDhg/5Hfv7r//vt14MCBHCkKAAAgL3I5OPn6+ur06dNO7fHx8fLycnnKFAAAwF3D5eDUokULDRs2TElJSfa2P/74Q6+99ppatGiRo8UBAADkJS4fInrvvff00EMPKTw8XPfff78kae/evQoNDdWcOXNyvEAAAIC8wuXgVLp0ae3bt09z587V999/L39/f3Xr1k1PPfWUvL29c6NGAACAPOGWJiUVLFhQvXr1yulaAAAA8jSX5ziNGTMmyx/znT59ut5+++0cKQoAACAvcjk4ffTRR6pSpYpT+7333qspU6bkSFEAAAB5kcvBKSEhQSVLlnRqDw4OVnx8fI4UBQAAkBe5HJzCwsK0detWp/atW7eqVKlSOVIUAABAXuTy5PCePXtqwIABSk1NVdOmTSVJX3/9tV599VUNHjw4xwsEAADIK1wOTq+++qrOnTunPn366OrVq5IkPz8/DRkyREOHDs3xAgEAAPIKl4OTzWbT22+/reHDh+vgwYPy9/dXxYoV5evrq7S0NH52BQAA/G25PMcpU6FChVSvXj1Vr15dP//8swYPHqzSpUvnZG0AAAB5yi0Hp4sXL2rq1KmKjIzUfffdp507d3KqDgAA/K25fF5ty5Ytmjp1qhYuXKiIiAgdOHBAGzduVKNGjXKjPgAAgDzD8hGnd955R1WqVNGTTz6p4OBgbdmyRfv27ZPNZlPRokVzs0YAAIA8wfIRp9dee01DhgxRTEyMPD09c7MmAACAPMnyEaeYmBgtWLBAERERGjJkiPbv35+bdQEAAOQ5loPTa6+9psOHD2vOnDlKSEjQAw88oJo1a8oYo/Pnz+dmjQAAAHmCy9+qa9KkiWbNmqX4+Hi98MILqlOnjpo0aaKGDRtq3LhxuVEjAABAnnDLlyMoXLiwevfurZ07d2rPnj2qX7++xo4dm5O1AQAA5Cm3HJz+qkaNGpowYYJOnjyZE8MBAADkSTkSnDJ5e3vn5HAAAAB5So4GJwAAgL8zghMAAIBFBCcAAACLXA5Onp6eOnPmjFP72bNnuaI4AAD4W3M5OBljsmxPSUmRj4/PbRcEAACQV1n+rbqJEydKkmw2m6ZOnapChQrZH0tPT9emTZtUpUqVnK8QAAAgj7AcnMaPHy/p2hGnKVOmOJyW8/HxUbly5TRlypScrxAAACCPsBycjh49KkmKjo7WokWLVLRo0VwrCgAAIC9yeY7T+vXrHUJTenq69u7dyw/9AgCAvz2Xg9OAAQM0bdo0SddC00MPPaTatWsrLCxMGzZsyOn6AAAA8gyXg9OCBQtUs2ZNSdKyZct07NgxHTp0SAMGDNDrr7+e4wUCAADkFS4Hp7Nnz6pEiRKSpBUrVqhDhw6qVKmSevTooR9++CHHCwQAAMgrXA5OoaGhOnDggNLT07Vq1So1b95cknT58uVbugDm5MmTFRERIT8/P9WpU0ebN2+2tNzWrVvl5eWlWrVqubxOAACAW+FycOrWrZueeOIJVa9eXTabTS1atJAk7dy50+XrOM2fP99+im/Pnj1q3LixWrdurePHj99wuaSkJHXu3FnNmjVztXwAAIBb5nJwGjlypKZOnapevXpp69at8vX1lXTtp1iGDh3q0ljjxo1Tjx491LNnT1WtWlUTJkxQWFiYYmNjb7jc888/r6efflqRkZGulg8AAHDLLF/H6a8ef/xxSdKff/5pb+vSpYtLY1y9elW7d+92ClstW7bUtm3bsl1uxowZ+vnnn/XJJ5/ozTffdGmdAAAAt8PlI07p6en617/+pdKlS6tQoUL65ZdfJEnDhw+3X6bAisTERKWnpys0NNShPTQ0VAkJCVkuc+TIEQ0dOlRz586Vl5e1zJeSkqLk5GSHGwAAwK1wOTi99dZbmjlzpt555x2HH/WtUaOGpk6d6nIBNpvN4b4xxqlNuhbYnn76aY0aNUqVKlWyPP6YMWMUGBhov4WFhblcIwAAgHQLwWn27Nn6+OOP9cwzzzh8i+6+++7ToUOHLI9TvHhxeXp6Oh1dOnPmjNNRKEm6cOGCvv32W/Xr109eXl7y8vJSTEyMvv/+e3l5eWndunVZrmfYsGFKSkqy306cOGG5RgAAgL9yeY7TyZMnVaFCBaf2jIwMpaamWh7Hx8dHderUUVxcnB599FF7e1xcnNq1a+fUPyAgwOk6UZMnT9a6dev0xRdfKCIiIsv1+Pr62iewAwAA3A6Xg9O9996rzZs3Kzw83KF9wYIFuv/++10aa9CgQerUqZPq1q2ryMhIffzxxzp+/Lh69+4t6drRopMnT2r27Nny8PBQ9erVHZYPCQmRn5+fUzsAAEBusBycunfvrvfff18jRoxQp06ddPLkSWVkZGjRokX66aefNHv2bH311Vcurbxjx446e/asYmJiFB8fr+rVq2vFihX2UBYfH3/TazoBAADcKTZjjLHS0dPTU/Hx8QoJCdHq1as1evRo7d69WxkZGapdu7beeOMNtWzZMrfrvW3JyckKDAxUUlKSAgICcmUdY/ck5sq4QH4y9P7i7i4hR6WOGuzuEoC7mveI93JtbFeygeUjTn/NV61atVKrVq1uvUIAAIC7kEvfqsvqMgEAAAD5hUuTwytVqnTT8HTu3LnbKggAACCvcik4jRo1SoGBgblVCwAAQJ7mUnB68sknFRISklu1AAAA5GmW5zgxvwkAAOR3loOTxasWAAAA/G1ZPlWXkZGRm3UAAADkeS7/yC8AAEB+RXACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACL3B6cJk+erIiICPn5+alOnTravHlztn0XLVqkFi1aKDg4WAEBAYqMjNTq1avvYLUAACA/c2twmj9/vgYMGKDXX39de/bsUePGjdW6dWsdP348y/6bNm1SixYttGLFCu3evVvR0dF65JFHtGfPnjtcOQAAyI9sxhjjrpU3aNBAtWvXVmxsrL2tatWqat++vcaMGWNpjHvvvVcdO3bUG2+8Yal/cnKyAgMDlZSUpICAgFuq+2bG7knMlXGB/GTo/cXdXUKOSh012N0lAHc17xHv5drYrmQDtx1xunr1qnbv3q2WLVs6tLds2VLbtm2zNEZGRoYuXLigYsWKZdsnJSVFycnJDjcAAIBb4bbglJiYqPT0dIWGhjq0h4aGKiEhwdIY7733ni5duqQnnngi2z5jxoxRYGCg/RYWFnZbdQMAgPzL7ZPDbTabw31jjFNbVubNm6eRI0dq/vz5CgkJybbfsGHDlJSUZL+dOHHitmsGAAD5k5e7Vly8eHF5eno6HV06c+aM01Go682fP189evTQggUL1Lx58xv29fX1la+v723XCwAA4LYjTj4+PqpTp47i4uIc2uPi4tSwYcNsl5s3b566du2qTz/9VG3bts3tMgEAAOzcdsRJkgYNGqROnTqpbt26ioyM1Mcff6zjx4+rd+/ekq6dZjt58qRmz54t6Vpo6ty5s95//3098MAD9qNV/v7+CgwMdNvzAAAA+YNbg1PHjh119uxZxcTEKD4+XtWrV9eKFSsUHh4uSYqPj3e4ptNHH32ktLQ09e3bV3379rW3d+nSRTNnzrzT5QMAgHzGrcFJkvr06aM+ffpk+dj1YWjDhg25XxAAAEA23P6tOgAAgLsFwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAsIjgBAABYRHACAACwiOAEAABgEcEJAADAIoITAACARQQnAAAAiwhOAAAAFhGcAAAALCI4AQAAWERwAgAAsIjgBAAAYBHBCQAAwCKCEwAAgEUEJwAAAIsITgAAABYRnAAAACwiOAEAAFhEcAIAALCI4AQAAGARwQkAAMAighMAAIBFBCcAAACLCE4AAAAWEZwAAAAscntwmjx5siIiIuTn56c6depo8+bNN+y/ceNG1alTR35+frrnnns0ZcqUO1QpAADI79wanObPn68BAwbo9ddf1549e9S4cWO1bt1ax48fz7L/0aNH1aZNGzVu3Fh79uzRa6+9ppdeekkLFy68w5UDAID8yK3Bady4cerRo4d69uypqlWrasKECQoLC1NsbGyW/adMmaKyZctqwoQJqlq1qnr27Knu3bvr3XffvcOVAwCA/MjLXSu+evWqdu/eraFDhzq0t2zZUtu2bctyme3bt6tly5YOba1atdK0adOUmpoqb29vp2VSUlKUkpJiv5+UlCRJSk5Ovt2nkK0/L17ItbGB/CI52cfdJeSo1D9Tbt4JQLa8c/FzOzMTGGNu2tdtwSkxMVHp6ekKDQ11aA8NDVVCQkKWyyQkJGTZPy0tTYmJiSpZsqTTMmPGjNGoUaOc2sPCwm6jegC5zfldCyBfGzsp11dx4cIFBQYG3rCP24JTJpvN5nDfGOPUdrP+WbVnGjZsmAYNGmS/n5GRoXPnzikoKOiG68HfV3JyssLCwnTixAkFBAS4uxwAeQD7hfzNGKMLFy6oVKlSN+3rtuBUvHhxeXp6Oh1dOnPmjNNRpUwlSpTIsr+Xl5eCgoKyXMbX11e+vr4ObUWKFLn1wvG3ERAQwA4SgAP2C/nXzY40ZXLb5HAfHx/VqVNHcXFxDu1xcXFq2LBhlstERkY69V+zZo3q1q2b5fwmAACAnOTWb9UNGjRIU6dO1fTp03Xw4EENHDhQx48fV+/evSVdO83WuXNne//evXvr119/1aBBg3Tw4EFNnz5d06ZN08svv+yupwAAAPIRt85x6tixo86ePauYmBjFx8erevXqWrFihcLDwyVJ8fHxDtd0ioiI0IoVKzRw4EBNmjRJpUqV0sSJE/XYY4+56yngLuTr66sRI0Y4ncIFkH+xX4BVNmPlu3cAAABw/0+uAAAA3C0ITgAAABYRnAAAACwiOAEA3G7Dhg2y2Wz6448/btivXLlymjBhwh2pCcgKwQm5pmvXrrLZbBo7dqxD+5IlS277qu0zZ86UzWaTzWaTp6enihYtqgYNGigmJsb+e4R3i65du6p9+/buLgPIEVOmTFHhwoWVlpZmb7t48aK8vb3VuHFjh76bN2+WzWbT4cOH1bBhQ8XHx9svQjhz5swcu1hx5r7IZrPJ29tboaGhatGihaZPn66MjIwcWcedQnB0P4ITcpWfn5/efvttnT9/PsfHDggIUHx8vH777Tdt27ZNvXr10uzZs1WrVi2dOnUq2+WuXr2a47UAuCY6OloXL17Ut99+a2/bvHmzSpQooV27duny5cv29g0bNqhUqVKqVKmSfHx8VKJEiVz7Kax//OMfio+P17Fjx7Ry5UpFR0erf//+evjhhx1C3vVSU1NzpR7cvQhOyFXNmzdXiRIlNGbMmBv2W7hwoe699175+vqqXLlyeu+99246ts1mU4kSJVSyZElVrVpVPXr00LZt23Tx4kW9+uqr9n5RUVHq16+fBg0apOLFi6tFixaSpI0bN6p+/fry9fVVyZIlNXToUIcdaOZy/fr1U5EiRRQUFKT//d//dfj17PPnz6tz584qWrSoChQooNatW+vIkSP2x0eOHKlatWo51D1hwgSVK1fO/visWbP05Zdf2v9HvGHDhps+dyCvqly5skqVKuXwOt6wYYPatWun8uXLa9u2bQ7t0dHR9n9nnqrbsGGDunXrpqSkJPv7YuTIkfblLl++rO7du6tw4cIqW7asPv7445vW5evrqxIlSqh06dKqXbu2XnvtNX355ZdauXKlZs6cae9ns9k0ZcoUtWvXTgULFtSbb74pSYqNjVX58uXl4+OjypUra86cOQ7j22w2xcbGqnXr1vL391dERIQWLFjg0OeHH35Q06ZN5e/vr6CgIPXq1UsXL160Px4VFaUBAwY4LNO+fXt17drV/vivv/6qgQMH2rcL7jyCE3KVp6enRo8erQ8++EC//fZbln12796tJ554Qk8++aR++OEHjRw5UsOHD3fYmVkVEhKiZ555RkuXLlV6erq9fdasWfLy8tLWrVv10Ucf6eTJk2rTpo3q1aun77//XrGxsZo2bZp9J3n9cjt37tTE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "# B. Test presence or absence of regularization" + "# B. Test presence or absence of regularization\n", + "\n", + "from tensorflow.keras.layers import Dropout\n", + "\n", + "# Use fixed number of filters for this test\n", + "filters = 32\n", + "dropout_options = [False, True]\n", + "results_dropout = []\n", + "\n", + "for use_dropout in dropout_options:\n", + " print(f\"\\nTesting model with dropout={use_dropout}\")\n", + " model = Sequential()\n", + " model.add(Conv2D(filters=filters, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))\n", + " model.add(MaxPooling2D(pool_size=(2, 2)))\n", + " model.add(Flatten())\n", + " model.add(Dense(128, activation='relu'))\n", + " if use_dropout:\n", + " model.add(Dropout(0.5))\n", + " model.add(Dense(10, activation='softmax'))\n", + "\n", + " model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", + " model.fit(X_train, y_train, epochs=5, batch_size=64, verbose=0)\n", + " test_loss, test_acc = model.evaluate(X_test, y_test, verbose=0)\n", + "\n", + " results_dropout.append({'dropout': use_dropout, 'accuracy': test_acc, 'loss': test_loss})\n", + "\n", + "# Display results\n", + "print(\"\\n🛡️ Dropout Experiment Results:\")\n", + "for r in results_dropout:\n", + " print(f\"Dropout: {r['dropout']}, Accuracy: {r['accuracy']:.4f}, Loss: {r['loss']:.4f}\")\n", + "\n", + "# Plot results\n", + "plt.figure(figsize=(6, 5))\n", + "labels = ['No Dropout', 'With Dropout']\n", + "accs = [r['accuracy'] for r in results_dropout]\n", + "plt.bar(labels, accs, color=['skyblue', 'salmon'])\n", + "plt.title('Test Accuracy with vs. without Dropout')\n", + "plt.ylabel('Test Accuracy')\n", + "plt.tight_layout()\n", + "plt.show()\n" ] }, { @@ -226,7 +509,7 @@ "source": [ "Reflection: Report on the performance of the models you tested. Did any of the changes you made improve the model's performance? If so, which ones? What do you think contributed to these improvements? Finally, what combination of hyperparameters and regularization techniques yielded the best performance?\n", "\n", - "**Your answer here**" + "Increasing the number of filters from 16 to 32 improved accuracy from 90.51% to 90.91% and removing dropout further boosted accuracy to 91.29%, the highest across all experiments. More filters allowed the model to learn richer and more diverse spatial features. No dropout helped the model retain full capacity during training, which worked well given the dataset's simplicity and size. Best performing configuration is 32 filters without dropout. " ] }, { @@ -244,11 +527,69 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "31f926d1", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m27s\u001b[0m 29ms/step - accuracy: 0.8492 - loss: 0.4295 - val_accuracy: 0.8847 - val_loss: 0.3231\n", + "Epoch 2/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m43s\u001b[0m 31ms/step - accuracy: 0.8975 - loss: 0.2875 - val_accuracy: 0.9022 - val_loss: 0.2767\n", + "Epoch 3/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m25s\u001b[0m 30ms/step - accuracy: 0.9125 - loss: 0.2427 - val_accuracy: 0.9075 - val_loss: 0.2593\n", + "Epoch 4/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m28s\u001b[0m 33ms/step - accuracy: 0.9229 - loss: 0.2134 - val_accuracy: 0.9078 - val_loss: 0.2536\n", + "Epoch 5/5\n", + "\u001b[1m844/844\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m30s\u001b[0m 35ms/step - accuracy: 0.9311 - loss: 0.1872 - val_accuracy: 0.9167 - val_loss: 0.2439\n", + "\u001b[1m313/313\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m3s\u001b[0m 11ms/step - accuracy: 0.9088 - loss: 0.2548\n", + "\n", + "🎯 Final Model Performance:\n", + "Test Accuracy: 0.9088\n", + "Test Loss: 0.2548\n" + ] + } + ], + "source": [ + "from tensorflow.keras.datasets import fashion_mnist\n", + "from tensorflow.keras.models import Sequential\n", + "from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense\n", + "from tensorflow.keras.utils import to_categorical\n", + "\n", + "# Load and preprocess data\n", + "(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()\n", + "X_train = X_train.astype('float32') / 255.0\n", + "X_test = X_test.astype('float32') / 255.0\n", + "X_train = X_train.reshape(-1, 28, 28, 1)\n", + "X_test = X_test.reshape(-1, 28, 28, 1)\n", + "y_train = to_categorical(y_train, num_classes=10)\n", + "y_test = to_categorical(y_test, num_classes=10)\n", + "\n", + "# Build final model\n", + "model = Sequential()\n", + "model.add(Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))\n", + "model.add(MaxPooling2D(pool_size=(2, 2)))\n", + "model.add(Flatten())\n", + "model.add(Dense(128, activation='relu'))\n", + "model.add(Dense(10, activation='softmax'))\n", + "\n", + "# Compile model\n", + "model.compile(optimizer='adam',\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", + "\n", + "# Train model\n", + "model.fit(X_train, y_train, epochs=5, batch_size=64, validation_split=0.1)\n", + "\n", + "# Evaluate model\n", + "test_loss, test_acc = model.evaluate(X_test, y_test)\n", + "print(f\"\\n🎯 Final Model Performance:\")\n", + "print(f\"Test Accuracy: {test_acc:.4f}\")\n", + "print(f\"Test Loss: {test_loss:.4f}\")\n" + ] }, { "cell_type": "markdown", @@ -257,7 +598,7 @@ "source": [ "Reflection: How does the final model's performance compare to the baseline and the CNN model? What do you think contributed to the final model's performance? If you had time, what other experiments would you run to further improve the model's performance?\n", "\n", - "**Your answer here**" + "Final CNN (32 layers, no dropout) model outperformed initial CNN (0.2548 vs. 0.2715 in test loss) and baseline linear model (0.9088 vs. 0.8432 in test accuracy). Simple, but effective architecture allowed the model to capture spatial hierarchies without unnecessary complexity, balanced filter count (32) and no dropout regularization contributed to the better performance. To further improve the model's performance, a second Conv2D layer could be added to capture deeper spatial features and patterns, longer training (10-20 epochs) would allow deeper convergence, learning rate schedules could be used to refine optimization." ] }, { @@ -287,7 +628,7 @@ ], "metadata": { "kernelspec": { - "display_name": "deep_learning", + "display_name": "dsi_participant", "language": "python", "name": "python3" }, @@ -301,7 +642,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.11" + "version": "3.13.5" } }, "nbformat": 4,