From b7a98bc2579acd2adca339870f16086588ef2176 Mon Sep 17 00:00:00 2001 From: Wolves Date: Thu, 13 Mar 2025 20:26:57 +0800 Subject: [PATCH] 250313 --- README.md | 2 +- lab/8_cnn-yolo.ipynb | 174 +++++++++++++++++++++---------------------- 2 files changed, 84 insertions(+), 92 deletions(-) diff --git a/README.md b/README.md index e36edaf..8a31fd7 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ conda activate ail conda install pytorch::pytorch torchvision torchaudio -c pytorch -y # tensorflow mac apple silicon -pip install tensorflow-macos +pip install tensorflow-macos==2.15.0 pip install tensorflow-metal pip install -r requirements.txt diff --git a/lab/8_cnn-yolo.ipynb b/lab/8_cnn-yolo.ipynb index 0d52080..1198702 100644 --- a/lab/8_cnn-yolo.ipynb +++ b/lab/8_cnn-yolo.ipynb @@ -10,78 +10,57 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-03-13T10:10:31.080622Z", - "start_time": "2025-03-13T10:10:31.074650Z" + "end_time": "2025-03-13T12:25:56.129548Z", + "start_time": "2025-03-13T12:25:13.734410Z" } }, "cell_type": "code", "source": [ "import tensorflow as tf\n", - "print(tf.__version__) # 确保输出为2.16.x\n", - "print(tf.keras.__version__)" - ], - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "2.16.2\n", - "3.8.0\n" - ] - } - ], - "execution_count": 5 - }, - { - "cell_type": "code", - "metadata": { - "ExecuteTime": { - "end_time": "2025-03-13T10:00:58.363886Z", - "start_time": "2025-03-13T10:00:34.418446Z" - } - }, - "source": [ - "import tensorflow as tf\n", - "from tensorflow.keras import layers, models\n", - "from tensorflow.keras.datasets import mnist\n", + "import tensorflow.keras as keras\n", + "from keras import layers\n", "import matplotlib.pyplot as plt\n", "\n", - "# 加载MNIST数据集\n", - "(x_train, y_train), (x_test, y_test) = mnist.load_data()\n", + "print(\"可用设备:\", tf.config.list_physical_devices())\n", "\n", - "# 数据预处理\n", - "x_train = x_train.reshape(-1, 28*28).astype('float32') / 255.0\n", - "x_test = x_test.reshape(-1, 28*28).astype('float32') / 255.0\n", + "# 加载mnist数据集\n", + "(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()\n", "\n", - "# 将标签转换为one-hot编码\n", - "y_train = tf.keras.utils.to_categorical(y_train, 10)\n", - "y_test = tf.keras.utils.to_categorical(y_test, 10)\n", "\n", - "# 构建全连接神经网络模型\n", - "model = models.Sequential([\n", - " layers.Dense(512, activation='relu', input_shape=(28*28,)),\n", - " layers.Dropout(0.2),\n", - " layers.Dense(256, activation='relu'),\n", - " layers.Dropout(0.2),\n", - " layers.Dense(10, activation='softmax')\n", - "])\n", + "# 处理x数据,mnist数据集为灰度图片,范围为0-255,直接除以255,等同归一化\n", + "x_train = x_train.reshape(-1, 28 * 28).astype('float32') / 255.0\n", + "x_test = x_test.reshape(-1, 28 * 28).astype('float32') / 255.0\n", "\n", - "# 编译模型\n", + "# 处理y数据,mnist数据集为0-9的数字,需要将其转换为one-hot编码\n", + "y_train = keras.utils.to_categorical(y_train,10)\n", + "y_test = keras.utils.to_categorical(y_test,10)\n", + "\n", + "# 构建神经网络\n", + "model = keras.Sequential(\n", + " [\n", + " layers.Dense(256, activation='relu',input_shape=(28*28,)),\n", + " layers.Dropout(0.2),\n", + " layers.Dense(128, activation='tanh'),\n", + " layers.Dropout(0.2),\n", + " layers.Dense(10, activation='softmax')\n", + " ]\n", + ")\n", + "\n", + "# 编译模型 自适应矩估计\n", "model.compile(optimizer='adam',\n", " loss='categorical_crossentropy',\n", " metrics=['accuracy'])\n", "\n", - "# 训练模型\n", - "history = model.fit(x_train, y_train, \n", - " epochs=10, \n", - " batch_size=128, \n", - " validation_split=0.2)\n", + "# 训练模型,验证集比例为0.2(帮助adam判断是否需要调整参数),训练10轮\n", + "history = model.fit(x_train, y_train,\n", + " batch_size=128,\n", + " epochs=10,\n", + " validation_split=0.2)\n", "\n", - "# 评估模型\n", - "test_loss, test_acc = model.evaluate(x_test, y_test)\n", + "test_loss,test_acc = model.evaluate(x_test, y_test)\n", "print(f'accuracy: {test_acc:.4f}')\n", "\n", - "# 绘制训练过程\n", + "#plt绘制\n", "plt.figure(figsize=(12, 4))\n", "\n", "plt.subplot(1, 2, 1)\n", @@ -103,65 +82,78 @@ "plt.show()\n" ], "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/wolves/mambaforge/envs/ail/lib/python3.10/site-packages/keras/src/layers/core/dense.py:87: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", - " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n", - "2025-03-13 18:00:52.176862: I metal_plugin/src/device/metal_device.cc:1154] Metal device set to: Apple M1\n", - "2025-03-13 18:00:52.176900: I metal_plugin/src/device/metal_device.cc:296] systemMemory: 16.00 GB\n", - "2025-03-13 18:00:52.176905: I metal_plugin/src/device/metal_device.cc:313] maxCacheSize: 5.33 GB\n", - "2025-03-13 18:00:52.176939: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.\n", - "2025-03-13 18:00:52.176949: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: )\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1/10\n" + "可用设备: [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU'), PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "2025-03-13 18:00:52.721501: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:117] Plugin optimizer for device_type GPU is enabled.\n" + "2025-03-13 20:25:16.980648: I metal_plugin/src/device/metal_device.cc:1154] Metal device set to: Apple M1\n", + "2025-03-13 20:25:16.980672: I metal_plugin/src/device/metal_device.cc:296] systemMemory: 16.00 GB\n", + "2025-03-13 20:25:16.980678: I metal_plugin/src/device/metal_device.cc:313] maxCacheSize: 5.33 GB\n", + "2025-03-13 20:25:16.980707: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:306] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support.\n", + "2025-03-13 20:25:16.980720: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:272] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: )\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "\u001B[1m302/375\u001B[0m \u001B[32m━━━━━━━━━━━━━━━━\u001B[0m\u001B[37m━━━━\u001B[0m \u001B[1m1s\u001B[0m 14ms/step - accuracy: 0.7914 - loss: 0.6815" + "Epoch 1/10\n", + " 1/375 [..............................] - ETA: 2:01 - loss: 2.5041 - accuracy: 0.0781" ] }, { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", - "Cell \u001B[0;32mIn[2], line 32\u001B[0m\n\u001B[1;32m 27\u001B[0m model\u001B[38;5;241m.\u001B[39mcompile(optimizer\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124madam\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[1;32m 28\u001B[0m loss\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mcategorical_crossentropy\u001B[39m\u001B[38;5;124m'\u001B[39m,\n\u001B[1;32m 29\u001B[0m metrics\u001B[38;5;241m=\u001B[39m[\u001B[38;5;124m'\u001B[39m\u001B[38;5;124maccuracy\u001B[39m\u001B[38;5;124m'\u001B[39m])\n\u001B[1;32m 31\u001B[0m \u001B[38;5;66;03m# 训练模型\u001B[39;00m\n\u001B[0;32m---> 32\u001B[0m history \u001B[38;5;241m=\u001B[39m \u001B[43mmodel\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfit\u001B[49m\u001B[43m(\u001B[49m\u001B[43mx_train\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43my_train\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\n\u001B[1;32m 33\u001B[0m \u001B[43m \u001B[49m\u001B[43mepochs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m10\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\n\u001B[1;32m 34\u001B[0m \u001B[43m \u001B[49m\u001B[43mbatch_size\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m128\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\n\u001B[1;32m 35\u001B[0m \u001B[43m \u001B[49m\u001B[43mvalidation_split\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m0.2\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[1;32m 37\u001B[0m \u001B[38;5;66;03m# 评估模型\u001B[39;00m\n\u001B[1;32m 38\u001B[0m test_loss, test_acc \u001B[38;5;241m=\u001B[39m model\u001B[38;5;241m.\u001B[39mevaluate(x_test, y_test)\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py:117\u001B[0m, in \u001B[0;36mfilter_traceback..error_handler\u001B[0;34m(*args, **kwargs)\u001B[0m\n\u001B[1;32m 115\u001B[0m filtered_tb \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[1;32m 116\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m--> 117\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfn\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 118\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mException\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[1;32m 119\u001B[0m filtered_tb \u001B[38;5;241m=\u001B[39m _process_traceback_frames(e\u001B[38;5;241m.\u001B[39m__traceback__)\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/keras/src/backend/tensorflow/trainer.py:371\u001B[0m, in \u001B[0;36mTensorFlowTrainer.fit\u001B[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq)\u001B[0m\n\u001B[1;32m 369\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m step, iterator \u001B[38;5;129;01min\u001B[39;00m epoch_iterator:\n\u001B[1;32m 370\u001B[0m callbacks\u001B[38;5;241m.\u001B[39mon_train_batch_begin(step)\n\u001B[0;32m--> 371\u001B[0m logs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mtrain_function\u001B[49m\u001B[43m(\u001B[49m\u001B[43miterator\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 372\u001B[0m callbacks\u001B[38;5;241m.\u001B[39mon_train_batch_end(step, logs)\n\u001B[1;32m 373\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstop_training:\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/keras/src/backend/tensorflow/trainer.py:219\u001B[0m, in \u001B[0;36mTensorFlowTrainer._make_function..function\u001B[0;34m(iterator)\u001B[0m\n\u001B[1;32m 215\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;21mfunction\u001B[39m(iterator):\n\u001B[1;32m 216\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(\n\u001B[1;32m 217\u001B[0m iterator, (tf\u001B[38;5;241m.\u001B[39mdata\u001B[38;5;241m.\u001B[39mIterator, tf\u001B[38;5;241m.\u001B[39mdistribute\u001B[38;5;241m.\u001B[39mDistributedIterator)\n\u001B[1;32m 218\u001B[0m ):\n\u001B[0;32m--> 219\u001B[0m opt_outputs \u001B[38;5;241m=\u001B[39m \u001B[43mmulti_step_on_iterator\u001B[49m\u001B[43m(\u001B[49m\u001B[43miterator\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 220\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m opt_outputs\u001B[38;5;241m.\u001B[39mhas_value():\n\u001B[1;32m 221\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mStopIteration\u001B[39;00m\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/util/traceback_utils.py:150\u001B[0m, in \u001B[0;36mfilter_traceback..error_handler\u001B[0;34m(*args, **kwargs)\u001B[0m\n\u001B[1;32m 148\u001B[0m filtered_tb \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[1;32m 149\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m--> 150\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfn\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 151\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mException\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[1;32m 152\u001B[0m filtered_tb \u001B[38;5;241m=\u001B[39m _process_traceback_frames(e\u001B[38;5;241m.\u001B[39m__traceback__)\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py:833\u001B[0m, in \u001B[0;36mFunction.__call__\u001B[0;34m(self, *args, **kwds)\u001B[0m\n\u001B[1;32m 830\u001B[0m compiler \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mxla\u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_jit_compile \u001B[38;5;28;01melse\u001B[39;00m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mnonXla\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 832\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m OptionalXlaContext(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_jit_compile):\n\u001B[0;32m--> 833\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwds\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 835\u001B[0m new_tracing_count \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mexperimental_get_tracing_count()\n\u001B[1;32m 836\u001B[0m without_tracing \u001B[38;5;241m=\u001B[39m (tracing_count \u001B[38;5;241m==\u001B[39m new_tracing_count)\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/polymorphic_function/polymorphic_function.py:878\u001B[0m, in \u001B[0;36mFunction._call\u001B[0;34m(self, *args, **kwds)\u001B[0m\n\u001B[1;32m 875\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_lock\u001B[38;5;241m.\u001B[39mrelease()\n\u001B[1;32m 876\u001B[0m \u001B[38;5;66;03m# In this case we have not created variables on the first call. So we can\u001B[39;00m\n\u001B[1;32m 877\u001B[0m \u001B[38;5;66;03m# run the first trace but we should fail if variables are created.\u001B[39;00m\n\u001B[0;32m--> 878\u001B[0m results \u001B[38;5;241m=\u001B[39m \u001B[43mtracing_compilation\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcall_function\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 879\u001B[0m \u001B[43m \u001B[49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mkwds\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_variable_creation_config\u001B[49m\n\u001B[1;32m 880\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 881\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_created_variables:\n\u001B[1;32m 882\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mValueError\u001B[39;00m(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mCreating variables on a non-first call to a function\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 883\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m decorated with tf.function.\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/polymorphic_function/tracing_compilation.py:139\u001B[0m, in \u001B[0;36mcall_function\u001B[0;34m(args, kwargs, tracing_options)\u001B[0m\n\u001B[1;32m 137\u001B[0m bound_args \u001B[38;5;241m=\u001B[39m function\u001B[38;5;241m.\u001B[39mfunction_type\u001B[38;5;241m.\u001B[39mbind(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[1;32m 138\u001B[0m flat_inputs \u001B[38;5;241m=\u001B[39m function\u001B[38;5;241m.\u001B[39mfunction_type\u001B[38;5;241m.\u001B[39munpack_inputs(bound_args)\n\u001B[0;32m--> 139\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfunction\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_flat\u001B[49m\u001B[43m(\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;66;43;03m# pylint: disable=protected-access\u001B[39;49;00m\n\u001B[1;32m 140\u001B[0m \u001B[43m \u001B[49m\u001B[43mflat_inputs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcaptured_inputs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mfunction\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcaptured_inputs\u001B[49m\n\u001B[1;32m 141\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/polymorphic_function/concrete_function.py:1322\u001B[0m, in \u001B[0;36mConcreteFunction._call_flat\u001B[0;34m(self, tensor_inputs, captured_inputs)\u001B[0m\n\u001B[1;32m 1318\u001B[0m possible_gradient_type \u001B[38;5;241m=\u001B[39m gradients_util\u001B[38;5;241m.\u001B[39mPossibleTapeGradientTypes(args)\n\u001B[1;32m 1319\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m (possible_gradient_type \u001B[38;5;241m==\u001B[39m gradients_util\u001B[38;5;241m.\u001B[39mPOSSIBLE_GRADIENT_TYPES_NONE\n\u001B[1;32m 1320\u001B[0m \u001B[38;5;129;01mand\u001B[39;00m executing_eagerly):\n\u001B[1;32m 1321\u001B[0m \u001B[38;5;66;03m# No tape is watching; skip to running the function.\u001B[39;00m\n\u001B[0;32m-> 1322\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_inference_function\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcall_preflattened\u001B[49m\u001B[43m(\u001B[49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1323\u001B[0m forward_backward \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_select_forward_and_backward_functions(\n\u001B[1;32m 1324\u001B[0m args,\n\u001B[1;32m 1325\u001B[0m possible_gradient_type,\n\u001B[1;32m 1326\u001B[0m executing_eagerly)\n\u001B[1;32m 1327\u001B[0m forward_function, args_with_tangents \u001B[38;5;241m=\u001B[39m forward_backward\u001B[38;5;241m.\u001B[39mforward()\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/polymorphic_function/atomic_function.py:216\u001B[0m, in \u001B[0;36mAtomicFunction.call_preflattened\u001B[0;34m(self, args)\u001B[0m\n\u001B[1;32m 214\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;21mcall_preflattened\u001B[39m(\u001B[38;5;28mself\u001B[39m, args: Sequence[core\u001B[38;5;241m.\u001B[39mTensor]) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m Any:\n\u001B[1;32m 215\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"Calls with flattened tensor inputs and returns the structured output.\"\"\"\u001B[39;00m\n\u001B[0;32m--> 216\u001B[0m flat_outputs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcall_flat\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 217\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfunction_type\u001B[38;5;241m.\u001B[39mpack_output(flat_outputs)\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/polymorphic_function/atomic_function.py:251\u001B[0m, in \u001B[0;36mAtomicFunction.call_flat\u001B[0;34m(self, *args)\u001B[0m\n\u001B[1;32m 249\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m record\u001B[38;5;241m.\u001B[39mstop_recording():\n\u001B[1;32m 250\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_bound_context\u001B[38;5;241m.\u001B[39mexecuting_eagerly():\n\u001B[0;32m--> 251\u001B[0m outputs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_bound_context\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcall_function\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 252\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mname\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 253\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mlist\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43margs\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 254\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mlen\u001B[39;49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfunction_type\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mflat_outputs\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 255\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 256\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 257\u001B[0m outputs \u001B[38;5;241m=\u001B[39m make_call_op_in_graph(\n\u001B[1;32m 258\u001B[0m \u001B[38;5;28mself\u001B[39m,\n\u001B[1;32m 259\u001B[0m \u001B[38;5;28mlist\u001B[39m(args),\n\u001B[1;32m 260\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_bound_context\u001B[38;5;241m.\u001B[39mfunction_call_options\u001B[38;5;241m.\u001B[39mas_attrs(),\n\u001B[1;32m 261\u001B[0m )\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/context.py:1500\u001B[0m, in \u001B[0;36mContext.call_function\u001B[0;34m(self, name, tensor_inputs, num_outputs)\u001B[0m\n\u001B[1;32m 1498\u001B[0m cancellation_context \u001B[38;5;241m=\u001B[39m cancellation\u001B[38;5;241m.\u001B[39mcontext()\n\u001B[1;32m 1499\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m cancellation_context \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m-> 1500\u001B[0m outputs \u001B[38;5;241m=\u001B[39m \u001B[43mexecute\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mexecute\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 1501\u001B[0m \u001B[43m \u001B[49m\u001B[43mname\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdecode\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mutf-8\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1502\u001B[0m \u001B[43m \u001B[49m\u001B[43mnum_outputs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnum_outputs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1503\u001B[0m \u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtensor_inputs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1504\u001B[0m \u001B[43m \u001B[49m\u001B[43mattrs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mattrs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1505\u001B[0m \u001B[43m \u001B[49m\u001B[43mctx\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\n\u001B[1;32m 1506\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1507\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 1508\u001B[0m outputs \u001B[38;5;241m=\u001B[39m execute\u001B[38;5;241m.\u001B[39mexecute_with_cancellation(\n\u001B[1;32m 1509\u001B[0m name\u001B[38;5;241m.\u001B[39mdecode(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mutf-8\u001B[39m\u001B[38;5;124m\"\u001B[39m),\n\u001B[1;32m 1510\u001B[0m num_outputs\u001B[38;5;241m=\u001B[39mnum_outputs,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 1514\u001B[0m cancellation_manager\u001B[38;5;241m=\u001B[39mcancellation_context,\n\u001B[1;32m 1515\u001B[0m )\n", - "File \u001B[0;32m~/mambaforge/envs/ail/lib/python3.10/site-packages/tensorflow/python/eager/execute.py:53\u001B[0m, in \u001B[0;36mquick_execute\u001B[0;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001B[0m\n\u001B[1;32m 51\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 52\u001B[0m ctx\u001B[38;5;241m.\u001B[39mensure_initialized()\n\u001B[0;32m---> 53\u001B[0m tensors \u001B[38;5;241m=\u001B[39m \u001B[43mpywrap_tfe\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mTFE_Py_Execute\u001B[49m\u001B[43m(\u001B[49m\u001B[43mctx\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_handle\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdevice_name\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mop_name\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 54\u001B[0m \u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mattrs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mnum_outputs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 55\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m core\u001B[38;5;241m.\u001B[39m_NotOkStatusException \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[1;32m 56\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m name \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n", - "\u001B[0;31mKeyboardInterrupt\u001B[0m: " + "name": "stderr", + "output_type": "stream", + "text": [ + "2025-03-13 20:25:17.405072: I tensorflow/core/grappler/optimizers/custom_graph_optimizer_registry.cc:117] Plugin optimizer for device_type GPU is enabled.\n" ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "375/375 [==============================] - 4s 10ms/step - loss: 0.4040 - accuracy: 0.8809 - val_loss: 0.2186 - val_accuracy: 0.9390\n", + "Epoch 2/10\n", + "375/375 [==============================] - 4s 10ms/step - loss: 0.2349 - accuracy: 0.9305 - val_loss: 0.1701 - val_accuracy: 0.9523\n", + "Epoch 3/10\n", + "375/375 [==============================] - 4s 10ms/step - loss: 0.1969 - accuracy: 0.9406 - val_loss: 0.1525 - val_accuracy: 0.9564\n", + "Epoch 4/10\n", + "375/375 [==============================] - 4s 9ms/step - loss: 0.1752 - accuracy: 0.9477 - val_loss: 0.1370 - val_accuracy: 0.9603\n", + "Epoch 5/10\n", + "375/375 [==============================] - 4s 10ms/step - loss: 0.1613 - accuracy: 0.9511 - val_loss: 0.1249 - val_accuracy: 0.9630\n", + "Epoch 6/10\n", + "375/375 [==============================] - 4s 10ms/step - loss: 0.1515 - accuracy: 0.9528 - val_loss: 0.1211 - val_accuracy: 0.9632\n", + "Epoch 7/10\n", + "375/375 [==============================] - 4s 10ms/step - loss: 0.1446 - accuracy: 0.9572 - val_loss: 0.1175 - val_accuracy: 0.9650\n", + "Epoch 8/10\n", + "375/375 [==============================] - 4s 9ms/step - loss: 0.1378 - accuracy: 0.9576 - val_loss: 0.1124 - val_accuracy: 0.9662\n", + "Epoch 9/10\n", + "375/375 [==============================] - 4s 9ms/step - loss: 0.1370 - accuracy: 0.9572 - val_loss: 0.1138 - val_accuracy: 0.9661\n", + "Epoch 10/10\n", + "375/375 [==============================] - 4s 9ms/step - loss: 0.1326 - accuracy: 0.9581 - val_loss: 0.1097 - val_accuracy: 0.9673\n", + "313/313 [==============================] - 2s 7ms/step - loss: 0.1012 - accuracy: 0.9698\n", + "accuracy: 0.9698\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA/IAAAGJCAYAAAApGAgTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAqFNJREFUeJzs3XlYlPX+xvH3zLDvOwjiArgvuJtbK6aVpWZlHk+adeqXaafitGiLlS2WmZlW2qmstM3Ksk6WpZQlamqaqbmCC4oCggICss78/hgdJVcUeFju13XN5fBs85nRerjnu5lsNpsNEREREREREakVzEYXICIiIiIiIiLnT0FeREREREREpBZRkBcRERERERGpRRTkRURERERERGoRBXkRERERERGRWkRBXkRERERERKQWUZAXERERERERqUUU5EVERERERERqEQV5ERERERERkVpEQV5ERERERHj//fcxmUzs3r3b6FJE5BwU5EVERERERERqEQV5ERERERERkVpEQV5EDJWfn290CSIiIiIitYqCvEgds2fPHu69915atGiBu7s7gYGB3Hzzzacd75adnc2DDz5IkyZNcHV1pWHDhowYMYLMzEzHMYWFhTz99NM0b94cNzc3GjRowI033khycjIAS5cuxWQysXTp0nLX3r17NyaTiffff9+x7fbbb8fLy4vk5GSuvfZavL29GT58OADLli3j5ptvplGjRri6uhIZGcmDDz7I0aNHT6l769at3HLLLQQHB+Pu7k6LFi14/PHHAfj5558xmUx89dVXp5z38ccfYzKZWLlyZUU/VhERkXrpzTffpE2bNri6uhIeHs6YMWPIzs4ud8yOHTsYMmQIYWFhuLm50bBhQ2699VZycnIcxyxevJjevXvj5+eHl5cXLVq04LHHHqvmdyNSdzgZXYCIVK41a9awYsUKbr31Vho2bMju3buZOXMml19+OZs3b8bDwwOAvLw8+vTpw5YtW7jjjjvo1KkTmZmZfPPNN+zbt4+goCDKysoYMGAACQkJ3Hrrrdx///0cOXKExYsXs2nTJqKjoytcX2lpKf369aN3795MmTLFUc/nn39OQUEBo0ePJjAwkNWrVzNjxgz27dvH559/7jh/w4YN9OnTB2dnZ+6++26aNGlCcnIy//vf/3j++ee5/PLLiYyM5KOPPmLw4MHlXvujjz4iOjqaHj16XMQnLCIiUj88/fTTPPPMM8TFxTF69Gi2bdvGzJkzWbNmDcuXL8fZ2Zni4mL69etHUVER9913H2FhYaSmpvLtt9+SnZ2Nr68vf/31FwMGDKB9+/ZMnDgRV1dXkpKSWL58udFvUaT2solInVJQUHDKtpUrV9oA25w5cxzbJkyYYANsX3755SnHW61Wm81ms82ePdsG2KZOnXrGY37++WcbYPv555/L7d+1a5cNsL333nuObSNHjrQBtnHjxp1X3ZMmTbKZTCbbnj17HNsuvfRSm7e3d7ltJ9djs9ls48ePt7m6utqys7Md2zIyMmxOTk62p5566pTXEREREZvtvffeswG2Xbt22TIyMmwuLi62q6++2lZWVuY45vXXX7cBttmzZ9tsNpvtjz/+sAG2zz///IzXffXVV22A7eDBg1X+HkTqC3WtF6lj3N3dHc9LSkrIysoiJiYGPz8/1q1b59g3f/58YmNjT2m1BjCZTI5jgoKCuO+++854zIUYPXr0WevOz88nMzOTnj17YrPZ+OOPPwA4ePAgv/76K3fccQeNGjU6Yz0jRoygqKiIL774wrFt3rx5lJaW8s9//vOC6xYREakvlixZQnFxMQ888ABm84nIcNddd+Hj48PChQsB8PX1BeCHH36goKDgtNfy8/MD4Ouvv8ZqtVZt4SL1hIK8SB1z9OhRJkyYQGRkJK6urgQFBREcHEx2dna5sWrJycm0bdv2rNdKTk6mRYsWODlV3igcJycnGjZseMr2lJQUbr/9dgICAvDy8iI4OJjLLrsMwFH3zp07Ac5Zd8uWLenatSsfffSRY9tHH33EJZdcQkxMTGW9FRERkTprz549ALRo0aLcdhcXF6Kiohz7mzZtSnx8PO+88w5BQUH069ePN954o9zvHEOHDqVXr17861//IjQ0lFtvvZXPPvtMoV7kIijIi9Qx9913H88//zy33HILn332GT/++COLFy8mMDCwSm6YZ2qZLysrO+12V1fXct/sHz+2b9++LFy4kEcffZQFCxawePFix0R5F1L3iBEj+OWXX9i3bx/Jycn89ttvao0XERGpAq+88gobNmzgscce4+jRo/z73/+mTZs27Nu3D7D3uvv1119ZsmQJt912Gxs2bGDo0KH07dv3jL8viMjZKciL1DFffPEFI0eO5JVXXuGmm26ib9++9O7d+5QZZqOjo9m0adNZrxUdHc22bdsoKSk54zH+/v4Ap1z/+Df152Pjxo1s376dV155hUcffZSBAwcSFxdHeHh4ueOioqIAzlk3wK233orFYuGTTz7ho48+wtnZmaFDh553TSIiIvVZ48aNAdi2bVu57cXFxezatcux/7h27drxxBNP8Ouvv7Js2TJSU1OZNWuWY7/ZbOaqq65i6tSpbN68meeff56ffvqJn3/+uerfjEgdpCAvUsdYLBZsNlu5bTNmzDjlG+8hQ4bw559/nnaZtuPnDxkyhMzMTF5//fUzHtO4cWMsFgu//vpruf1vvvlmhWo++ZrHn7/22mvljgsODubSSy9l9uzZpKSknLae44KCgrjmmmv48MMP+eijj+jfvz9BQUHnXZOIiEh9FhcXh4uLC9OnTy93j3333XfJycnhuuuuAyA3N5fS0tJy57Zr1w6z2UxRUREAhw4dOuX6HTp0AHAcIyIVo+XnROqYAQMGMHfuXHx9fWndujUrV65kyZIlBAYGljvu4Ycf5osvvuDmm2/mjjvuoHPnzhw6dIhvvvmGWbNmERsby4gRI5gzZw7x8fGsXr2aPn36kJ+fz5IlS7j33nsZOHAgvr6+3HzzzcyYMQOTyUR0dDTffvstGRkZ511zy5YtiY6O5qGHHiI1NRUfHx/mz5/P4cOHTzl2+vTp9O7dm06dOnH33XfTtGlTdu/ezcKFC1m/fn25Y0eMGMFNN90EwLPPPlvxD1NERKSeCg4OZvz48TzzzDP079+fG264gW3btvHmm2/StWtXx3C1n376ibFjx3LzzTfTvHlzSktLmTt3LhaLhSFDhgAwceJEfv31V6677joaN25MRkYGb775Jg0bNqR3795Gvk2RWktBXqSOee2117BYLHz00UcUFhbSq1cvlixZQr9+/cod5+XlxbJly3jqqaf46quv+OCDDwgJCeGqq65yTEZnsVj47rvveP755/n444+ZP38+gYGB9O7dm3bt2jmuNWPGDEpKSpg1axaurq7ccsstvPzyy+eclO44Z2dn/ve///Hvf/+bSZMm4ebmxuDBgxk7diyxsbHljo2NjeW3337jySefZObMmRQWFtK4cWNuueWWU657/fXX4+/vj9Vq5YYbbqjoRykiIlKvPf300wQHB/P666/z4IMPEhAQwN13380LL7yAs7MzYL8v9+vXj//973+kpqbi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ERGRanTBQb6kpITPPvuMG264gf/85z906dKFd955hyFDhvDYY48xfPjwyqxTqllmXhEjZq/ijZ+TAbi9ZxPm3d2DcD93gysTERERABcnM92jAgBI3KHu9SIi9UmFZ61ft24d7733Hp988glms5kRI0bw6quv0rJlS8cxgwcPpmvXrpVaqFSftXsOM+ajdaTlFuLubOHFIe0Y2CHC6LJERETkb3rHBLF020GWJ2Xyrz5RRpcjIiLVpMJBvmvXrvTt25eZM2cyaNAgnJ1PneysadOm3HrrrZVSoFQfm83GByt289zCLZRabUQFezLrn51pHuptdGkiIiJyGsfHya/adYjiUisuThfc2VJERGqRCgf5nTt30rhx47Me4+npyXvvvXfBRYkxJnz9F3N/2wPAte3CmHxTLF6uFf4nIiIiItWkRag3gZ4uZOUXs35vNt2aBhhdkoiIVIMKf22bkZHBqlWrTtm+atUqfv/990opSqrfwSNFjhD/5IDWvPGPTgrxIiIiNZzZbKKnlqETEal3Khzkx4wZw969e0/ZnpqaypgxYyqlKKl+K5LtN//WDXy4s3dTTCYtLSciIlIb9I4JBGC5gryISL1R4SC/efNmOnXqdMr2jh07snnz5kopSqrf8Zt/Hy0tJyIiUqscHye/fm82RwpLDK5GRESqQ4WDvKurK+np6adsP3DgAE5O6opdG9lsNseyNcd/GRAREZHaoaG/B00CPSiz2li185DR5YiISDWocJC/+uqrGT9+PDk5OY5t2dnZPPbYY/Tt27dSi5PqsSszn/05hbhYzHRtoklyREREapteGicvIlKvVDjIT5kyhb1799K4cWOuuOIKrrjiCpo2bUpaWhqvvPJKVdQoVex4t/rOjf1xd7EYXI2IiIhUVO9jQV7j5EVE6ocK94WPiIhgw4YNfPTRR/z555+4u7szatQohg0bdto15aXmO/7tfW+NjxcREamVekQHYjLBjow80nMLCfVxM7okERGpQhc0qN3T05O77767smsRA5RZbaxIzgI0Pl5ERKS28vNwoV2ELxv25bA8KZMbOzU0uiQREalCFzw73ebNm0lJSaG4uLjc9htuuOGii5LqszE1hyOFpXi7OdEuwtfockREROQC9YoJYsO+HBIV5EVE6rwKB/mdO3cyePBgNm7ciMlkwmazATjWHS8rK6vcCqVKHR9L1zM6EItZa8eLiMgJe/fuxWQy0bChPRSuXr2ajz/+mNatW6tnXg3UOyaImUuTWZ6Uic1mc/xuJiIidU+FJ7u7//77adq0KRkZGXh4ePDXX3/x66+/0qVLF5YuXVoFJUpVOr7sXG91qxcRkb/5xz/+wc8//wxAWloaffv2ZfXq1Tz++ONMnDjR4Ork7zo39sfVyUx6bhHJB/OMLkdERKpQhYP8ypUrmThxIkFBQZjNZsxmM71792bSpEn8+9//rooapYocLS5j7Z7DAPRuFmxwNSIiUtNs2rSJbt26AfDZZ5/Rtm1bVqxYwUcffcT7779vbHFyCjdni2MZ2eNf1IuISN1U4SBfVlaGt7c3AEFBQezfvx+Axo0bs23btsqtTqrU6t2HKC6zEuHnTpNAD6PLERGRGqakpARXV1cAlixZ4pgHp2XLlhw4cMDI0uQMTqwnn2VwJSIiUpUqHOTbtm3Ln3/+CUD37t2ZPHkyy5cvZ+LEiURFRVV6gVJ1jo+P7xUTqHF0IiJyijZt2jBr1iyWLVvG4sWL6d+/PwD79+8nMDDQ4OrkdI4PlVu1M4vSMqvB1YiISFWpcJB/4oknsFrtN4aJEyeya9cu+vTpw3fffcf06dMrvUCpOse73WnZOREROZ2XXnqJt956i8svv5xhw4YRGxsLwDfffOPoci81S+twH/w8nDlSVMqG1ByjyxERkSpS4Vnr+/Xr53geExPD1q1bOXToEP7+/mrVrUWy8orYfCAXgJ7RCvIiInKqyy+/nMzMTHJzc/H393dsv/vuu/Hw0JCsmshiNtEzOpDvNqaxfEcmnRr5n/skERGpdSrUIl9SUoKTkxObNm0qtz0gIEAhvpZZkWwfO9cyzJtgb1eDqxERkZro6NGjFBUVOUL8nj17mDZtGtu2bSMkJMTg6uRMjn9Bn5ikCe9EROqqCgV5Z2dnGjVqpLXi64Dj4+O17JyIiJzJwIEDmTNnDgDZ2dl0796dV155hUGDBjFz5kyDq5MzOX5vX5dymILiUoOrERGRqlDhMfKPP/44jz32GIcOHaqKeqQa2Gw2lh0fH99MQV5ERE5v3bp19OnTB4AvvviC0NBQ9uzZw5w5czQvTg3WONCDCD93SspsrN6l39dEROqiCo+Rf/3110lKSiI8PJzGjRvj6elZbv+6desqrTipGimHCkjNPoqzxUT3pgFGlyMiIjVUQUGBY8nZH3/8kRtvvBGz2cwll1zCnj17DK5OzsRkMtE7Joh5v+9leVIml7fQMAgRkbqmwkF+0KBBVVCGVKfjrfGdGvnj4VLhfwIiIlJPxMTEsGDBAgYPHswPP/zAgw8+CEBGRgY+Pj4GVydn06uZPchrPXkRkbqpwinuqaeeqoo6pBppfLyIiJyPCRMm8I9//IMHH3yQK6+8kh49egD21vmOHTsaXJ2cTc/oQAC2HMglM6+IIC9NbCsiUpdUeIy81G5lVptjxnqNjxcRkbO56aabSElJ4ffff+eHH35wbL/qqqt49dVXDaxMziXIy5VWDey9Jo7f90VEpO6ocJA3m81YLJYzPqRm+2t/DjlHS/B2daJ9hK/R5YiISA0XFhZGx44d2b9/P/v27QOgW7dutGzZskLXeeONN2jSpAlubm50796d1atXn/HYt99+mz59+uDv74+/vz9xcXGnHH/77bdjMpnKPfr371/xN1iH9Y6xt8ov36Fl6ERE6poKB/mvvvqKL7/80vGYN28e48aNo0GDBvz3v/+tihqlEh1fU/aS6ECcLOqQISIiZ2a1Wpk4cSK+vr40btyYxo0b4+fnx7PPPovVaj3v68ybN4/4+Hieeuop1q1bR2xsLP369SMjI+O0xy9dupRhw4bx888/s3LlSiIjI7n66qtJTU0td1z//v05cOCA4/HJJ59c1Puta3rFnFhP3mazGVyNiIhUpgqPkR84cOAp22666SbatGnDvHnzuPPOOyulMKkaGh8vIiLn6/HHH+fdd9/lxRdfpFevXgAkJiby9NNPU1hYyPPPP39e15k6dSp33XUXo0aNAmDWrFksXLiQ2bNnM27cuFOO/+ijj8r9/M477zB//nwSEhIYMWKEY7urqythYWEX+vbqvG5NA3C2mEjNPsqerAKaBHme+yQREakVKq1J9pJLLiEhIaGyLidVoLCkjDW7DwMnvqUXERE5kw8++IB33nmH0aNH0759e9q3b8+9997L22+/zfvvv39e1yguLmbt2rXExcU5tpnNZuLi4li5cuV5XaOgoICSkhICAsovmbp06VJCQkJo0aIFo0ePJivrzGPBi4qKyM3NLfeo6zxcnOjUyB840SNPRETqhkoJ8kePHmX69OlERERUxuWkivy++zDFpVbCfNyIDta38iIicnaHDh067Vj4li1bcujQofO6RmZmJmVlZYSGhpbbHhoaSlpa2nld49FHHyU8PLzclwH9+/dnzpw5JCQk8NJLL/HLL79wzTXXUFZWdtprTJo0CV9fX8cjMjLyvF67tjveA2+5gryISJ1S4a71/v7+mEwmx882m40jR47g4eHBhx9+WKnFSeU6/m18r5igcn+HIiIipxMbG8vrr7/O9OnTy21//fXXad++fbXU8OKLL/Lpp5+ydOlS3NzcHNtvvfVWx/N27drRvn17oqOjWbp0KVddddUp1xk/fjzx8fGOn3Nzc+tFmO/VLIhXFm9nRXIWZVYbFrPu/yIidUGFg/yrr75aLgSazWaCg4Pp3r07/v7+lVqcVK7EpIMA9NGycyIich4mT57Mddddx5IlSxxryK9cuZK9e/fy3Xffndc1goKCsFgspKenl9uenp5+zvHtU6ZM4cUXX2TJkiXn/OIgKiqKoKAgkpKSThvkXV1dcXWtf2upt4/wxdvViZyjJfy1P4f2Df2MLklERCpBhbvW33777YwcOdLxuO222+jfv/9FhfiKLElTUlLCxIkTiY6Oxs3NjdjYWBYtWlTumEmTJtG1a1e8vb0JCQlh0KBBbNu27YLrqwsO5Rfz1377eMCex5ajEREROZvLLruM7du3M3jwYLKzs8nOzubGG2/kr7/+Yu7cued1DRcXFzp37lxuHh2r1UpCQoLjy4HTmTx5Ms8++yyLFi2iS5cu53ydffv2kZWVRYMGDc6rrvrCyWLmkmj7fV/j5EVE6o4KB/n33nuPzz///JTtn3/+OR988EGFC6jokjRPPPEEb731FjNmzGDz5s3cc889DB48mD/++MNxzC+//MKYMWP47bffWLx4MSUlJVx99dXk5+dXuL66YmVyFjYbtAj1JsTb7dwniIiIAOHh4Tz//PPMnz+f+fPn89xzz3H48GHefffd875GfHw8b7/9Nh988AFbtmxh9OjR5OfnO2axHzFiBOPHj3cc/9JLL/Hkk08ye/ZsmjRpQlpaGmlpaeTl5QGQl5fHww8/zG+//cbu3btJSEhg4MCBxMTE0K9fv8r9AOqA4+PkVySdeTJAERGpXSoc5CdNmkRQ0Klds0NCQnjhhRcqXMDJS9K0bt2aWbNm4eHhwezZs097/Ny5c3nssce49tpriYqKYvTo0Vx77bW88sorjmMWLVrE7bffTps2bYiNjeX9998nJSWFtWvXVri+uuLk8fEiIiLVaejQoUyZMoUJEybQoUMH1q9fz6JFixwT4KWkpHDgwAHH8TNnzqS4uJibbrqJBg0aOB5TpkwBwGKxsGHDBm644QaaN2/OnXfeSefOnVm2bFm97D5/Lsfv/at3H6Kw5PSTAYqISO1S4THyKSkpNG3a9JTtjRs3JiUlpULXOr4kzcnfwp9rSZqioqJyk90AuLu7k5iYeMbXycnJAThl2ZqTr1lUVOT4uS4uSeNYP76ZutWLiEj1Gzt2LGPHjj3tvqVLl5b7effu3We9lru7Oz/88EMlVVb3RQd7EurjSnpuEWv3HNaX+iIidUCFW+RDQkLYsGHDKdv//PNPAgMrFhIvZEmafv36MXXqVHbs2IHVamXx4sV8+eWX5b7JP5nVauWBBx6gV69etG3b9rTH1PUlaVKyCkg5VICT2US3pgryIiIi9YnJZHKEd42TFxGpGyrcIj9s2DD+/e9/4+3tzaWXXgrYx6Tff//95ZaCqSqvvfYad911Fy1btsRkMhEdHc2oUaPO2BV/zJgxbNq06awt9nV9SZrlyfabdsdGfni5VvivXERE6pkbb7zxrPuzs7OrpxCpNL1jgvhyXarWkxcRqSMqnOqeffZZdu/ezVVXXYWTk/10q9XKiBEjKjxG/kKWpAkODmbBggUUFhaSlZVFeHg448aNIyoq6pRjx44dy7fffsuvv/5Kw4YNz1hHXV+SRuPjRUSkInx9fc+5f8SIEdVUjVSG478DbEzNIbugGD8PF4MrEhGRi1HhIO/i4sK8efN47rnnWL9+Pe7u7rRr147GjRtX+MVPXpJm0KBBwIklac40ju44Nzc3IiIiKCkpYf78+dxyyy2OfTabjfvuu4+vvvqKpUuXnnZMf31htdpYcSzIa/14ERE5H++9957RJUglC/Vxo1mIFzsy8liZnMU17bRMn4hIbXbB/aybNWtGs2bNLrqA+Ph4Ro4cSZcuXejWrRvTpk07ZUmaiIgIJk2aBMCqVatITU2lQ4cOpKam8vTTT2O1WnnkkUcc1xwzZgwff/wxX3/9Nd7e3o7x9r6+vri7u190zbXJ5gO5HC4owcvVifYN/YwuR0RERAzSKyaIHRl5JCZlKsiLiNRyFZ7sbsiQIbz00kunbJ88eTI333xzhQuo6JI0hYWFPPHEE7Ru3ZrBgwcTERFBYmIifn5+jmNmzpxJTk4Ol19+eblla+bNm1fh+mq7493qL4kKwNlS4b9uERERqSOOryevcfIiIrVfhVvkf/31V55++ulTtl9zzTXl1nKviIosSXPZZZexefPms17PZrNdUB110XKNjxcRERGge1QAFrOJ3VkF7D1UQGSAh9EliYjIBapwE21eXh4uLqdOkOLs7Fwn11+vzQpLyli96xBw4lt4ERERqZ+83ZzpGOkHwH8+/5PD+cXGFiQiIheswkG+Xbt2p+2i/umnn9K6detKKUoqx7o9hykqtRLi7UpMiJfR5YiIiIjBHr2mJd6uTqzedYjBby4n+WCe0SWJiMgFqHDX+ieffJIbb7yR5ORkrrzySgASEhL4+OOP+eKLLyq9QLlwx8fH944JwmQyGVyNiIiIGK1rkwDm39uTO95fw+6sAga/sZxZt3WmZ7R67omI1CYVbpG//vrrWbBgAUlJSdx777385z//ITU1lZ9++omYmJiqqFEukMbHi4iIyN81D/VmwZhedGrkR25hKSPeXc28NSlGlyUiIhVwQdOYX3fddSxfvpz8/Hx27tzJLbfcwkMPPURsbGxl1ycXKKeghA2pOYCCvIiIiJQX5OXKx3ddwg2x4ZRabTw6fyOTvtuC1aoJg0VEaoMLXo/s119/ZeTIkYSHh/PKK69w5ZVX8ttvv1VmbXIRVu7MxGaDZiFehPm6GV2OiIiI1DBuzhZeu7UD91/VDIC3ft3JPR+upaC41ODKRETkXCoU5NPS0njxxRdp1qwZN998Mz4+PhQVFbFgwQJefPFFunbtWlV1SgUt26Fu9SIiInJ2JpOJB/s257VbO+DiZObHzenc8tZK0nIKjS5NRETO4ryD/PXXX0+LFi3YsGED06ZNY//+/cyYMaMqa5OLsPykie5EREREzmZghwg+uas7gZ4ubErNZeAbiWw6NkRPRERqnvMO8t9//z133nknzzzzDNdddx0Wi6Uq65KLsPdQAbuzCrCYTXSPCjC6HBEREakFOjcOYMGYXjQL8SI9t4ibZ63kx7/SjC5LRERO47yDfGJiIkeOHKFz5850796d119/nczMzKqsTS7QimT730uHSD+83ZwNrkZERERqi8gAD+bf25M+zYI4WlLG/324lv/+mozNpknwRERqkvMO8pdccglvv/02Bw4c4P/+7//49NNPCQ8Px2q1snjxYo4cOVKVdUoF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JpPpqo6VmZlJ48aNOXz4MMHBwS6KUHRfXU/3tHLovrpeTb2nhmGQlZVFw4YNnZZmlSvjyrYeau7fZWXSPXU93dPKofvqejX1nl5OW6+h9aUwm800atTIpccMDg6uUX+EVUX31fV0TyuH7qvr1cR7GhIS4u4Qqo3KaOuhZv5dVjbdU9fTPa0cuq+uVxPvaUXbev2kLyIiIiIiIuJBlMiLiIiIiIiIeBAl8pXM19eXWbNmae1aF9N9dT3d08qh++p6uqdyLdLfpevpnrqe7mnl0H11Pd3TS9NkdyIiIiIiIiIeRD3yIiIiIiIiIh5EibyIiIiIiIiIB1EiLyIiIiIiIuJBlMiLiIiIiIiIeBAl8pVs+fLlNGnSBD8/P7p06cKWLVvcHZLHmj9/Pp07dyYoKIiwsDAeeOAB9u7d6+6wqpUFCxZgMpmYOHGiu0PxeEeOHOHRRx+lXr16+Pv707ZtW7777jt3h+XRrFYrM2bMoGnTpvj7+9O8eXPmzJmD5mwVd1Nb71pq7yuf2nvXUFvvemrrK06JfCX661//yqRJk5g1axbbt2+nffv2xMTEkJaW5u7QPNJXX33F2LFj2bx5M5999hkFBQXcdddd5OTkuDu0amHr1q387//+L+3atXN3KB7vzJkzdO/eHW9vbz755BN27drFSy+9RJ06ddwdmkdbuHAhSUlJvPLKK+zevZuFCxeyaNEili1b5u7QpAZTW+96au8rl9p711BbXznU1leclp+rRF26dKFz58688sorANhsNho3bsz48eOJi4tzc3SeLz09nbCwML766it69Ojh7nA8WnZ2Np06dWLFihXMnTuXDh06sGTJEneH5bHi4uJISUlh06ZN7g6lWunXrx/h4eG89tprjm0DBgzA39+fN998042RSU2mtr7yqb13HbX3rqO2vnKora849chXkvz8fLZt20afPn0c28xmM3369OHf//63GyOrPjIyMgCoW7eumyPxfGPHjuXee+91+nuVK7d+/XqioqIYNGgQYWFhdOzYkT/96U/uDsvjdevWjeTkZPbt2wfAjh07+Oabb+jbt6+bI5OaSm191VB77zpq711HbX3lUFtfcV7uDqC6OnnyJFarlfDwcKft4eHh7Nmzx01RVR82m42JEyfSvXt3br75ZneH49Hefvtttm/fztatW90dSrWxf/9+kpKSmDRpEtOmTWPr1q0888wz+Pj4EBsb6+7wPFZcXByZmZm0atUKi8WC1WolISGBoUOHujs0qaHU1lc+tfeuo/betdTWVw619RWnRF480tixY9m5cyfffPONu0PxaIcPH2bChAl89tln+Pn5uTucasNmsxEVFcW8efMA6NixIzt37uTVV19V434V3nnnHdauXcu6deto06YNqampTJw4kYYNG+q+ilRTau9dQ+2966mtrxxq6ytOiXwlCQ0NxWKxcOLECaftJ06c4LrrrnNTVNXDuHHj+Oijj/j6669p1KiRu8PxaNu2bSMtLY1OnTo5tlmtVr7++mteeeUV8vLysFgsbozQMzVo0IDWrVs7bbvpppt477333BRR9TBlyhTi4uIYMmQIAG3btuWXX35h/vz5atzFLdTWVy61966j9t711NZXDrX1Fadn5CuJj48Pt9xyC8nJyY5tNpuN5ORkunbt6sbIPJdhGIwbN47333+fL774gqZNm7o7JI/Xu3dvvv/+e1JTUx0lKiqKoUOHkpqaqkb9CnXv3v2ipZL27dvHDTfc4KaIqofc3FzMZudmy2KxYLPZ3BSR1HRq6yuH2nvXU3vvemrrK4fa+opTj3wlmjRpErGxsURFRREdHc2SJUvIyclh+PDh7g7NI40dO5Z169bxj3/8g6CgII4fPw5ASEgI/v7+bo7OMwUFBV30zGFgYCD16tXTs4hX4dlnn6Vbt27MmzePwYMHs2XLFlauXMnKlSvdHZpH69+/PwkJCURERNCmTRv+85//kJiYyIgRI9wdmtRgautdT+2966m9dz219ZVDbf1lMKRSLVu2zIiIiDB8fHyM6OhoY/Pmze4OyWMBpZbVq1e7O7RqpWfPnsaECRPcHYbH+/DDD42bb77Z8PX1NVq1amWsXLnS3SF5vMzMTGPChAlGRESE4efnZzRr1sz4wx/+YOTl5bk7NKnh1Na7ltr7qqH2/uqprXc9tfUVp3XkRURERERERDyInpEXERERERER8SBK5EVEREREREQ8iBJ5EREREREREQ+iRF5ERERERETEgyiRFxEREREREfEgSuRFREREREREPIgSeREREREREREPokReRERERERExIMokReRa5LJZOKDDz5wdxgiIiJSSdTWi1w5JfIicpFhw4ZhMpkuKnfffbe7QxMREREXUFsv4tm83B2AiFyb7r77blavXu20zdfX103RiIiIiKuprRfxXOqRF5FS+fr6ct111zmVOnXqAPahcElJSfTt2xd/f3+aNWvGu+++6/T977//njvuuAN/f3/q1avHk08+SXZ2tlOdVatW0aZNG3x9fWnQoAHjxo1z2n/y5EkefPBBAgICaNGiBevXr6/cixYREalB1NaLeC4l8iJyRWbMmMGAAQPYsWMHQ4cOZciQIezevRuAnJwcYmJiqFOnDlu3buVvf/sbn3/+uVPjnZSUxNixY3nyySf5/vvvWb9+PZGRkU7nmD17NoMHD+a///0v99xzD0OHDuX06dNVep0iIiI1ldp6kWuYISJygdjYWMNisRiBgYFOJSEhwTAMwwCM0aNHO32nS5cuxtNPP20YhmGsXLnSqFOnjpGdne3Yv2HDBsNsNhvHjx83DMMwGjZsaPzhD38oMwbAmD59uuNzdna2ARiffPKJy65TRESkplJbL+LZ9Iy8iJSqV69eJCUlOW2rW7eu433Xrl2d9nXt2pXU1FQAdu/eTfv27QkMDHTs7969Ozabjb1792IymTh69Ci9e/cuN4Z27do53gcGBhIcHExaWtqVXpKIiIiUoLZexHMpkReRUgUGBl40/M1V/P39K1TP29vb6bPJZMJms1VGSCIiIjWO2noRz6Vn5EXkimzevPmizzfddBMAN910Ezt27CAnJ8exPyUlBbPZTMuWLQkKCqJJkyYkJydXacwiIiJScWrrRa5d6pEXkVLl5eVx/Phxp21eXl6EhoYC8Le//Y2oqChuvfVW1q5dy5YtW3jttdcAGDp0KLNmzSI2Npb4+HjS09MZP348jz32GOHh4QDEx8czevRowsLC6Nu3L1lZWaSkpDB+/PiqvVAREZEaSm29iOdSIi8ipfr0009p0KCB07aWLVuyZ88ewD7L7Ntvv82YMWNo0KABb731Fq1btwYgICCAf/7zn0yYMIHOnTsTEBDAgAEDSExMdBwrNjaWc+fOsXjxYiZPnkxoaCgDBw6sugsUERGp4dTWi3guk2EYhruDEBHPYjKZeP/993nggQfcHYqIiIhUArX1Itc2PSMvIiIiIiIi4kGUyIuIiIiIiIh4EA2tFxEREREREfEg6pEXERERERER8SBK5EVEREREREQ8iBJ5EREREREREQ+iRF5ERERERETEgyiRFxEREREREfEgSuRFREREREREPIgSeREREREREREPokReRERERERExIP8P528Fh9fpISOAAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" } ], - "execution_count": 2 + "execution_count": 1 } ], "metadata": {