{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "982e76f5", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.570944Z", "iopub.status.busy": "2024-03-03T11:01:44.569998Z", "iopub.status.idle": "2024-03-03T11:01:44.611904Z", "shell.execute_reply": "2024-03-03T11:01:44.611054Z" }, "papermill": { "duration": 0.057756, "end_time": "2024-03-03T11:01:44.614024", "exception": false, "start_time": "2024-03-03T11:01:44.556268", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import joblib\n", "\n", "#joblib.parallel_backend(\"threading\")" ] }, { "cell_type": "code", "execution_count": 2, "id": "675f0b41", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.642117Z", "iopub.status.busy": "2024-03-03T11:01:44.641699Z", "iopub.status.idle": "2024-03-03T11:01:44.648593Z", "shell.execute_reply": "2024-03-03T11:01:44.647728Z" }, "papermill": { "duration": 0.024578, "end_time": "2024-03-03T11:01:44.650963", "exception": false, "start_time": "2024-03-03T11:01:44.626385", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "'\\n%cd /kaggle/working\\n#!git clone https://github.com/R-N/ml-utility-loss\\n%cd ml-utility-loss\\n!git pull\\n#!pip install .\\n!pip install . --no-deps --force-reinstall --upgrade\\n#'" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"\n", "%cd /kaggle/working\n", "#!git clone https://github.com/R-N/ml-utility-loss\n", "%cd ml-utility-loss\n", "!git pull\n", "#!pip install .\n", "!pip install . --no-deps --force-reinstall --upgrade\n", "#\"\"\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "5ae30f5c", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.683632Z", "iopub.status.busy": "2024-03-03T11:01:44.683035Z", "iopub.status.idle": "2024-03-03T11:01:44.687788Z", "shell.execute_reply": "2024-03-03T11:01:44.686964Z" }, "papermill": { "duration": 0.02277, "end_time": "2024-03-03T11:01:44.689713", "exception": false, "start_time": "2024-03-03T11:01:44.666943", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "plt.rcParams['figure.figsize'] = [3,3]" ] }, { "cell_type": "code", "execution_count": 4, "id": "9f42c810", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.713693Z", "iopub.status.busy": "2024-03-03T11:01:44.713372Z", "iopub.status.idle": "2024-03-03T11:01:44.717894Z", "shell.execute_reply": "2024-03-03T11:01:44.717086Z" }, "executionInfo": { "elapsed": 678, "status": "ok", "timestamp": 1696841022168, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "ns5hFcVL2yvs", "papermill": { "duration": 0.019153, "end_time": "2024-03-03T11:01:44.719881", "exception": false, "start_time": "2024-03-03T11:01:44.700728", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "datasets = [\n", " \"insurance\",\n", " \"treatment\",\n", " \"contraceptive\"\n", "]\n", "\n", "study_dir = \"./\"" ] }, { "cell_type": "code", "execution_count": 5, "id": "85d0c8ce", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.745548Z", "iopub.status.busy": "2024-03-03T11:01:44.745224Z", "iopub.status.idle": "2024-03-03T11:01:44.751772Z", "shell.execute_reply": "2024-03-03T11:01:44.750911Z" }, "papermill": { "duration": 0.021918, "end_time": "2024-03-03T11:01:44.753823", "exception": false, "start_time": "2024-03-03T11:01:44.731905", "status": "completed" }, "tags": [ "parameters" ] }, "outputs": [], "source": [ "#Parameters\n", "import os\n", "\n", "path_prefix = \"../../../../\"\n", "\n", "dataset_dir = os.path.join(path_prefix, \"ml-utility-loss/datasets\")\n", "dataset_name = \"treatment\"\n", "model_name=\"ml_utility_2\"\n", "models = [\"tvae\", \"realtabformer\", \"lct_gan\", \"tab_ddpm_concat\"]\n", "single_model = \"lct_gan\"\n", "random_seed = 42\n", "gp = True\n", "gp_multiply = True\n", "folder = \"eval\"\n", "debug = False\n", "path = None\n", "param_index = 0\n", "allow_same_prediction = True\n", "log_wandb = False" ] }, { "cell_type": "code", "execution_count": 6, "id": "4e90a1af", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.780315Z", "iopub.status.busy": "2024-03-03T11:01:44.780032Z", "iopub.status.idle": "2024-03-03T11:01:44.785324Z", "shell.execute_reply": "2024-03-03T11:01:44.784384Z" }, "papermill": { "duration": 0.022708, "end_time": "2024-03-03T11:01:44.787932", "exception": false, "start_time": "2024-03-03T11:01:44.765224", "status": "completed" }, "tags": [ "injected-parameters" ] }, "outputs": [], "source": [ "# Parameters\n", "dataset = \"insurance\"\n", "dataset_name = \"insurance\"\n", "single_model = \"tab_ddpm_concat\"\n", "gp = False\n", "gp_multiply = False\n", "random_seed = 4\n", "debug = False\n", "folder = \"eval\"\n", "path_prefix = \"../../../../\"\n", "path = \"eval/insurance/tab_ddpm_concat/4\"\n", "param_index = 3\n", "allow_same_prediction = True\n", "log_wandb = False\n" ] }, { "cell_type": "code", "execution_count": null, "id": "bd7c02d6", "metadata": { "papermill": { "duration": 0.012007, "end_time": "2024-03-03T11:01:44.816037", "exception": false, "start_time": "2024-03-03T11:01:44.804030", "status": "completed" }, "tags": [] }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": 7, "id": "5f45b1d0", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.840912Z", "iopub.status.busy": "2024-03-03T11:01:44.840199Z", "iopub.status.idle": "2024-03-03T11:01:44.851377Z", "shell.execute_reply": "2024-03-03T11:01:44.850578Z" }, "executionInfo": { "elapsed": 7, "status": "ok", "timestamp": 1696841022169, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "UdvXYv3c3LXy", "papermill": { "duration": 0.02564, "end_time": "2024-03-03T11:01:44.853397", "exception": false, "start_time": "2024-03-03T11:01:44.827757", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/kaggle/working\n", "/kaggle/working/eval/insurance/tab_ddpm_concat/4\n" ] } ], "source": [ "from pathlib import Path\n", "import os\n", "\n", "%cd /kaggle/working/\n", "\n", "if path is None:\n", " path = os.path.join(folder, dataset_name, single_model, random_seed)\n", "Path(path).mkdir(parents=True, exist_ok=True)\n", "\n", "%cd {path}" ] }, { "cell_type": "code", "execution_count": 8, "id": "f85bf540", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:44.879869Z", "iopub.status.busy": "2024-03-03T11:01:44.879593Z", "iopub.status.idle": "2024-03-03T11:01:47.059565Z", "shell.execute_reply": "2024-03-03T11:01:47.058615Z" }, "papermill": { "duration": 2.195792, "end_time": "2024-03-03T11:01:47.061639", "exception": false, "start_time": "2024-03-03T11:01:44.865847", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Set seed to \n" ] } ], "source": [ "from ml_utility_loss.util import seed\n", "if single_model:\n", " model_name=f\"{model_name}_{single_model}\"\n", "if random_seed is not None:\n", " seed(random_seed)\n", " print(\"Set seed to\", seed)" ] }, { "cell_type": "code", "execution_count": 9, "id": "8489feae", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:47.086553Z", "iopub.status.busy": "2024-03-03T11:01:47.086168Z", "iopub.status.idle": "2024-03-03T11:01:47.097582Z", "shell.execute_reply": "2024-03-03T11:01:47.096887Z" }, "papermill": { "duration": 0.02616, "end_time": "2024-03-03T11:01:47.099577", "exception": false, "start_time": "2024-03-03T11:01:47.073417", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import json\n", "import os\n", "\n", "df = pd.read_csv(os.path.join(dataset_dir, f\"{dataset_name}.csv\"))\n", "with open(os.path.join(dataset_dir, f\"{dataset_name}.json\")) as f:\n", " info = json.load(f)" ] }, { "cell_type": "code", "execution_count": 10, "id": "debcc684", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:47.125152Z", "iopub.status.busy": "2024-03-03T11:01:47.124166Z", "iopub.status.idle": "2024-03-03T11:01:47.132075Z", "shell.execute_reply": "2024-03-03T11:01:47.131245Z" }, "executionInfo": { "elapsed": 6, "status": "ok", "timestamp": 1696841022169, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "Vrl2QkoV3o_8", "papermill": { "duration": 0.02292, "end_time": "2024-03-03T11:01:47.134095", "exception": false, "start_time": "2024-03-03T11:01:47.111175", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "task = info[\"task\"]\n", "target = info[\"target\"]\n", "cat_features = info[\"cat_features\"]\n", "mixed_features = info[\"mixed_features\"]\n", "longtail_features = info[\"longtail_features\"]\n", "integer_features = info[\"integer_features\"]\n", "\n", "test = df.sample(frac=0.2, random_state=42)\n", "train = df[~df.index.isin(test.index)]" ] }, { "cell_type": "code", "execution_count": 11, "id": "7538184a", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:47.161414Z", "iopub.status.busy": "2024-03-03T11:01:47.161162Z", "iopub.status.idle": "2024-03-03T11:01:47.266060Z", "shell.execute_reply": "2024-03-03T11:01:47.265250Z" }, "executionInfo": { "elapsed": 6, "status": "ok", "timestamp": 1696841022169, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "TilUuFk9vqMb", "papermill": { "duration": 0.121905, "end_time": "2024-03-03T11:01:47.268153", "exception": false, "start_time": "2024-03-03T11:01:47.146248", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import ml_utility_loss.synthesizers.tab_ddpm.params as TAB_DDPM_PARAMS\n", "import ml_utility_loss.synthesizers.lct_gan.params as LCT_GAN_PARAMS\n", "import ml_utility_loss.synthesizers.realtabformer.params as RTF_PARAMS\n", "from ml_utility_loss.synthesizers.realtabformer.params.default import GPT2_PARAMS, REALTABFORMER_PARAMS\n", "from ml_utility_loss.util import filter_dict_2, filter_dict\n", "\n", "tab_ddpm_params = getattr(TAB_DDPM_PARAMS, dataset_name).BEST\n", "lct_gan_params = getattr(LCT_GAN_PARAMS, dataset_name).BEST\n", "lct_ae_params = filter_dict_2(lct_gan_params, LCT_GAN_PARAMS.default.AE_PARAMS)\n", "rtf_params = getattr(RTF_PARAMS, dataset_name).BEST\n", "rtf_params = filter_dict(rtf_params, REALTABFORMER_PARAMS)\n", "\n", "lct_ae_embedding_size=lct_gan_params[\"embedding_size\"]\n", "tab_ddpm_normalization=\"quantile\"\n", "tab_ddpm_cat_encoding=tab_ddpm_params[\"cat_encoding\"]\n", "#tab_ddpm_cat_encoding=\"one-hot\"\n", "tab_ddpm_y_policy=\"default\"\n", "tab_ddpm_is_y_cond=True" ] }, { "cell_type": "code", "execution_count": 12, "id": "cca61838", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:47.292550Z", "iopub.status.busy": "2024-03-03T11:01:47.292267Z", "iopub.status.idle": "2024-03-03T11:01:51.912455Z", "shell.execute_reply": "2024-03-03T11:01:51.911426Z" }, "executionInfo": { "elapsed": 3113, "status": "ok", "timestamp": 1696841025277, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "7Abt8nStvr9Z", "papermill": { "duration": 4.635182, "end_time": "2024-03-03T11:01:51.914891", "exception": false, "start_time": "2024-03-03T11:01:47.279709", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "2024-03-03 11:01:49.494405: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", "2024-03-03 11:01:49.494461: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", "2024-03-03 11:01:49.496116: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" ] } ], "source": [ "from ml_utility_loss.loss_learning.estimator.pipeline import load_lct_ae\n", "\n", "lct_ae = load_lct_ae(\n", " dataset_name=dataset_name,\n", " model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", " model_name=\"lct_ae\",\n", " df_name=\"df\",\n", ")\n", "lct_ae = None" ] }, { "cell_type": "code", "execution_count": 13, "id": "6f83b7b6", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:51.941837Z", "iopub.status.busy": "2024-03-03T11:01:51.941275Z", "iopub.status.idle": "2024-03-03T11:01:51.948431Z", "shell.execute_reply": "2024-03-03T11:01:51.947703Z" }, "papermill": { "duration": 0.022719, "end_time": "2024-03-03T11:01:51.950358", "exception": false, "start_time": "2024-03-03T11:01:51.927639", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "from ml_utility_loss.loss_learning.estimator.pipeline import load_rtf_embed\n", "\n", "rtf_embed = load_rtf_embed(\n", " dataset_name=dataset_name,\n", " model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", " model_name=\"realtabformer\",\n", " df_name=\"df\",\n", " ckpt_type=\"best-disc-model\"\n", ")" ] }, { "cell_type": "code", "execution_count": 14, "id": "0026de74", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:01:51.975269Z", "iopub.status.busy": "2024-03-03T11:01:51.974924Z", "iopub.status.idle": "2024-03-03T11:02:00.346124Z", "shell.execute_reply": "2024-03-03T11:02:00.344770Z" }, "executionInfo": { "elapsed": 20137, "status": "ok", "timestamp": 1696841045408, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "tbaguWxAvtPi", "papermill": { "duration": 8.386665, "end_time": "2024-03-03T11:02:00.348756", "exception": false, "start_time": "2024-03-03T11:01:51.962091", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", " warnings.warn(\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", " warnings.warn(\n", "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (6) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n", " .fit(X)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", " warnings.warn(\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\r", " 0%| | 0/1 [00:00 torch.Tensor>,\n", " 'pma_ffn_mode': 'shared',\n", " 'patience': 10,\n", " 'inds_init_mode': 'fixnorm',\n", " 'grad_clip': 0.6896836352825375,\n", " 'head_final_mul': 'identity',\n", " 'gradient_penalty_mode': {'gradient_penalty': False,\n", " 'calc_grad_m': False,\n", " 'avg_non_role_model_m': False,\n", " 'inverse_avg_non_role_model_m': False},\n", " 'dataset_size': 2048,\n", " 'batch_size': 4,\n", " 'epochs': 100,\n", " 'lr_mul': 0.08030439779404704,\n", " 'n_warmup_steps': 85,\n", " 'Optim': torch_optimizer.diffgrad.DiffGrad,\n", " 'fixed_role_model': 'tab_ddpm_concat',\n", " 'd_model': 256,\n", " 'attn_activation': torch.nn.modules.activation.Sigmoid,\n", " 'tf_d_inner': 256,\n", " 'tf_n_layers_enc': 5,\n", " 'tf_n_head': 128,\n", " 'tf_activation': ml_utility_loss.activations.LeakyHardsigmoid,\n", " 'tf_activation_final': ml_utility_loss.activations.LeakyHardtanh,\n", " 'ada_d_hid': 256,\n", " 'ada_n_layers': 8,\n", " 'ada_activation': torch.nn.modules.activation.ReLU6,\n", " 'ada_activation_final': ml_utility_loss.activations.LeakyHardtanh,\n", " 'head_d_hid': 256,\n", " 'head_n_layers': 8,\n", " 'head_n_head': 32,\n", " 'head_activation': torch.nn.modules.activation.ReLU6,\n", " 'head_activation_final': torch.nn.modules.activation.Softsign,\n", " 'single_model': True,\n", " 'models': ['tab_ddpm_concat'],\n", " 'max_seconds': 3600,\n", " 'Body': 'twin_encoder',\n", " 'loss_balancer_log': False,\n", " 'loss_balancer_lbtw': False,\n", " 'pma_skip_small': False,\n", " 'isab_skip_small': False,\n", " 'layer_norm': False,\n", " 'pma_layer_norm': False,\n", " 'attn_residual': True,\n", " 'tf_n_layers_dec': False,\n", " 'tf_isab_rank': 0,\n", " 'tf_layer_norm': False,\n", " 'tf_pma_start': -1,\n", " 'head_n_seeds': 0,\n", " 'dropout': 0,\n", " 'combine_mode': 'diff_left',\n", " 'tf_isab_mode': 'separate',\n", " 'bias': True,\n", " 'bias_final': True,\n", " 'synth_data': 2,\n", " 'tf_lora': False,\n", " 'tf_num_inds': 64,\n", " 'ada_n_seeds': 0,\n", " 'gradient_penalty_kwargs': {'mag_loss': True,\n", " 'mse_mag': False,\n", " 'mag_corr': False,\n", " 'seq_mag': False,\n", " 'cos_loss': False,\n", " 'mag_corr_kwargs': {'only_sign': False},\n", " 'cos_loss_kwargs': {'only_sign': True, 'cos_matrix': False},\n", " 'mse_mag_kwargs': {'target': 0.13044551835398707, 'multiply': True}}}" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import ml_utility_loss.loss_learning.estimator.params2 as PARAMS\n", "from ml_utility_loss.tuning import map_parameters\n", "from ml_utility_loss.loss_learning.estimator.params.default import update_param_space, update_param_space_2\n", "import wandb\n", "\n", "#\"\"\"\n", "param_space = {\n", " **getattr(PARAMS, dataset_name).PARAM_SPACE,\n", "}\n", "params = {\n", " **getattr(PARAMS, dataset_name).BESTS[param_index],\n", "}\n", "if gp:\n", " params[\"gradient_penalty_mode\"] = \"ALL\"\n", " params[\"mse_mag\"] = True\n", " if gp_multiply:\n", " params[\"mse_mag_multiply\"] = True\n", " params[\"mse_mag_target\"] = 1.0\n", " else:\n", " params[\"mse_mag_multiply\"] = False\n", " params[\"mse_mag_target\"] = 0.1\n", "else:\n", " params[\"gradient_penalty_mode\"] = \"NONE\"\n", " params[\"mse_mag\"] = False\n", "params[\"single_model\"] = False\n", "if models:\n", " params[\"models\"] = models\n", "if single_model:\n", " params[\"fixed_role_model\"] = single_model\n", " params[\"single_model\"] = True\n", " params[\"models\"] = [single_model]\n", "if params[\"fixed_role_model\"] == \"realtabformer\" and dataset_name == \"treatment\":\n", " params[\"batch_size\"] = 2\n", "params[\"max_seconds\"] = 3600\n", "params[\"patience\"] = 10\n", "params[\"epochs\"] = 100\n", "if debug:\n", " params[\"epochs\"] = 2\n", "with open(\"params.json\", \"w\") as f:\n", " json.dump(params, f)\n", "params = map_parameters(params, param_space=param_space)\n", "params" ] }, { "cell_type": "code", "execution_count": 19, "id": "a48bd9e9", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:02:00.882262Z", "iopub.status.busy": "2024-03-03T11:02:00.881551Z", "iopub.status.idle": "2024-03-03T11:02:00.955360Z", "shell.execute_reply": "2024-03-03T11:02:00.954296Z" }, "papermill": { "duration": 0.08959, "end_time": "2024-03-03T11:02:00.957400", "exception": false, "start_time": "2024-03-03T11:02:00.867810", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "load_dataset_3_factory 2\n", "Caching in ../../../../insurance/_cache/tab_ddpm_concat/all inf False\n", "Splitting without random!\n", "Split with reverse index!\n", "../../../../ml-utility-loss/datasets_2/insurance [80, 20]\n", "Caching in ../../../../insurance/_cache4/tab_ddpm_concat/all inf False\n", "Splitting without random!\n", "Split with reverse index!\n", "../../../../ml-utility-loss/datasets_4/insurance [80, 20]\n", "Caching in ../../../../insurance/_cache5/tab_ddpm_concat/all inf False\n", "Splitting without random!\n", "Split with reverse index!\n", "../../../../ml-utility-loss/datasets_5/insurance [160, 40]\n", "[320, 80]\n", "[320, 80]\n" ] } ], "source": [ "train_set, val_set = datasetsn(model=params[\"fixed_role_model\"], synth_data=params[\"synth_data\"])" ] }, { "cell_type": "code", "execution_count": 20, "id": "2fcb1418", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "execution": { "iopub.execute_input": "2024-03-03T11:02:00.985850Z", "iopub.status.busy": "2024-03-03T11:02:00.985495Z", "iopub.status.idle": "2024-03-03T11:02:01.418904Z", "shell.execute_reply": "2024-03-03T11:02:01.417808Z" }, "executionInfo": { "elapsed": 396850, "status": "error", "timestamp": 1696841446059, "user": { "displayName": "Rizqi Nur", "userId": "09644007964068789560" }, "user_tz": -420 }, "id": "_bt1MQc5kpSk", "outputId": "01c1d3e5-ac64-461d-835a-b76f4a66e6d6", "papermill": { "duration": 0.4505, "end_time": "2024-03-03T11:02:01.421338", "exception": false, "start_time": "2024-03-03T11:02:00.970838", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Creating model of type \n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[*] Embedding False True\n", "['tab_ddpm_concat'] 1\n" ] } ], "source": [ "from ml_utility_loss.loss_learning.estimator.model.pipeline import remove_non_model_params\n", "from ml_utility_loss.loss_learning.estimator.pipeline import create_model\n", "from ml_utility_loss.util import filter_dict, clear_memory\n", "\n", "clear_memory()\n", "\n", "params2 = remove_non_model_params(params)\n", "adapters = filter_dict(preprocessor.adapter_sizes, params[\"models\"])\n", "\n", "model = create_model(\n", " adapters=adapters,\n", " #Body=\"twin_encoder\",\n", " **params2,\n", ")\n", "#cf.apply_weight_standardization(model, n_last_layers_ignore=0)\n", "print(model.models, len(model.adapters))" ] }, { "cell_type": "code", "execution_count": 21, "id": "938f94fc", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:02:01.451176Z", "iopub.status.busy": "2024-03-03T11:02:01.450374Z", "iopub.status.idle": "2024-03-03T11:02:01.454846Z", "shell.execute_reply": "2024-03-03T11:02:01.453995Z" }, "papermill": { "duration": 0.021568, "end_time": "2024-03-03T11:02:01.456847", "exception": false, "start_time": "2024-03-03T11:02:01.435279", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "study_name=f\"{model_name}_{dataset_name}\"" ] }, { "cell_type": "code", "execution_count": 22, "id": "12fb613e", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:02:01.484109Z", "iopub.status.busy": "2024-03-03T11:02:01.483802Z", "iopub.status.idle": "2024-03-03T11:02:01.491045Z", "shell.execute_reply": "2024-03-03T11:02:01.490241Z" }, "papermill": { "duration": 0.023247, "end_time": "2024-03-03T11:02:01.493037", "exception": false, "start_time": "2024-03-03T11:02:01.469790", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "8696065" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def count_parameters(model):\n", " return sum(p.numel() for p in model.parameters() if p.requires_grad)\n", "\n", "count_parameters(model)" ] }, { "cell_type": "code", "execution_count": 23, "id": "bd386e57", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:02:01.520098Z", "iopub.status.busy": "2024-03-03T11:02:01.519804Z", "iopub.status.idle": "2024-03-03T11:02:01.622148Z", "shell.execute_reply": "2024-03-03T11:02:01.621289Z" }, "papermill": { "duration": 0.11822, "end_time": "2024-03-03T11:02:01.624199", "exception": false, "start_time": "2024-03-03T11:02:01.505979", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "========================================================================================================================\n", "Layer (type:depth-idx) Output Shape Param #\n", "========================================================================================================================\n", "MLUtilitySingle [2, 1071, 12] --\n", "├─Adapter: 1-1 [2, 1071, 12] --\n", "│ └─Sequential: 2-1 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-1 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-1 [2, 1071, 256] 3,328\n", "│ │ │ └─ReLU6: 4-2 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-2 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-3 [2, 1071, 256] 65,792\n", "│ │ │ └─ReLU6: 4-4 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-3 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-5 [2, 1071, 256] 65,792\n", "│ │ │ └─ReLU6: 4-6 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-4 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-7 [2, 1071, 256] 65,792\n", "│ │ │ └─ReLU6: 4-8 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-5 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-9 [2, 1071, 256] 65,792\n", "│ │ │ └─ReLU6: 4-10 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-6 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-11 [2, 1071, 256] 65,792\n", "│ │ │ └─ReLU6: 4-12 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-7 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-13 [2, 1071, 256] 65,792\n", "│ │ │ └─ReLU6: 4-14 [2, 1071, 256] --\n", "│ │ └─FeedForward: 3-8 [2, 1071, 256] --\n", "│ │ │ └─Linear: 4-15 [2, 1071, 256] 65,792\n", "│ │ │ └─LeakyHardtanh: 4-16 [2, 1071, 256] --\n", "├─Adapter: 1-2 [2, 267, 12] (recursive)\n", "│ └─Sequential: 2-2 [2, 267, 256] (recursive)\n", "│ │ └─FeedForward: 3-9 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-17 [2, 267, 256] (recursive)\n", "│ │ │ └─ReLU6: 4-18 [2, 267, 256] --\n", "│ │ └─FeedForward: 3-10 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-19 [2, 267, 256] (recursive)\n", "│ │ │ └─ReLU6: 4-20 [2, 267, 256] --\n", "│ │ └─FeedForward: 3-11 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-21 [2, 267, 256] (recursive)\n", "│ │ │ └─ReLU6: 4-22 [2, 267, 256] --\n", "│ │ └─FeedForward: 3-12 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-23 [2, 267, 256] (recursive)\n", "│ │ │ └─ReLU6: 4-24 [2, 267, 256] --\n", "│ │ └─FeedForward: 3-13 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-25 [2, 267, 256] (recursive)\n", "│ │ │ └─ReLU6: 4-26 [2, 267, 256] --\n", "│ │ └─FeedForward: 3-14 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-27 [2, 267, 256] (recursive)\n", "│ │ │ └─ReLU6: 4-28 [2, 267, 256] --\n", "│ │ └─FeedForward: 3-15 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-29 [2, 267, 256] (recursive)\n", "│ │ │ └─ReLU6: 4-30 [2, 267, 256] --\n", "│ │ └─FeedForward: 3-16 [2, 267, 256] (recursive)\n", "│ │ │ └─Linear: 4-31 [2, 267, 256] (recursive)\n", "│ │ │ └─LeakyHardtanh: 4-32 [2, 267, 256] --\n", "├─TwinEncoder: 1-3 [2, 16384] --\n", "│ └─Encoder: 2-3 [2, 64, 256] --\n", "│ │ └─ModuleList: 3-18 -- (recursive)\n", "│ │ │ └─EncoderLayer: 4-33 [2, 1071, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 64, 256] 16,384\n", "│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 64, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-1 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-2 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-3 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-4 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 128, 64, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-5 [2, 64, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-6 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-7 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-8 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-9 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 128, 1071, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 128, 1071, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-11 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-12 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-2 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-4 [2, 1071, 256] 65,792\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-5 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-6 [2, 1071, 256] 65,792\n", "│ │ │ └─EncoderLayer: 4-34 [2, 1071, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 64, 256] 16,384\n", "│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 64, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-13 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-14 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-15 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-16 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 128, 64, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-17 [2, 64, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-18 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-19 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-20 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-21 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 128, 1071, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 128, 1071, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-23 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-24 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-4 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-10 [2, 1071, 256] 65,792\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-11 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-12 [2, 1071, 256] 65,792\n", "│ │ │ └─EncoderLayer: 4-35 [2, 1071, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 64, 256] 16,384\n", "│ │ │ │ │ └─MultiHeadAttention: 6-14 [2, 64, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-25 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-26 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-27 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-28 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 128, 64, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-29 [2, 64, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-30 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-31 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-32 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-33 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 128, 1071, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 128, 1071, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-35 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-36 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-6 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-16 [2, 1071, 256] 65,792\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-17 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-18 [2, 1071, 256] 65,792\n", "│ │ │ └─EncoderLayer: 4-36 [2, 1071, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-7 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 64, 256] 16,384\n", "│ │ │ │ │ └─MultiHeadAttention: 6-20 [2, 64, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-37 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-38 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-39 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-40 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 128, 64, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-41 [2, 64, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-42 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-21 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-43 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-44 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-45 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 128, 1071, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 128, 1071, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-47 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-48 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-8 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-22 [2, 1071, 256] 65,792\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-23 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-24 [2, 1071, 256] 65,792\n", "│ │ │ └─EncoderLayer: 4-37 [2, 64, 256] --\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-9 [2, 1071, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-25 [2, 64, 256] 16,384\n", "│ │ │ │ │ └─MultiHeadAttention: 6-26 [2, 64, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-49 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-50 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-51 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-52 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 128, 64, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-53 [2, 64, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-54 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-27 [2, 1071, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-55 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-56 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-57 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 128, 1071, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 128, 1071, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-59 [2, 1071, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-60 [2, 1071, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-10 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-28 [2, 1071, 256] 65,792\n", "│ │ │ │ │ └─LeakyHardtanh: 6-29 [2, 1071, 256] --\n", "│ │ │ │ │ └─Linear: 6-30 [2, 1071, 256] 65,792\n", "│ │ │ │ └─PoolingByMultiheadAttention: 5-11 [2, 64, 256] --\n", "│ │ │ │ │ └─TensorInductionPoint: 6-31 [2, 64, 256] 16,384\n", "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-32 [2, 64, 256] --\n", "│ │ │ │ │ │ └─Linear: 7-61 [2, 64, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-62 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─Linear: 7-63 [2, 1071, 256] 65,536\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 128, 64, 1071] --\n", "│ │ │ │ │ │ └─Linear: 7-65 [2, 64, 256] 65,792\n", "│ │ │ │ │ │ └─Sigmoid: 7-66 [2, 64, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-12 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-33 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─LeakyHardtanh: 6-34 [2, 64, 256] --\n", "│ │ │ │ │ └─Linear: 6-35 [2, 64, 256] (recursive)\n", "│ └─Encoder: 2-4 [2, 64, 256] (recursive)\n", "│ │ └─ModuleList: 3-18 -- (recursive)\n", "│ │ │ └─EncoderLayer: 4-38 [2, 267, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-13 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-36 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-37 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-67 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-68 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-69 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 128, 64, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-71 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-72 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-38 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-73 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-74 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-75 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 128, 267, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 128, 267, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-77 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-78 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-14 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-39 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-40 [2, 267, 256] --\n", "│ │ │ │ │ └─Linear: 6-41 [2, 267, 256] (recursive)\n", "│ │ │ └─EncoderLayer: 4-39 [2, 267, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-15 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-42 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-43 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-79 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-80 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-81 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 128, 64, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-83 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-84 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-44 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-85 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-86 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-87 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-88 [2, 128, 267, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-15 [2, 128, 267, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-89 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-90 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-16 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-45 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-46 [2, 267, 256] --\n", "│ │ │ │ │ └─Linear: 6-47 [2, 267, 256] (recursive)\n", "│ │ │ └─EncoderLayer: 4-40 [2, 267, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-17 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-48 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-49 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-91 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-92 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-93 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-94 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-16 [2, 128, 64, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-95 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-96 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-50 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-97 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-98 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-99 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-100 [2, 128, 267, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-17 [2, 128, 267, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-101 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-102 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-18 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-51 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-52 [2, 267, 256] --\n", "│ │ │ │ │ └─Linear: 6-53 [2, 267, 256] (recursive)\n", "│ │ │ └─EncoderLayer: 4-41 [2, 267, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-19 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-54 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-55 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-103 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-104 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-105 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-106 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-18 [2, 128, 64, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-107 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-108 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-56 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-109 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-110 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-111 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-112 [2, 128, 267, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-19 [2, 128, 267, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-113 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-114 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-20 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-57 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─LeakyHardsigmoid: 6-58 [2, 267, 256] --\n", "│ │ │ │ │ └─Linear: 6-59 [2, 267, 256] (recursive)\n", "│ │ │ └─EncoderLayer: 4-42 [2, 64, 256] (recursive)\n", "│ │ │ │ └─SimpleInducedSetAttention: 5-21 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-60 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─MultiHeadAttention: 6-61 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-115 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-116 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-117 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-118 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-20 [2, 128, 64, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-119 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-120 [2, 64, 256] --\n", "│ │ │ │ │ └─MultiHeadAttention: 6-62 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-121 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-122 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-123 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-124 [2, 128, 267, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-21 [2, 128, 267, 64] --\n", "│ │ │ │ │ │ └─Linear: 7-125 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-126 [2, 267, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-22 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-63 [2, 267, 256] (recursive)\n", "│ │ │ │ │ └─LeakyHardtanh: 6-64 [2, 267, 256] --\n", "│ │ │ │ │ └─Linear: 6-65 [2, 267, 256] (recursive)\n", "│ │ │ │ └─PoolingByMultiheadAttention: 5-23 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─TensorInductionPoint: 6-66 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-67 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-127 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-128 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─Linear: 7-129 [2, 267, 256] (recursive)\n", "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-130 [2, 128, 64, 2] --\n", "│ │ │ │ │ │ │ └─Softmax: 8-22 [2, 128, 64, 267] --\n", "│ │ │ │ │ │ └─Linear: 7-131 [2, 64, 256] (recursive)\n", "│ │ │ │ │ │ └─Sigmoid: 7-132 [2, 64, 256] --\n", "│ │ │ │ └─DoubleFeedForward: 5-24 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─Linear: 6-68 [2, 64, 256] (recursive)\n", "│ │ │ │ │ └─LeakyHardtanh: 6-69 [2, 64, 256] --\n", "│ │ │ │ │ └─Linear: 6-70 [2, 64, 256] (recursive)\n", "├─Head: 1-4 [2] --\n", "│ └─Sequential: 2-5 [2, 1] --\n", "│ │ └─FeedForward: 3-19 [2, 256] --\n", "│ │ │ └─Linear: 4-43 [2, 256] 4,194,560\n", "│ │ │ └─ReLU6: 4-44 [2, 256] --\n", "│ │ └─FeedForward: 3-20 [2, 256] --\n", "│ │ │ └─Linear: 4-45 [2, 256] 65,792\n", "│ │ │ └─ReLU6: 4-46 [2, 256] --\n", "│ │ └─FeedForward: 3-21 [2, 256] --\n", "│ │ │ └─Linear: 4-47 [2, 256] 65,792\n", "│ │ │ └─ReLU6: 4-48 [2, 256] --\n", "│ │ └─FeedForward: 3-22 [2, 256] --\n", "│ │ │ └─Linear: 4-49 [2, 256] 65,792\n", "│ │ │ └─ReLU6: 4-50 [2, 256] --\n", "│ │ └─FeedForward: 3-23 [2, 256] --\n", "│ │ │ └─Linear: 4-51 [2, 256] 65,792\n", "│ │ │ └─ReLU6: 4-52 [2, 256] --\n", "│ │ └─FeedForward: 3-24 [2, 256] --\n", "│ │ │ └─Linear: 4-53 [2, 256] 65,792\n", "│ │ │ └─ReLU6: 4-54 [2, 256] --\n", "│ │ └─FeedForward: 3-25 [2, 256] --\n", "│ │ │ └─Linear: 4-55 [2, 256] 65,792\n", "│ │ │ └─ReLU6: 4-56 [2, 256] --\n", "│ │ └─FeedForward: 3-26 [2, 1] --\n", "│ │ │ └─Linear: 4-57 [2, 1] 257\n", "│ │ │ └─Softsign: 4-58 [2, 1] --\n", "========================================================================================================================\n", "Total params: 8,696,065\n", "Trainable params: 8,696,065\n", "Non-trainable params: 0\n", "Total mult-adds (M): 25.74\n", "========================================================================================================================\n", "Input size (MB): 0.13\n", "Forward/backward pass size (MB): 234.98\n", "Params size (MB): 34.78\n", "Estimated Total Size (MB): 269.89\n", "========================================================================================================================" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from torchinfo import summary\n", "\n", "role_model = params[\"fixed_role_model\"]\n", "s = train_set[0][role_model]\n", "summary(model[role_model], input_size=((2, *s[0].shape), (2, *s[1].shape)), depth=9) # 8 max" ] }, { "cell_type": "code", "execution_count": 24, "id": "0f42c4d1", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:02:01.656538Z", "iopub.status.busy": "2024-03-03T11:02:01.655477Z", "iopub.status.idle": "2024-03-03T11:57:24.427329Z", "shell.execute_reply": "2024-03-03T11:57:24.426341Z" }, "papermill": { "duration": 3322.809941, "end_time": "2024-03-03T11:57:24.448804", "exception": false, "start_time": "2024-03-03T11:02:01.638863", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "g_loss_mul 0.1\n", "Epoch 0\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.11390677978924942, 'avg_role_model_std_loss': 1.6075929376992917, 'avg_role_model_mean_pred_loss': 0.05657142685045635, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.11390677978924942, 'n_size': 320, 'n_batch': 80, 'duration': 84.47398400306702, 'duration_batch': 1.0559248000383377, 'duration_size': 0.2639812000095844, 'avg_pred_std': 0.09700191575684584}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.016991531396342907, 'avg_role_model_std_loss': 16.768777330477747, 'avg_role_model_mean_pred_loss': 0.0011311913316453647, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.016991531396342907, 'n_size': 80, 'n_batch': 20, 'duration': 17.97755455970764, 'duration_batch': 0.8988777279853821, 'duration_size': 0.22471943199634553, 'avg_pred_std': 0.016752634930890055}\n", "Epoch 1\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.02035002698939934, 'avg_role_model_std_loss': 3.3028829722441513, 'avg_role_model_mean_pred_loss': 0.0012390867967089977, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.02035002698939934, 'n_size': 320, 'n_batch': 80, 'duration': 84.68451976776123, 'duration_batch': 1.0585564970970154, 'duration_size': 0.26463912427425385, 'avg_pred_std': 0.06200033854111098}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.011681753185985144, 'avg_role_model_std_loss': 4.98499947126902, 'avg_role_model_mean_pred_loss': 0.00011886494331716512, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011681753185985144, 'n_size': 80, 'n_batch': 20, 'duration': 18.428929567337036, 'duration_batch': 0.9214464783668518, 'duration_size': 0.23036161959171295, 'avg_pred_std': 0.022514818981289864}\n", "Epoch 2\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.015553263086258085, 'avg_role_model_std_loss': 4.40048983076071, 'avg_role_model_mean_pred_loss': 0.0012610154882150097, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.015553263086258085, 'n_size': 320, 'n_batch': 80, 'duration': 84.47719740867615, 'duration_batch': 1.055964967608452, 'duration_size': 0.263991241902113, 'avg_pred_std': 0.04350193784048315}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.012001678717297182, 'avg_role_model_std_loss': 2.0838609129365295, 'avg_role_model_mean_pred_loss': 0.00018355202230315414, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.012001678717297182, 'n_size': 80, 'n_batch': 20, 'duration': 18.23084259033203, 'duration_batch': 0.9115421295166015, 'duration_size': 0.22788553237915038, 'avg_pred_std': 0.026969157496932895}\n", "Epoch 3\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.012385944992274744, 'avg_role_model_std_loss': 3.628137231519884, 'avg_role_model_mean_pred_loss': 0.0006446951736899908, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.012385944992274744, 'n_size': 320, 'n_batch': 80, 'duration': 84.30943512916565, 'duration_batch': 1.0538679391145707, 'duration_size': 0.26346698477864267, 'avg_pred_std': 0.03804389561410062}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.011361928719270508, 'avg_role_model_std_loss': 2.9160453390245267, 'avg_role_model_mean_pred_loss': 0.00016351417628470699, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011361928719270508, 'n_size': 80, 'n_batch': 20, 'duration': 18.110987901687622, 'duration_batch': 0.9055493950843811, 'duration_size': 0.2263873487710953, 'avg_pred_std': 0.02250743337208405}\n", "Epoch 4\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.012263958598123282, 'avg_role_model_std_loss': 3.76344175813676, 'avg_role_model_mean_pred_loss': 0.0004104777633484336, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.012263958598123282, 'n_size': 320, 'n_batch': 80, 'duration': 84.6977150440216, 'duration_batch': 1.05872143805027, 'duration_size': 0.2646803595125675, 'avg_pred_std': 0.03591603521199431}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.011301952104258817, 'avg_role_model_std_loss': 2.2325485425771605, 'avg_role_model_mean_pred_loss': 0.00016856359858614668, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011301952104258817, 'n_size': 80, 'n_batch': 20, 'duration': 18.113478422164917, 'duration_batch': 0.9056739211082458, 'duration_size': 0.22641848027706146, 'avg_pred_std': 0.028445655293762685}\n", "Epoch 5\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011240640739742958, 'avg_role_model_std_loss': 2.6737590567842524, 'avg_role_model_mean_pred_loss': 0.00015413710455663006, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011240640739742958, 'n_size': 320, 'n_batch': 80, 'duration': 84.4088442325592, 'duration_batch': 1.05511055290699, 'duration_size': 0.2637776382267475, 'avg_pred_std': 0.04411998361465521}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009927860215248075, 'avg_role_model_std_loss': 1.5344439736139974, 'avg_role_model_mean_pred_loss': 2.0057166005040678e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009927860215248075, 'n_size': 80, 'n_batch': 20, 'duration': 18.26319670677185, 'duration_batch': 0.9131598353385926, 'duration_size': 0.22828995883464814, 'avg_pred_std': 0.03175867693498731}\n", "Epoch 6\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011858757758818683, 'avg_role_model_std_loss': 3.5301289926825974, 'avg_role_model_mean_pred_loss': 0.0002819792471252053, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011858757758818683, 'n_size': 320, 'n_batch': 80, 'duration': 84.27680397033691, 'duration_batch': 1.0534600496292115, 'duration_size': 0.26336501240730287, 'avg_pred_std': 0.03954663624172099}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.012078169028973207, 'avg_role_model_std_loss': 4.102863686283408, 'avg_role_model_mean_pred_loss': 0.000203830946862138, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.012078169028973207, 'n_size': 80, 'n_batch': 20, 'duration': 18.098918199539185, 'duration_batch': 0.9049459099769592, 'duration_size': 0.2262364774942398, 'avg_pred_std': 0.021373049879912287}\n", "Epoch 7\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.012539188255323097, 'avg_role_model_std_loss': 3.3092838149226282, 'avg_role_model_mean_pred_loss': 0.00023790401172929277, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.012539188255323097, 'n_size': 320, 'n_batch': 80, 'duration': 84.52259421348572, 'duration_batch': 1.0565324276685715, 'duration_size': 0.26413310691714287, 'avg_pred_std': 0.04043100443377625}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009674683933417328, 'avg_role_model_std_loss': 0.9977919148524961, 'avg_role_model_mean_pred_loss': 1.1186481361031685e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009674683933417328, 'n_size': 80, 'n_batch': 20, 'duration': 18.143858671188354, 'duration_batch': 0.9071929335594178, 'duration_size': 0.22679823338985444, 'avg_pred_std': 0.04099587097298354}\n", "Epoch 8\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011895681292844528, 'avg_role_model_std_loss': 2.8657706266691036, 'avg_role_model_mean_pred_loss': 0.0002743295693480711, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011895681292844528, 'n_size': 320, 'n_batch': 80, 'duration': 84.31953191757202, 'duration_batch': 1.0539941489696503, 'duration_size': 0.26349853724241257, 'avg_pred_std': 0.042222958011552694}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009975977733847684, 'avg_role_model_std_loss': 1.1835033869873883, 'avg_role_model_mean_pred_loss': 2.0587880793299097e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009975977733847684, 'n_size': 80, 'n_batch': 20, 'duration': 18.042185306549072, 'duration_batch': 0.9021092653274536, 'duration_size': 0.2255273163318634, 'avg_pred_std': 0.035635373927652834}\n", "Epoch 9\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010924837501352157, 'avg_role_model_std_loss': 2.593468050354761, 'avg_role_model_mean_pred_loss': 9.935248510884783e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010924837501352157, 'n_size': 320, 'n_batch': 80, 'duration': 84.26527738571167, 'duration_batch': 1.0533159673213959, 'duration_size': 0.26332899183034897, 'avg_pred_std': 0.045242260512895885}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.010778275438860873, 'avg_role_model_std_loss': 3.146427918606969, 'avg_role_model_mean_pred_loss': 7.896810024603518e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010778275438860873, 'n_size': 80, 'n_batch': 20, 'duration': 18.036173820495605, 'duration_batch': 0.9018086910247802, 'duration_size': 0.22545217275619506, 'avg_pred_std': 0.022399809048511087}\n", "Epoch 10\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011383894624395907, 'avg_role_model_std_loss': 2.930524671732963, 'avg_role_model_mean_pred_loss': 0.00018457749493845378, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011383894624395907, 'n_size': 320, 'n_batch': 80, 'duration': 84.58404278755188, 'duration_batch': 1.0573005348443985, 'duration_size': 0.2643251337110996, 'avg_pred_std': 0.042266642485628836}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009755220862280112, 'avg_role_model_std_loss': 1.5220770264881138, 'avg_role_model_mean_pred_loss': 1.059227741908586e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009755220862280112, 'n_size': 80, 'n_batch': 20, 'duration': 17.980788469314575, 'duration_batch': 0.8990394234657287, 'duration_size': 0.22475985586643218, 'avg_pred_std': 0.03333416555542499}\n", "Epoch 11\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010721845665102592, 'avg_role_model_std_loss': 1.8063977722115752, 'avg_role_model_mean_pred_loss': 9.594455589044034e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010721845665102592, 'n_size': 320, 'n_batch': 80, 'duration': 84.16543889045715, 'duration_batch': 1.0520679861307145, 'duration_size': 0.2630169965326786, 'avg_pred_std': 0.047608432272681966}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009559676682692952, 'avg_role_model_std_loss': 1.3243680567820775, 'avg_role_model_mean_pred_loss': 9.947778448005095e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009559676682692952, 'n_size': 80, 'n_batch': 20, 'duration': 18.158392667770386, 'duration_batch': 0.9079196333885193, 'duration_size': 0.22697990834712983, 'avg_pred_std': 0.031689733476378025}\n", "Epoch 12\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011144705655783581, 'avg_role_model_std_loss': 2.4096494605510026, 'avg_role_model_mean_pred_loss': 0.00032173466922595813, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011144705655783581, 'n_size': 320, 'n_batch': 80, 'duration': 84.13634371757507, 'duration_batch': 1.0517042964696883, 'duration_size': 0.2629260741174221, 'avg_pred_std': 0.044573025617864914}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009567469572357368, 'avg_role_model_std_loss': 1.5696021520542787, 'avg_role_model_mean_pred_loss': 1.1404201347278014e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009567469572357368, 'n_size': 80, 'n_batch': 20, 'duration': 17.92456030845642, 'duration_batch': 0.896228015422821, 'duration_size': 0.22405700385570526, 'avg_pred_std': 0.03133328107651323}\n", "Epoch 13\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010633787492497503, 'avg_role_model_std_loss': 2.5790517816062755, 'avg_role_model_mean_pred_loss': 0.0003470440018317923, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010633787492497503, 'n_size': 320, 'n_batch': 80, 'duration': 84.38668012619019, 'duration_batch': 1.0548335015773773, 'duration_size': 0.26370837539434433, 'avg_pred_std': 0.04384268364228774}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009436554487911053, 'avg_role_model_std_loss': 1.4380358837069962, 'avg_role_model_mean_pred_loss': 1.7537142142520778e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009436554487911053, 'n_size': 80, 'n_batch': 20, 'duration': 18.151715517044067, 'duration_batch': 0.9075857758522033, 'duration_size': 0.22689644396305084, 'avg_pred_std': 0.03785984092392027}\n", "Epoch 14\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.01104943135223948, 'avg_role_model_std_loss': 2.1088742282857766, 'avg_role_model_mean_pred_loss': 0.0002007622467717723, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.01104943135223948, 'n_size': 320, 'n_batch': 80, 'duration': 84.27291560173035, 'duration_batch': 1.0534114450216294, 'duration_size': 0.26335286125540736, 'avg_pred_std': 0.0478535434929654}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.01036879940838844, 'avg_role_model_std_loss': 0.8904372502282059, 'avg_role_model_mean_pred_loss': 7.801706653562946e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.01036879940838844, 'n_size': 80, 'n_batch': 20, 'duration': 18.29806423187256, 'duration_batch': 0.914903211593628, 'duration_size': 0.228725802898407, 'avg_pred_std': 0.051562142791226506}\n", "Epoch 15\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011128615495272243, 'avg_role_model_std_loss': 1.7709791813538458, 'avg_role_model_mean_pred_loss': 0.00021516576313122763, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011128615495272243, 'n_size': 320, 'n_batch': 80, 'duration': 85.58019542694092, 'duration_batch': 1.0697524428367615, 'duration_size': 0.2674381107091904, 'avg_pred_std': 0.049932096980046484}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.00949138020951068, 'avg_role_model_std_loss': 1.0204340409804673, 'avg_role_model_mean_pred_loss': 1.8300672786680795e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00949138020951068, 'n_size': 80, 'n_batch': 20, 'duration': 18.28961968421936, 'duration_batch': 0.914480984210968, 'duration_size': 0.228620246052742, 'avg_pred_std': 0.04147392325103283}\n", "Epoch 16\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010429539207643756, 'avg_role_model_std_loss': 1.5362692275628125, 'avg_role_model_mean_pred_loss': 0.00025102296517166747, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010429539207643756, 'n_size': 320, 'n_batch': 80, 'duration': 84.87365674972534, 'duration_batch': 1.0609207093715667, 'duration_size': 0.26523017734289167, 'avg_pred_std': 0.05195366198895499}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009322703200996329, 'avg_role_model_std_loss': 1.743853185043554, 'avg_role_model_mean_pred_loss': 1.2576797408925255e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009322703200996329, 'n_size': 80, 'n_batch': 20, 'duration': 17.977401971817017, 'duration_batch': 0.8988700985908509, 'duration_size': 0.22471752464771272, 'avg_pred_std': 0.03613527067936957}\n", "Epoch 17\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010465346425053212, 'avg_role_model_std_loss': 1.4406497691373554, 'avg_role_model_mean_pred_loss': 0.00016243213518344694, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010465346425053212, 'n_size': 320, 'n_batch': 80, 'duration': 84.5495491027832, 'duration_batch': 1.0568693637847901, 'duration_size': 0.26421734094619753, 'avg_pred_std': 0.04888715610140935}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009582025398412953, 'avg_role_model_std_loss': 3.081415921854597, 'avg_role_model_mean_pred_loss': 5.574405601427302e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009582025398412953, 'n_size': 80, 'n_batch': 20, 'duration': 17.912070274353027, 'duration_batch': 0.8956035137176513, 'duration_size': 0.22390087842941284, 'avg_pred_std': 0.025306159909814597}\n", "Epoch 18\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010162418862455525, 'avg_role_model_std_loss': 1.5145359354102208, 'avg_role_model_mean_pred_loss': 6.209586736886912e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010162418862455525, 'n_size': 320, 'n_batch': 80, 'duration': 84.28248190879822, 'duration_batch': 1.0535310238599778, 'duration_size': 0.26338275596499444, 'avg_pred_std': 0.0519078379671555}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009476123469903541, 'avg_role_model_std_loss': 1.0078544585018676, 'avg_role_model_mean_pred_loss': 1.8715846066100564e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009476123469903541, 'n_size': 80, 'n_batch': 20, 'duration': 17.901034355163574, 'duration_batch': 0.8950517177581787, 'duration_size': 0.22376292943954468, 'avg_pred_std': 0.03873717384412885}\n", "Epoch 19\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010770342201794847, 'avg_role_model_std_loss': 2.009929773015307, 'avg_role_model_mean_pred_loss': 0.00013072784897420476, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010770342201794847, 'n_size': 320, 'n_batch': 80, 'duration': 84.82972049713135, 'duration_batch': 1.060371506214142, 'duration_size': 0.2650928765535355, 'avg_pred_std': 0.04557969000888988}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009593866099567094, 'avg_role_model_std_loss': 0.7345563380621798, 'avg_role_model_mean_pred_loss': 1.3211068784391156e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009593866099567094, 'n_size': 80, 'n_batch': 20, 'duration': 18.183232307434082, 'duration_batch': 0.9091616153717041, 'duration_size': 0.22729040384292604, 'avg_pred_std': 0.04364799705799669}\n", "Epoch 20\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011184974256775605, 'avg_role_model_std_loss': 1.735422194222258, 'avg_role_model_mean_pred_loss': 0.00015653051535653267, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011184974256775605, 'n_size': 320, 'n_batch': 80, 'duration': 84.4685800075531, 'duration_batch': 1.0558572500944137, 'duration_size': 0.2639643125236034, 'avg_pred_std': 0.04943769198143855}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.00922505634080153, 'avg_role_model_std_loss': 1.1232440773048438, 'avg_role_model_mean_pred_loss': 2.5773531761252856e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00922505634080153, 'n_size': 80, 'n_batch': 20, 'duration': 18.073370695114136, 'duration_batch': 0.9036685347557067, 'duration_size': 0.22591713368892669, 'avg_pred_std': 0.0375345426844433}\n", "Epoch 21\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010670667553040403, 'avg_role_model_std_loss': 1.6657181285418345, 'avg_role_model_mean_pred_loss': 0.00026890914427888377, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010670667553040403, 'n_size': 320, 'n_batch': 80, 'duration': 84.49483013153076, 'duration_batch': 1.0561853766441345, 'duration_size': 0.2640463441610336, 'avg_pred_std': 0.0491774610709399}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.011584205193139496, 'avg_role_model_std_loss': 4.0657152492325626, 'avg_role_model_mean_pred_loss': 3.660291929232784e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011584205193139496, 'n_size': 80, 'n_batch': 20, 'duration': 17.99208927154541, 'duration_batch': 0.8996044635772705, 'duration_size': 0.22490111589431763, 'avg_pred_std': 0.030582628422416748}\n", "Epoch 22\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011918405044889368, 'avg_role_model_std_loss': 1.9266218843145224, 'avg_role_model_mean_pred_loss': 0.000546820462109244, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011918405044889368, 'n_size': 320, 'n_batch': 80, 'duration': 84.82066988945007, 'duration_batch': 1.060258373618126, 'duration_size': 0.2650645934045315, 'avg_pred_std': 0.049488182202912866}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009260490916494746, 'avg_role_model_std_loss': 2.0702868502448837, 'avg_role_model_mean_pred_loss': 1.115468241086326e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009260490916494746, 'n_size': 80, 'n_batch': 20, 'duration': 18.213539123535156, 'duration_batch': 0.9106769561767578, 'duration_size': 0.22766923904418945, 'avg_pred_std': 0.03006206527352333}\n", "Epoch 23\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010364986025706457, 'avg_role_model_std_loss': 6.042574923066354, 'avg_role_model_mean_pred_loss': 0.00012542121491789134, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010364986025706457, 'n_size': 320, 'n_batch': 80, 'duration': 84.50646162033081, 'duration_batch': 1.0563307702541351, 'duration_size': 0.2640826925635338, 'avg_pred_std': 0.045613451191994156}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009321882369113155, 'avg_role_model_std_loss': 1.242719502127511, 'avg_role_model_mean_pred_loss': 2.0408335805721654e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009321882369113155, 'n_size': 80, 'n_batch': 20, 'duration': 17.993885278701782, 'duration_batch': 0.8996942639350891, 'duration_size': 0.22492356598377228, 'avg_pred_std': 0.03894345450680703}\n", "Epoch 24\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010127854481288523, 'avg_role_model_std_loss': 1.3548822252588457, 'avg_role_model_mean_pred_loss': 9.947211313221551e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010127854481288523, 'n_size': 320, 'n_batch': 80, 'duration': 84.6096601486206, 'duration_batch': 1.0576207518577576, 'duration_size': 0.2644051879644394, 'avg_pred_std': 0.05492281899787486}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.00973101281633717, 'avg_role_model_std_loss': 2.803459626334097, 'avg_role_model_mean_pred_loss': 3.2155193029839366e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.00973101281633717, 'n_size': 80, 'n_batch': 20, 'duration': 18.34537410736084, 'duration_batch': 0.917268705368042, 'duration_size': 0.2293171763420105, 'avg_pred_std': 0.02301093057030812}\n", "Epoch 25\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010673620513580317, 'avg_role_model_std_loss': 1.630422155917519, 'avg_role_model_mean_pred_loss': 0.0002799555220394656, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010673620513580317, 'n_size': 320, 'n_batch': 80, 'duration': 84.58660197257996, 'duration_batch': 1.0573325246572494, 'duration_size': 0.26433313116431234, 'avg_pred_std': 0.046520658489316705}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009462428228289355, 'avg_role_model_std_loss': 2.6746044414641346, 'avg_role_model_mean_pred_loss': 1.355185217843946e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009462428228289355, 'n_size': 80, 'n_batch': 20, 'duration': 18.011495113372803, 'duration_batch': 0.9005747556686401, 'duration_size': 0.22514368891716002, 'avg_pred_std': 0.025657533458434044}\n", "Epoch 26\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.009991624747397055, 'avg_role_model_std_loss': 1.627927773291799, 'avg_role_model_mean_pred_loss': 8.125562307790029e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009991624747397055, 'n_size': 320, 'n_batch': 80, 'duration': 84.53830814361572, 'duration_batch': 1.0567288517951965, 'duration_size': 0.2641822129487991, 'avg_pred_std': 0.050572005746653305}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.01111485290057317, 'avg_role_model_std_loss': 2.272924814505939, 'avg_role_model_mean_pred_loss': 0.000244029233883869, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.01111485290057317, 'n_size': 80, 'n_batch': 20, 'duration': 18.182761192321777, 'duration_batch': 0.9091380596160888, 'duration_size': 0.2272845149040222, 'avg_pred_std': 0.02627429796848446}\n", "Epoch 27\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.011247798605666048, 'avg_role_model_std_loss': 2.117468389116715, 'avg_role_model_mean_pred_loss': 0.00020426704126478152, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.011247798605666048, 'n_size': 320, 'n_batch': 80, 'duration': 84.47703838348389, 'duration_batch': 1.0559629797935486, 'duration_size': 0.26399074494838715, 'avg_pred_std': 0.04596492229029536}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009433183281817036, 'avg_role_model_std_loss': 1.450164285198241, 'avg_role_model_mean_pred_loss': 1.8529243547119787e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009433183281817036, 'n_size': 80, 'n_batch': 20, 'duration': 18.082876205444336, 'duration_batch': 0.9041438102722168, 'duration_size': 0.2260359525680542, 'avg_pred_std': 0.03382655227323994}\n", "Epoch 28\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.009869320008056093, 'avg_role_model_std_loss': 1.5068146906768447, 'avg_role_model_mean_pred_loss': 9.115362455692777e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009869320008056093, 'n_size': 320, 'n_batch': 80, 'duration': 84.38812756538391, 'duration_batch': 1.054851594567299, 'duration_size': 0.26371289864182473, 'avg_pred_std': 0.05035865947138518}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009240709943878756, 'avg_role_model_std_loss': 1.3003549632573517, 'avg_role_model_mean_pred_loss': 6.990615373461684e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009240709943878756, 'n_size': 80, 'n_batch': 20, 'duration': 18.295058012008667, 'duration_batch': 0.9147529006004333, 'duration_size': 0.22868822515010834, 'avg_pred_std': 0.03447220445377752}\n", "Epoch 29\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.01015008869671874, 'avg_role_model_std_loss': 1.6426295430076934, 'avg_role_model_mean_pred_loss': 8.031235901584562e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.01015008869671874, 'n_size': 320, 'n_batch': 80, 'duration': 84.30770874023438, 'duration_batch': 1.0538463592529297, 'duration_size': 0.2634615898132324, 'avg_pred_std': 0.04944546818442177}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.008979192694823723, 'avg_role_model_std_loss': 1.013558323823196, 'avg_role_model_mean_pred_loss': 1.5330314378037e-05, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.008979192694823723, 'n_size': 80, 'n_batch': 20, 'duration': 17.981907844543457, 'duration_batch': 0.8990953922271728, 'duration_size': 0.2247738480567932, 'avg_pred_std': 0.035569448093883696}\n", "Epoch 30\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Train loss {'avg_role_model_loss': 0.010348305049683404, 'avg_role_model_std_loss': 1.0208274961811328, 'avg_role_model_mean_pred_loss': 0.00023567322375602772, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.010348305049683404, 'n_size': 320, 'n_batch': 80, 'duration': 84.40145015716553, 'duration_batch': 1.055018126964569, 'duration_size': 0.2637545317411423, 'avg_pred_std': 0.05335634221555665}\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Val loss {'avg_role_model_loss': 0.009130275297502521, 'avg_role_model_std_loss': 1.2715821872590367, 'avg_role_model_mean_pred_loss': 7.716895467813068e-06, 'avg_role_model_g_mag_loss': 0.0, 'avg_role_model_g_cos_loss': 0.0, 'avg_non_role_model_g_mag_loss': 0.0, 'avg_non_role_model_g_cos_loss': 0.0, 'avg_non_role_model_embed_loss': 0.0, 'avg_loss': 0.009130275297502521, 'n_size': 80, 'n_batch': 20, 'duration': 18.11615824699402, 'duration_batch': 0.9058079123497009, 'duration_size': 0.22645197808742523, 'avg_pred_std': 0.03190355768892914}\n", "Stopped False\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Eval loss {'role_model': 'tab_ddpm_concat', 'n_size': 399, 'n_batch': 100, 'role_model_metrics': {'avg_loss': 0.019684911810006377, 'avg_g_mag_loss': nan, 'avg_g_cos_loss': 0.0021236211053054007, 'pred_duration': 2.178314447402954, 'grad_duration': 1.2552392482757568, 'total_duration': 3.433553695678711, 'pred_std': 0.06186112388968468, 'std_loss': 0.5796476006507874, 'mean_pred_loss': 4.718968921224587e-05, 'pred_rmse': 0.14030292630195618, 'pred_mae': 0.10000143945217133, 'pred_mape': 0.7038320302963257, 'grad_rmse': 0.2803622782230377, 'grad_mae': 0.19953711330890656, 'grad_mape': 0.9926933646202087}, 'non_role_model_metrics': {'avg_loss': 0, 'avg_g_mag_loss': 0, 'avg_g_cos_loss': 0, 'avg_pred_duration': 0, 'avg_grad_duration': 0, 'avg_total_duration': 0, 'avg_pred_std': 0, 'avg_std_loss': 0, 'avg_mean_pred_loss': 0}, 'avg_metrics': {'avg_loss': 0.019684911810006377, 'avg_g_mag_loss': nan, 'avg_g_cos_loss': 0.0021236211053054007, 'avg_pred_duration': 2.178314447402954, 'avg_grad_duration': 1.2552392482757568, 'avg_total_duration': 3.433553695678711, 'avg_pred_std': 0.06186112388968468, 'avg_std_loss': 0.5796476006507874, 'avg_mean_pred_loss': 4.718968921224587e-05}, 'min_metrics': {'avg_loss': 0.019684911810006377, 'avg_g_mag_loss': nan, 'avg_g_cos_loss': 0.0021236211053054007, 'pred_duration': 2.178314447402954, 'grad_duration': 1.2552392482757568, 'total_duration': 3.433553695678711, 'pred_std': 0.06186112388968468, 'std_loss': 0.5796476006507874, 'mean_pred_loss': 4.718968921224587e-05, 'pred_rmse': 0.14030292630195618, 'pred_mae': 0.10000143945217133, 'pred_mape': 0.7038320302963257, 'grad_rmse': 0.2803622782230377, 'grad_mae': 0.19953711330890656, 'grad_mape': 0.9926933646202087}, 'model_metrics': {'tab_ddpm_concat': {'avg_loss': 0.019684911810006377, 'avg_g_mag_loss': nan, 'avg_g_cos_loss': 0.0021236211053054007, 'pred_duration': 2.178314447402954, 'grad_duration': 1.2552392482757568, 'total_duration': 3.433553695678711, 'pred_std': 0.06186112388968468, 'std_loss': 0.5796476006507874, 'mean_pred_loss': 4.718968921224587e-05, 'pred_rmse': 0.14030292630195618, 'pred_mae': 0.10000143945217133, 'pred_mape': 0.7038320302963257, 'grad_rmse': 0.2803622782230377, 'grad_mae': 0.19953711330890656, 'grad_mape': 0.9926933646202087}}}\n" ] } ], "source": [ "import torch\n", "from ml_utility_loss.loss_learning.estimator.pipeline import train, train_2\n", "from ml_utility_loss.loss_learning.estimator.process_simple import train_epoch, eval as _eval\n", "from ml_utility_loss.params import GradientPenaltyMode\n", "from ml_utility_loss.util import clear_memory\n", "import time\n", "#torch.autograd.set_detect_anomaly(True)\n", "\n", "clear_memory()\n", "\n", "opt = params[\"Optim\"](model.parameters())\n", "loss = train_2(\n", " [train_set, val_set, test_set],\n", " preprocessor=preprocessor,\n", " whole_model=model,\n", " optim=opt,\n", " log_dir=\"logs\",\n", " checkpoint_dir=\"checkpoints\",\n", " verbose=True,\n", " allow_same_prediction=allow_same_prediction,\n", " wandb=wandb if log_wandb else None,\n", " study_name=study_name,\n", " **params\n", ")" ] }, { "cell_type": "code", "execution_count": 25, "id": "9b514a07", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:57:24.490374Z", "iopub.status.busy": "2024-03-03T11:57:24.489536Z", "iopub.status.idle": "2024-03-03T11:57:24.493889Z", "shell.execute_reply": "2024-03-03T11:57:24.493023Z" }, "papermill": { "duration": 0.027217, "end_time": "2024-03-03T11:57:24.495842", "exception": false, "start_time": "2024-03-03T11:57:24.468625", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "model = loss[\"whole_model\"]\n", "opt = loss[\"optim\"]" ] }, { "cell_type": "code", "execution_count": 26, "id": "331a49e1", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:57:24.536429Z", "iopub.status.busy": "2024-03-03T11:57:24.535822Z", "iopub.status.idle": "2024-03-03T11:57:24.615653Z", "shell.execute_reply": "2024-03-03T11:57:24.614420Z" }, "papermill": { "duration": 0.103308, "end_time": "2024-03-03T11:57:24.618128", "exception": false, "start_time": "2024-03-03T11:57:24.514820", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import torch\n", "from copy import deepcopy\n", "\n", "torch.save(deepcopy(model.state_dict()), \"model.pt\")\n", "#torch.save(deepcopy(opt.state_dict()), \"optim.pt\")" ] }, { "cell_type": "code", "execution_count": 27, "id": "123b4b17", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:57:24.659332Z", "iopub.status.busy": "2024-03-03T11:57:24.659016Z", "iopub.status.idle": "2024-03-03T11:57:24.929981Z", "shell.execute_reply": "2024-03-03T11:57:24.928997Z" }, "papermill": { "duration": 0.294048, "end_time": "2024-03-03T11:57:24.931923", "exception": false, "start_time": "2024-03-03T11:57:24.637875", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "history = loss[\"history\"]\n", "history.to_csv(\"history.csv\")\n", "history[[\"avg_loss_train\", \"avg_loss_test\"]].plot()" ] }, { "cell_type": "code", "execution_count": 28, "id": "2586ba0a", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:57:24.972376Z", "iopub.status.busy": "2024-03-03T11:57:24.972050Z", "iopub.status.idle": "2024-03-03T11:59:09.938182Z", "shell.execute_reply": "2024-03-03T11:59:09.937120Z" }, "papermill": { "duration": 104.989386, "end_time": "2024-03-03T11:59:09.940839", "exception": false, "start_time": "2024-03-03T11:57:24.951453", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "\n", "from ml_utility_loss.loss_learning.estimator.pipeline import eval\n", "#eval_loss = loss[\"eval_loss\"]\n", "\n", "batch_size = params[\"batch_size_low\"] if \"batch_size_low\" in params else params[\"batch_size\"]\n", "\n", "eval_loss = eval(\n", " test_set, model,\n", " batch_size=batch_size,\n", ")" ] }, { "cell_type": "code", "execution_count": 29, "id": "187137f6", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:59:09.984105Z", "iopub.status.busy": "2024-03-03T11:59:09.983752Z", "iopub.status.idle": "2024-03-03T11:59:10.005079Z", "shell.execute_reply": "2024-03-03T11:59:10.004227Z" }, "papermill": { "duration": 0.045165, "end_time": "2024-03-03T11:59:10.007079", "exception": false, "start_time": "2024-03-03T11:59:09.961914", "status": "completed" }, "tags": [] }, "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", "
avg_g_cos_lossavg_g_mag_lossavg_lossgrad_durationgrad_maegrad_mapegrad_rmsemean_pred_losspred_durationpred_maepred_mapepred_rmsepred_stdstd_losstotal_duration
tab_ddpm_concat0.0025560.5241130.0196851.2617410.1995370.9926930.2803620.0000472.1811290.1000010.7038320.1403030.0618610.5796483.442869
\n", "
" ], "text/plain": [ " avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration \\\n", "tab_ddpm_concat 0.002556 0.524113 0.019685 1.261741 \n", "\n", " grad_mae grad_mape grad_rmse mean_pred_loss \\\n", "tab_ddpm_concat 0.199537 0.992693 0.280362 0.000047 \n", "\n", " pred_duration pred_mae pred_mape pred_rmse pred_std \\\n", "tab_ddpm_concat 2.181129 0.100001 0.703832 0.140303 0.061861 \n", "\n", " std_loss total_duration \n", "tab_ddpm_concat 0.579648 3.442869 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "metrics = pd.DataFrame(eval_loss[\"model_metrics\"]).T\n", "metrics.to_csv(\"eval.csv\")\n", "metrics" ] }, { "cell_type": "code", "execution_count": 30, "id": "123d305b", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:59:10.059613Z", "iopub.status.busy": "2024-03-03T11:59:10.059114Z", "iopub.status.idle": "2024-03-03T11:59:10.519619Z", "shell.execute_reply": "2024-03-03T11:59:10.518672Z" }, "papermill": { "duration": 0.492551, "end_time": "2024-03-03T11:59:10.521766", "exception": false, "start_time": "2024-03-03T11:59:10.029215", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "from ml_utility_loss.util import clear_memory\n", "clear_memory()" ] }, { "cell_type": "code", "execution_count": 31, "id": "a3eecc2a", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T11:59:10.564330Z", "iopub.status.busy": "2024-03-03T11:59:10.563999Z", "iopub.status.idle": "2024-03-03T12:01:02.226778Z", "shell.execute_reply": "2024-03-03T12:01:02.225923Z" }, "papermill": { "duration": 111.687045, "end_time": "2024-03-03T12:01:02.229479", "exception": false, "start_time": "2024-03-03T11:59:10.542434", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Caching in ../../../../insurance/_cache_test/tab_ddpm_concat/all inf False\n" ] } ], "source": [ "#\"\"\"\n", "from ml_utility_loss.loss_learning.estimator.process import pred, pred_2\n", "from ml_utility_loss.util import stack_samples\n", "\n", "#samples = test_set[list(range(len(test_set)))]\n", "#y = {m: pred(model[m], s) for m, s in samples.items()}\n", "y = pred_2(model, test_set, batch_size=batch_size)\n", "#\"\"\"" ] }, { "cell_type": "code", "execution_count": 32, "id": "6ab51db8", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T12:01:02.273874Z", "iopub.status.busy": "2024-03-03T12:01:02.273107Z", "iopub.status.idle": "2024-03-03T12:01:02.290903Z", "shell.execute_reply": "2024-03-03T12:01:02.290177Z" }, "papermill": { "duration": 0.042098, "end_time": "2024-03-03T12:01:02.292899", "exception": false, "start_time": "2024-03-03T12:01:02.250801", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "from ml_utility_loss.util import transpose_dict\n", "\n", "os.makedirs(\"pred\", exist_ok=True)\n", "y2 = transpose_dict(y)\n", "for k, v in y2.items():\n", " df = pd.DataFrame(v)\n", " df.to_csv(f\"pred/{k}.csv\")" ] }, { "cell_type": "code", "execution_count": 33, "id": "d81a30f1", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T12:01:02.334500Z", "iopub.status.busy": "2024-03-03T12:01:02.334198Z", "iopub.status.idle": "2024-03-03T12:01:02.339555Z", "shell.execute_reply": "2024-03-03T12:01:02.338676Z" }, "papermill": { "duration": 0.027945, "end_time": "2024-03-03T12:01:02.341506", "exception": false, "start_time": "2024-03-03T12:01:02.313561", "status": "completed" }, "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'tab_ddpm_concat': 0.038165719780903475}\n" ] } ], "source": [ "print({k: sum(v[\"pred\"])/len(v[\"pred\"]) for k, v in y.items()})" ] }, { "cell_type": "code", "execution_count": 34, "id": "3b3ff322", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T12:01:02.383613Z", "iopub.status.busy": "2024-03-03T12:01:02.383327Z", "iopub.status.idle": "2024-03-03T12:01:02.706189Z", "shell.execute_reply": "2024-03-03T12:01:02.705209Z" }, "papermill": { "duration": 0.346517, "end_time": "2024-03-03T12:01:02.708385", "exception": false, "start_time": "2024-03-03T12:01:02.361868", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ml_utility_loss.loss_learning.visualization import plot_pred_density_2\n", "\n", "_ = plot_pred_density_2(y)" ] }, { "cell_type": "code", "execution_count": 35, "id": "e79e4b0f", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T12:01:02.750620Z", "iopub.status.busy": "2024-03-03T12:01:02.750272Z", "iopub.status.idle": "2024-03-03T12:01:03.054973Z", "shell.execute_reply": "2024-03-03T12:01:03.054008Z" }, "papermill": { "duration": 0.328422, "end_time": "2024-03-03T12:01:03.057207", "exception": false, "start_time": "2024-03-03T12:01:02.728785", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ml_utility_loss.loss_learning.visualization import plot_density_3\n", "\n", "_ = plot_density_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" ] }, { "cell_type": "code", "execution_count": 36, "id": "745adde1", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T12:01:03.102557Z", "iopub.status.busy": "2024-03-03T12:01:03.101747Z", "iopub.status.idle": "2024-03-03T12:01:03.274006Z", "shell.execute_reply": "2024-03-03T12:01:03.273036Z" }, "papermill": { "duration": 0.197286, "end_time": "2024-03-03T12:01:03.276114", "exception": false, "start_time": "2024-03-03T12:01:03.078828", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from ml_utility_loss.loss_learning.visualization import plot_box_3\n", "\n", "_ = plot_box_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" ] }, { "cell_type": "code", "execution_count": 37, "id": "eabe1bab", "metadata": { "execution": { "iopub.execute_input": "2024-03-03T12:01:03.322849Z", "iopub.status.busy": "2024-03-03T12:01:03.322537Z", "iopub.status.idle": "2024-03-03T12:01:03.618114Z", "shell.execute_reply": "2024-03-03T12:01:03.617173Z" }, "papermill": { "duration": 0.322102, "end_time": "2024-03-03T12:01:03.620373", "exception": false, "start_time": "2024-03-03T12:01:03.298271", "status": "completed" }, "tags": [] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUEAAAEmCAYAAAD8/yLTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABWEklEQVR4nO2deVhT19b/vyGQhBkUJYAgoCgOOAuF0lpv6Y3WVuntq2i9TrVqW21VWq0DgtO9+DoVp8q1rbX21qJ2wP5qy1uaqm0FURGniiiIBcVEECGIQEiyf3+EHHPIQBISUNif58kTcs46+6wE8mXtvddem0MIIaBQKJROil17O0ChUCjtCRVBCoXSqaEiSKFQOjVUBCkUSqeGiiCFQunUUBGkUCidGiqCFAqlU0NFkEKhdGrs29uBJxWVSoWysjK4urqCw+G0tzsUCkULQghqamrg6+sLOzvjsR4VQQspKyuDv79/e7tBoVCMUFpaih49ehi1oSJoIa6urgDUH7Kbm1s7e0OhULSRyWTw9/dnvqdGIY8BO3fuJD179iR8Pp+Eh4eTnJwco/aHDh0iffv2JXw+nwwcOJAcPXqUdV6lUpFVq1YRoVBIBAIBef7558m1a9eY88eOHSMA9D5Onz5tks/V1dUEAKmurjb/DVMoFJtizvez3SdGDh48iPj4eCQlJeHcuXMYPHgwRCIR7t69q9c+KysLU6ZMwezZs5GXl4fY2FjExsbi8uXLjM3GjRuxfft2pKamIicnB87OzhCJRKivrwcAREVF4c6dO6zHG2+8gaCgIIwYMaJN3jeFQnlMaANRNkp4eDiZP38+81qpVBJfX1+SnJys137SpElk3LhxrGMRERFk3rx5hBB1FCgUCsmmTZuY81VVVYTP55OvvvpKb5tyuZx069aNrF271mS/aSRIoTy+PDGRoFwuR25uLmJiYphjdnZ2iImJQXZ2tt5rsrOzWfYAIBKJGPvi4mJIJBKWjbu7OyIiIgy2+f333+PevXuYNWuWQV8bGhogk8lYDwqF8uTTrhMjFRUVUCqV8Pb2Zh339vbG1atX9V4jkUj02kskEua85pghm+Z8+umnEIlERmeRkpOTsWbNGuNvyAQIIVAoFFAqla1ui0LpzDg4OIDL5ba6nU4/O3zr1i383//9Hw4dOmTUbvny5YiPj2dea2afzEEul+POnTt4+PChRb5SKJRHcDgc9OjRAy4uLq1qp11F0MvLC1wuF1KplHVcKpVCKBTqvUYoFBq11zxLpVL4+PiwbIYMGaLT3meffYauXbti/PjxRn3l8/ng8/ktvidDqFQqFBcXg8vlwtfXFzwejyZZUygWQghBeXk5bt26hZCQkFZFhO0qgjweD8OHD4dYLEZsbCwAtViIxWIsWLBA7zWRkZEQi8VYtGgRcywzMxORkZEAgKCgIAiFQojFYkb0ZDIZcnJy8NZbb7HaIoTgs88+w/Tp0+Hg4GD196eNXC6HSqWCv78/nJycbHafu7J6NChU6OHpSEWW0qHp1q0bbt68icbGxtZ1i209S9MSaWlphM/nk3379pErV66QuXPnEg8PDyKRSAghhEybNo0sW7aMsT958iSxt7cnmzdvJvn5+SQpKYk4ODiQS5cuMTYbNmwgHh4e5MiRI+TixYtkwoQJJCgoiNTV1bHu/csvvxAAJD8/32y/zZ0drqurI1euXNHxwdpcKL1PLpTeJw/qG216HwqlvTH2nTLn+9nuY4JxcXEoLy9HYmIiJBIJhgwZgoyMDGZio6SkhLX2LyoqCgcOHEBCQgJWrFiBkJAQpKenY+DAgYzN0qVLUVtbi7lz56KqqgrR0dHIyMiAQCBg3fvTTz9FVFQUQkND2+bNtiEqun8WhWISHELot8USZDIZ3N3dUV1dbdKyufr6ehQXFyMoKEhHjK3JxVtVAIAgL2e4CmzbxadQ2hNj3ylzvp/tvmKE0jGZOXMmM85rLZ577jnWWLA+AgMDkZKSYtX7UtoHU37f1oCKIKVF2uqPkdJ2rF69Wm+2RGeEiiCFQrEZjY2N7e1Ci1ARbEcIIXgoV1j1Ud+oRH2jskU7U4eCZ86ciRMnTmDbtm3gcDjgcDgoKirC7NmzERQUBEdHR/Tt2xfbtm3Te/2aNWvQrVs3uLm54c0334RcLjfpvrW1tZg+fTpcXFzg4+ODLVu26NjcvXsXL7/8MhwdHREUFIQvv/xSx4bD4WD37t0YO3YsHB0dERwcjK+//po5f/PmTXA4HBw6dAjPPPMMHB0dMXLkSFy7dg1nzpzBiBEj4OLigrFjx6K8vNwk3wFg7969GDBgAPh8Pnx8fFgpXyUlJZgwYQJcXFzg5uaGSZMmsXJfNVHaF198gcDAQLi7u2Py5MmoqalhbFQqFTZu3IjevXuDz+cjICAA//rXv5jzH3zwAfr06QMnJycEBwdj1apVjCDt27cPa9aswYULF5jf6b59+1p8T1evXkV0dDQEAgH69++PX375BRwOB+np6azP8uDBgxg1ahQEAgG+/PJL3Lt3D1OmTIGfnx+cnJwQFhaGr776itW2Kb9vW9Hus8OdmbpGJfon/l+73PvKWhGceC3/+rdt24Zr165h4MCBWLt2LQDA09MTPXr0wOHDh9G1a1dkZWVh7ty58PHxwaRJk5hrxWIxBAIBjh8/jps3b2LWrFno2rUr68tqiCVLluDEiRM4cuQIunfvjhUrVuDcuXOsLtzMmTNRVlaGY8eOwcHBAe+++67e6kOrVq3Chg0bsG3bNnzxxReYPHkyLl26hH79+jE2SUlJSElJQUBAAF5//XW89tprcHV1xbZt2+Dk5IRJkyYhMTERu3fvbtH33bt3Iz4+Hhs2bMDYsWNRXV2NkydPAlCLl0YAT5w4AYVCgfnz5yMuLg7Hjx9n2igqKkJ6ejp++OEH3L9/H5MmTcKGDRuYz2758uX4+OOP8eGHHyI6Ohp37txhLTV1dXXFvn374Ovri0uXLmHOnDlwdXXF0qVLERcXh8uXLyMjIwO//PILAPX6emMolUrExsYiICAAOTk5qKmpwXvvvafXdtmyZdiyZQuGDh0KgUCA+vp6DB8+HB988AHc3Nxw9OhRTJs2Db169UJ4eDgA037fNsPauTudBWvkCdY2NJKeH/zQLo/aBtPzCEeNGkUWLlxo1Gb+/Pnk1VdfZV7PmDGDdOnShdTW1jLHdu/eTVxcXIhSqTTaVk1NDeHxeOTQoUPMsXv37hFHR0fGj4KCAp36j/n5+QQA+fDDD5ljAMibb77Jaj8iIoK89dZbhBBCiouLCQDyySefMOe/+uorAoCIxWLmWHJyMunbt69RvzX4+vqSlStX6j33888/Ey6XS0pKSphjf/75J+u9JCUlEScnJyKTyRibJUuWkIiICEIIITKZjPD5fPLxxx+b5A8hhGzatIkMHz6ceZ2UlEQGDx5s8vU//fQTsbe3J3fu3GGOZWZmEgDku+++I4Q8+ixTUlJabG/cuHHkvffeI4SY9vvWR4fJE+zMODpwcWWtyKptXr5dDQAI6OIEN0fDKTKODq1beL5r1y7s3bsXJSUlqKurg1wu1/mvPXjwYNbqmMjISDx48AClpaXo2bOnwbaLioogl8sRERHBHOvSpQv69u3LvM7Pz4e9vT2GDx/OHAsNDYWHh4dOe5rVRNqvz58/zzo2aNAg5mdNjmpYWBjrmKEal9rcvXsXZWVleP755/Wez8/Ph7+/P2vdef/+/eHh4YH8/HyMHDkSgHqWW7sqso+PD3P//Px8NDQ0GLwHoK7TuX37dhQVFeHBgwdQKBStqoBeUFAAf39/1nJWTRTXnOY1OZVKJf7973/j0KFDuH37NuRyORoaGpi/DVN+37aEimA7wuFwTOqSmoOgSdycePZWb1tDWloa3n//fWzZsgWRkZFwdXXFpk2bkJOTY5P7tQXayyY1yw2bH1OpVC224+joaHV/mt+/pXtkZ2dj6tSpWLNmDUQiEdzd3ZGWltZm42zOzs6s15s2bcK2bduQkpKCsLAwODs7Y9GiRSaPD9saOjFCaREej8cq/XXy5ElERUXh7bffxtChQ9G7d28UFRXpXHfhwgXU1dUxr0+dOgUXF5cWq+/06tULDg4OLFG9f/8+rl27xrwODQ2FQqFAbm4uc6ygoABVVVU67Z06dUrntfZ4oDVxdXVFYGAgxGKx3vP9+vVDaWkpSktLmWNXrlxBVVUV+vfvb9I9QkJC4OjoaPAeWVlZ6NmzJ1auXIkRI0YgJCQEf/31F8um+e+0Jfr27YvS0lLWBM6ZM2dMuvbkyZOYMGEC/vnPf2Lw4MEIDg5m/S5N+X3bEhoJUlokMDAQOTk5uHnzJlxcXBASEoL9+/fj//7v/xAUFIQvvvgCZ86cQVBQEOs6uVyO2bNnIyEhATdv3kRSUhIWLFjQ4haILi4umD17NpYsWYKuXbuie/fuWLlyJeu6vn37YsyYMZg3bx52794Ne3t7LFq0SG+UdPjwYYwYMQLR0dH48ssvcfr0aXz66afW+XD0sHr1arz55pvo3r07xo4di5qaGpw8eRLvvPMOYmJiEBYWhqlTpyIlJQUKhQJvv/02Ro0aZfLWDgKBAB988AGWLl0KHo+Hp59+GuXl5fjzzz8xe/ZshISEoKSkBGlpaRg5ciSOHj2K7777jtVGYGAgiouLcf78efTo0QOurq5GqyS98MIL6NWrF2bMmIGNGzeipqYGCQkJANBioY6QkBB8/fXXyMrKgqenJ7Zu3QqpVMqIvim/b1tCI0FKi7z//vvgcrno378/unXrBpFIhH/84x+Ii4tDREQE7t27h7ffflvnuueffx4hISF49tlnERcXh/Hjx2P16tUm3XPTpk145pln8PLLLyMmJgbR0dGs8T9AXQbN19cXo0aNwj/+8Q/MnTsX3bt312lrzZo1SEtLw6BBg7B//3589dVXJkddljBjxgykpKTgo48+woABA/DSSy/h+vXrANSCceTIEXh6euLZZ59FTEwMgoODcfDgQbPusWrVKrz33ntITExEv379EBcXx4wZjh8/HosXL8aCBQswZMgQZGVlYdWqVazrX331VYwZMwajR49Gt27ddFJWmsPlcpGeno4HDx5g5MiReOONN7By5UoAaHEZaEJCAoYNGwaRSITnnnsOQqFQZzWRKb9vW0HXDlvI4752uGdXZ7gbmRjpLHA4HHz33XdWX8JHUXdzo6OjUVhYiF69erX5/a21dph2hykUikl89913zHBIYWEhFi5ciKeffrpdBNCa0O4wpc0pKSmBi4uLwUdJSUl7u2gUY77//vvv7e2eRXz55ZcG39OAAQMAADU1NZg/fz5CQ0Mxc+ZMjBw5EkeOHGlnz1sPjQQpbY6vr69Onl7z89bCFqM9xnz38/Oz+v3agvHjx7Py9LTRpOtMnz4d06dPb0u32gQqgpQ2x97eHr17925vNyzmSfbdEK6urqzk7M4E7Q53WOh8F4ViClQEOypUAykUk6AiSKFQOjVUBCkUSqem3UVw165dCAwMhEAgQEREBE6fPm3U/vDhwwgNDYVAIEBYWBh+/PFH1nlCCBITE+Hj4wNHR0fExMQw2fraHD16FBEREXB0dISnp2eHS6alvWEKxTTaVQQPHjyI+Ph4JCUl4dy5cxg8eDBEIpHBkkVZWVmYMmUKZs+ejby8PMTGxiI2NhaXL19mbDZu3Ijt27cjNTUVOTk5cHZ2hkgkQn19PWPzzTffYNq0aZg1axYuXLiAkydP4rXXXrP5++2sNN/8SLsaMYXS7rRYcdCGhIeHk/nz5zOvlUol8fX1JcnJyXrtJ02aRMaNG8c6FhERQebNm0cIIUSlUhGhUEg2bdrEnK+qqiJ8Pp989dVXhBBCGhsbiZ+fH6uIpiU87puv369tsOl9zKFnz56sQqd37twh9fX17ecQpUNgraKq7RYJyuVy5ObmIiYmhjlmZ2eHmJgYZGdn670mOzubZQ8AIpGIsS8uLoZEImHZuLu7IyIigrE5d+4cbt++DTs7OwwdOhQ+Pj4YO3YsK5rUR0NDA2QyGetBsQyhUGi0YklbQAiBQqFoVx8ojwftJoIVFRVQKpVMFV8N3t7ekEgkeq+RSCRG7TXPxmxu3LgBQF3uKCEhAT/88AM8PT3x3HPPobKy0qC/ycnJcHd3Zx4t1cQzCUIAea1VH5zGh+A0PmzZ1syVFDU1NZg6dSqcnZ3h4+ODDz/80OKtOPVtzvPtt99i9OjRcHJywuDBg3X+Ef7xxx/MRkj+/v549913UVtby5z/4osvMGLECLi6ukIoFOK1115jDascP34cHA4HP/30E4YPHw4+n48//vjDbN8pHY9Ot2JEU5135cqVePXVVwGoSzJpNg6aN2+e3uuWL1+O+Ph45rVMJmu9EDY+BP5tvSViABDWsomaFWUAz7lluybi4+Nx8uRJfP/99/D29kZiYqJVN8JZuXIlNm/ejJCQEKxcuRJTpkxBYWEh7O3tUVRUhDFjxmD9+vXYu3cvysvLsWDBAixYsACfffYZAPXWjuvWrUPfvn1x9+5dxMfHY+bMmToTZ8uWLcPmzZsRHBwMT09Pq/hOebJpNxH08vICl8tlVaoFAKlUytrHQBuhUGjUXvMslUrh4+PDstF8WTXHtevJ8fl8BAcHG124z+fz270L117U1NTg888/x4EDB5h9LTS1/KzF+++/j3HjxgFQ1/8bMGAACgsLERoaiuTkZEydOpWJOkNCQrB9+3aMGjUKu3fvhkAgwOuvv860FRwcjO3bt2PkyJF48OABXFxcmHNr167FCy+8YDW/KU8+7SaCPB4Pw4cPh1gsZtJTVCoVxGIxa49WbSIjIyEWi1ldsMzMTGYjnaCgIAiFQojFYkb0ZDIZcnJy8NZbbwEA0xUqKChAdHQ0AHUUcfPmTaOb/9gEByd1RGZFLjVttNTD0xGeTjzj9zaRGzduoLGxkbWxjru7u1U3wtHe6Ejzj+ru3bsIDQ3FhQsXcPHiRda+woQQqFQqFBcXo1+/fsjNzcXq1atx4cIF3L9/n4n4S0pKWP/wTK3eTOk8tGt3OD4+HjNmzMCIESMQHh6OlJQU1NbWYtasWQDUVSv8/PyQnJwMAFi4cCFGjRqFLVu2YNy4cUhLS8PZs2exZ88eAOqxpkWLFmH9+vUICQlBUFAQVq1aBV9fX0ZoNZuAJyUlwd/fHz179sSmTZsAABMnTmzbD4DDMatLagrEQb3BNnhOAM+ICD5m6NvoSCNkDx48wLx58/Duu+/qXBcQEIDa2lqIRCKIRCJ8+eWX6NatG0pKSiASiXQ282m+CRCF0q4iGBcXh/LyciQmJkIikWDIkCHIyMhgJjZKSkpY+wxERUXhwIEDSEhIwIoVKxASEoL09HQMHDiQsVm6dClqa2sxd+5cVFVVITo6GhkZGazKs5s2bYK9vT2mTZuGuro6RERE4Ndff+1YY0RWzJYODg6Gg4MDzpw5g4CAAABAdXU1rl27hmeffdZ6NzLAsGHDcOXKFYPVWy5duoR79+5hw4YNzDjt2bNnbe4XpYNg/eydzsHjkCd4p6qOFEpriFKlYo5p8gQrH1g3T/CNN94gQUFB5NdffyWXL18mr776KnF1dSWLFi1q8drmeYLQs2F3Xl4ec/7+/fsEADl27BghhJALFy4QR0dHMn/+fJKXl0euXbtG0tPTmRzTu3fvEh6PR5YsWUKKiorIkSNHSJ8+fVjtHjt2jAAg9+/ft8KnQXkceOLzBCmt525NPWrlClQ/bLT5vbZu3YrIyEi89NJLiImJwdNPP41+/frZdL8UDYMGDcKJEydw7do1PPPMMxg6dCgSExOZiZlu3bph3759OHz4MPr3748NGzZg8+bNNveL0jGgGy1ZyOOw0ZJmU6Ueno7o4sxnHfP3dIKns+3GBGtra+Hn54ctW7Zg9uzZNrsPhWIIutESxSjW/s+Wl5eHq1evIjw8HNXV1Vi7di0AYMKECVa+E4XStlARpOilTq5AxQM5vN0E4NmrR002b96MgoICJr3p999/R35+PsaOHWuwnQcPHrSVyxSKRVARpOjl+l21eMmVKvTq5oKhQ4ciNzdXx66urs7oxkMUyuMOFUGKURoaVUbPOzo6dsiNhyidBzo73MbQeSgKxTpY67tERbCN0KyIePjwYRvdkYotpWOjWQ3E5XJb1Q7tDrcRXC4XHh4eTHknJycnZnmYpRCF+o+gocEO9VzCOibXOtaatlV2dqyq3BTK44BKpUJ5eTmcnJxgb986GaMi2IZoqtwY2j7AXO7erwMANFY5oIpvr3PsPt/yX6+mHS4H4NY6ttJTCsX62NnZISAgoNXBBBXBNoTD4cDHxwfdu3dHY2PrV3m88e1xAMDiF/rgpVBf9rGYR8da07a7owO+fbu/cWMKpR3g8Xis2gKWQkWwHeByua0exwCA2zVKAEAj7JmMec2xBnBbtTJF006dqnXtUCiPO3RihEKhdGqoCHYA9GUK0EwcCsU0qAh2UKgGUiimQUWwo2KlUJAmd1M6OlQEOyhUuigU06Ai2AEgeiSPBnAUimlQEaQYhWoppaPzWIjgrl27EBgYCIFAgIiICJw+fdqo/eHDhxEaGgqBQICwsDCdDbYJIUhMTISPjw8cHR0RExOD69evs2wCAwPB4XBYjw0bNlj9vVEolMebdhfBgwcPIj4+HklJSTh37hwGDx4MkUhkcGlZVlYWpkyZgtmzZyMvLw+xsbGIjY3F5cuXGZuNGzdi+/btSE1NRU5ODpydnSESiXTWwK5duxZ37txhHu+8845N32tbQic0KBTTaHcR3Lp1K+bMmYNZs2ahf//+SE1NhZOTE/bu3avXftu2bRgzZgyWLFmCfv36Yd26dRg2bBh27twJQP3lT0lJQUJCAiZMmIBBgwZh//79KCsrQ3p6OqstV1dXCIVC5tGR9qSlEkihmEarRPDBgweQyWSshznI5XLk5uYiJibmkUN2doiJiUF2drbea7Kzs1n2ACASiRj74uJiSCQSlo27uzsiIiJ02tywYQO6du2KoUOHYtOmTVAoFAZ9bWhoaNV7tSW2TJamASWlo2P22uHi4mIsWLAAx48fZ3UvCSHgcDhQKpUmt1VRUQGlUslstq7B29sbV69e1XuNRCLRay+RSJjzmmOGbADg3XffxbBhw9ClSxdkZWVh+fLluHPnDrZu3ar3vsnJyVizZo3J7629odpFoZiG2SL4z3/+E4QQ7N27F97e3q0uY9NexMfHMz8PGjQIPB4P8+bNQ3JyMvh8vo798uXLWdfIZDL4+/u3ia8UCsV2mC2CFy5cQG5uLvr27dvqm3t5eYHL5UIqlbKOS6VSpvZec4RCoVF7zbNUKoWPjw/LZsiQIQZ9iYiIgEKhwM2bN/W+Nz6fr1ccH1foxAiFYhpmjwmOHDkSpaWlVrm5ZutGsVjMHFOpVBCLxYiMjNR7TWRkJMseADIzMxn7oKAgCIVClo1MJkNOTo7BNgHg/PnzsLOzQ/fu3VvzltoFKncUiuWYHQl+8sknePPNN3H79m0MHDiQ2TtDw6BBg8xqLz4+HjNmzMCIESMQHh6OlJQU1NbWYtasWQCA6dOnw8/PD8nJyQCAhQsXYtSoUdiyZQvGjRuHtLQ0nD17Fnv27AGgLly6aNEirF+/HiEhIQgKCsKqVavg6+uL2NhYAOrJlZycHIwePRqurq7Izs7G4sWL8c9//hOenp7mfiSPJdabGKESS+nYmC2C5eXlKCoqYkQKUAuPJRMjABAXF4fy8nIkJiZCIpFgyJAhyMjIYCY2SkpKWNVjo6KicODAASQkJGDFihUICQlBeno6Bg4cyNgsXboUtbW1mDt3LqqqqhAdHY2MjAymOCifz0daWhpWr16NhoYGBAUFYfHixawxvycdfUvpKBSKLhxi5r/6/v37o1+/fli6dKneiZGePXta1cHHFZlMBnd3d1RXV8PNza1dfAhcdhQAsC52IKY91ZN1bPnYUMwb1avVbbsJ7HFxtaiVnlIobYs530+zI8G//voL33//Pd1w+3HChl1WGk9SOjpmT4z87W9/w4ULF2zhC8WKUPGiUEzD7Ejw5ZdfxuLFi3Hp0iWEhYXpTIyMHz/eas5RLIfOZ1AopmG2CL755psA1MUHmmPJxAjFNtCJEQrFNMwWQZVKZQs/KFaGRoIUimmYNSbY2NgIe3t7VtkqSvtjU72jYkrp4Jglgg4ODggICKBdXgqF0mEwe3Z45cqVWLFiBSorK23hD6UN2PDTVcT9JxuNSjq0QaGYPSa4c+dOFBYWwtfXFz179tQpRHru3DmrOUexHGM58IfPluJerRxF5Q8QKjSeSEp7w5SOjtkiqFl/S3l8MLeoqkKlPknnuCgUC0QwKSnJFn5QrIyxCE7R1A2maTQUigUiqCE3Nxf5+fkAgAEDBmDo0KFWc4rSekyJBGkaDYVigQjevXsXkydPxvHjx+Hh4QEAqKqqwujRo5GWloZu3bpZ20eKlVGqqPpRKBrMnh1+5513UFNTgz///BOVlZWorKzE5cuXIZPJ8O6779rCxw7J/Vo5VFYSI32TIIa6uoQQsyJBWk+Q0tExWwQzMjLw0UcfoV+/fsyx/v37Y9euXfjpp5+s6lxH5VzJfQxdl4k5+8/a7B6GtEs7ClRRgaNQzBdBlUqlUzQBUCdS0yV1pvHZyZsAAPFV/RvMWwNteVOqCDZmXMWJa+VMFNjchkLprFhUSmvhwoUoKytjjt2+fRuLFy/G888/b1XnKK1AK8o7X3ofHx0vwv/+dJUVCZrS1aVCSenomC2CO3fuhEwmQ2BgIHr16oVevXohKCgIMpkMO3bssIWPHY622KRUW7zq5OoIvV6hpJEghdIMs2eH/f39ce7cOfzyyy/MBun9+vVDTEyM1Z3rqFh7q+aWxEzRNEyhUpFmkaB1/aBQnkQsyhPkcDh44YUX8MILL1jbH4qV0BY4zQSIijxKlG6yalunKJTHELO7wwAgFouxYsUKvPHGG3j99ddZD0vYtWsXAgMDIRAIEBERgdOnTxu1P3z4MEJDQyEQCBAWFoYff/yRdZ4QgsTERPj4+MDR0RExMTG4fv263rYaGhowZMgQcDgcnD9/3iL/H0e0U2Q0uqfSSo9Rv25rryiUxw+zRXDNmjX4+9//DrFYjIqKCty/f5/1MJeDBw8iPj4eSUlJOHfuHAYPHgyRSIS7d/XPnGZlZWHKlCmYPXs28vLyEBsbi9jYWFaNw40bN2L79u1ITU1FTk4OnJ2dIRKJUF9fr9Pe0qVL4evra7bfjzvakaCSWStsfneYdpkpHR2zu8OpqanYt28fpk2bZhUHtm7dijlz5jD7GKempuLo0aPYu3cvli1bpmO/bds2jBkzBkuWLAEArFu3DpmZmdi5cydSU1NBCEFKSgoSEhIwYcIEAMD+/fvh7e2N9PR0TJ48mWnrp59+ws8//4xvvvmmTXMcrT0xoreAgtbPrO6wmbPDFEpHx+xIUC6XIyoqyio3l8vlyM3NZU2q2NnZISYmBtnZ2Xqvyc7O1pmEEYlEjH1xcTEkEgnLxt3dHREREaw2pVIp5syZgy+++AJOTk4t+trQ0ACZTMZ6WErzvZptDRMJEgKlVi4nlUAKxQIRfOONN3DgwAGr3LyiogJKpRLe3t6s497e3pBIJHqvkUgkRu01z8ZsCCGYOXMm3nzzTYwYMcIkX5OTk+Hu7s48/P39TbruceBRJEjQqDSzO0ylktLBMbs7XF9fjz179uCXX37BoEGDdFaPbN261WrO2YodO3agpqYGy5cvN/ma5cuXIz4+nnktk8ksFsI2yRPUNyZIYHayNIXS0TFbBC9evIghQ4YAgM6GS+Z287y8vMDlciGVSlnHpVIphEKh3muEQqFRe82zVCqFj48Py0bj96+//ors7Gzw+XxWOyNGjMDUqVPx+eef69yXz+fr2D/OaEdwCq3uME2WplDYmC2Cx44ds9rNeTwehg8fDrFYzFSsVqlUEIvFWLBggd5rIiMjIRaLsWjRIuZYZmYmIiMjAQBBQUEQCoUQi8WM6MlkMuTk5OCtt94CAGzfvh3r169nri8rK4NIJMLBgwcRERFhtffXVugVM+08QdbssNaYIFVBCsXyoqrWIj4+HjNmzMCIESMQHh6OlJQU1NbWMrPF06dPh5+fH5KTkwEACxcuxKhRo7BlyxaMGzcOaWlpOHv2LPbs2QNAHY0uWrQI69evR0hICIKCgrBq1Sr4+voyQhsQEMDywcXFBQDQq1cv9OjRw/Zv2sL+cE19I1wFusUr9MEqoKA1O8waE6SxIIXS/iIYFxeH8vJyJCYmQiKRYMiQIcjIyGAmNkpKSmBn92j+JioqCgcOHEBCQgJWrFiBkJAQpKenY+DAgYzN0qVLUVtbi7lz56KqqgrR0dHIyMiAQCBo8/enD44FKrjl5wLs+LUQu6cOw9gwnxbttcf7VKzZYZonSKFo0+4iCAALFiww2P09fvy4zrGJEydi4sSJBtvjcDhYu3Yt1q5da9L9AwMDH/tJgh2/FgIAEr//0yQR1EZpYEyQ1hOkUCxcNkdpHdrzR7UNila3p7eytPbscNPPKhVoniCF0gyzRfC3336DQqH7xVUoFPjtt9+s4lRnYujaTJu0y1oxoh0Jao0JmqKCVCgpHR2zRXD06NGorKzUOV5dXY3Ro0dbxanOhFxpXjVuU3uw2naGU2SoxFEoZosgIURvPuC9e/fg7OxsFac6Om1TVFV37E89O0xTZCgUbUyeGPnHP/4BQD3pMHPmTFbisFKpxMWLF622prij05qlw6Zeq2/FCABWd5iW0qJQzBBBd3d3AOpI0NXVFY6Ojsw5Ho+Hp556CnPmzLG+hxQWlkRv2iLIjgSpClIoJovgZ599BkCdTvL+++/Tru8ThHYqjPYYpEkSSHWS0sExO08wKSnJFn5QjFBZKzf7Gu0oTzsSlCvomCCFoo3ZEyNSqRTTpk2Dr68v7O3tweVyWQ9Ky5i7YuSjY4Vm30Pfsjmg+Ww0VUEKxexIcObMmSgpKcGqVavg4+PT5gVCOwLmfmT1CqXR8y1FdCoaCVIoBjFbBP/44w/8/vvvTIUWiu2xRKz05QkC7IkROjtMoVjQHfb396eziq3E3EiwtZ+2iiWC5iVL04RqSkfHbBFMSUnBsmXLcPPmTRu4Q9EH+3+OaaLE2nKT0O4whWIIs7vDcXFxePjwIXr16gUnJyed8vr6ltRRWotxtdIXrbGTpR/93KCgBRQoFG3MFsGUlBQbuNHZMK8/zI7YTLtWXwEFgCZLUyjNMVsEZ8yYYQs/OhVmjwk26w4TQvD/Lt4x+RraHaZQDGNRPcGioiIkJCRgypQpuHv3LgD1RuZ//vmnVZ2jqGne3f35ihTvfpXX4lUaDKbImDIxQoWS0sExWwRPnDiBsLAw5OTk4Ntvv8WDBw8AABcuXKCrSUyktZmV50urzLLXjgRpFRkKhY3ZIrhs2TKsX78emZmZ4PF4zPG//e1vOHXqlFWdo6hpLlYtvW5+TDtPUG6mCCpoMiGlg2O2CF66dAmvvPKKzvHu3bujoqLCIid27dqFwMBACAQCRERE4PTp00btDx8+jNDQUAgEAoSFheHHH39knSeEIDExET4+PnB0dERMTAyuX7/Oshk/fjwCAgIgEAjg4+ODadOmoayszCL/bY0lMqQtcIa7wxQKxWwR9PDwwJ07uoPyeXl58PPzM9uBgwcPIj4+HklJSTh37hwGDx4MkUjEjDU2JysrC1OmTMHs2bORl5eH2NhYxMbGsjaC37hxI7Zv347U1FTk5OTA2dkZIpEI9fX1jM3o0aNx6NAhFBQU4JtvvkFRURH+53/+x2z/LaF1EyMmXqOdJ2hwxQiVQQrFbBGcPHkyPvjgA0gkEnA4HKhUKpw8eRLvv/8+pk+fbrYDW7duxZw5czBr1iz0798fqampcHJywt69e/Xab9u2DWPGjMGSJUvQr18/rFu3DsOGDcPOnTsBqKPAlJQUJCQkYMKECRg0aBD279+PsrIypKenM+0sXrwYTz31FHr27ImoqCgsW7YMp06dQmNjo9nvwVzMLaBgyaoNViRoqIAC1UAKxXwR/Pe//43Q0FD4+/vjwYMH6N+/P5599llERUUhISHBrLbkcjlyc3MRExPzyCE7O8TExCA7O1vvNdnZ2Sx7ABCJRIx9cXExJBIJy8bd3R0REREG26ysrMSXX36JqKgoneTvx4LmY4DNDujTMlYVmVbMDlMoHR2zRZDH4+Hjjz9GUVERfvjhB/z3v//F1atX8cUXX5hdSquiogJKpZLZaF2Dt7c3JBKJ3mskEolRe82zKW1+8MEHcHZ2RteuXVFSUoIjR44Y9LWhoQEymYz1aCtaK1XaG8yx1g6bvGkTFUtKx8XifYcDAgLw4osvYtKkSQgJCbGmT23GkiVLkJeXh59//hlcLhfTp083+IVPTk6Gu7s78/D3928TH0srH+KHi+ZP2FhzYoRqIKUjY9KKkfj4eKxbtw7Ozs6Ij483art161aTb+7l5QUulwupVMo6LpVKIRQK9V4jFAqN2muepVIpfHx8WDbNy395eXnBy8sLffr0Qb9+/eDv749Tp04hMjJS577Lly9nvXeZTGaxEJozMfLMxmOs1yZHbwYmRuQWTIxQDaR0ZEwSwby8PGbCIC/P8EoFcwus8ng8DB8+HGKxGLGxsQAAlUoFsViMBQsW6L0mMjISYrEYixYtYo5lZmYywhUUFAShUAixWMyInkwmQ05ODt566y2DvqhUanFoaGjQe57P57N22GsNrS5Da0KeoLZNa8vrq6NjWjyX0jExSQSPHTum92drEB8fjxkzZmDEiBEIDw9HSkoKamtrMWvWLADA9OnT4efnh+TkZADAwoULMWrUKGzZsgXjxo1DWloazp49iz179gBQC/GiRYuwfv16hISEICgoCKtWrYKvry8jtDk5OThz5gyio6Ph6emJoqIirFq1Cr169dIbBT5OWFLI2+CKEROvp5EgpSNjdgEFaxMXF4fy8nIkJiZCIpFgyJAhyMjIYCY2SkpKYGf3aOgyKioKBw4cQEJCAlasWIGQkBCkp6dj4MCBjM3SpUtRW1uLuXPnoqqqCtHR0cjIyIBAIAAAODk54dtvv0VSUhJqa2vh4+ODMWPGICEhwWrRnjFasyWBvuhNX3OmzA7TwT4KxUQR1Gy8bgrffvut2U4sWLDAYPf3+PHjOscmTpyIiRMnGmyPw+Fg7dq1WLt2rd7zYWFh+PXXX83280lFe+xPexkcnRihUEycHdaeFXVzc4NYLMbZs2eZ87m5uRCLxcwG7RTbYoomGdpyk21j6v2oClI6LiZFgpqN1wF1bt2kSZOQmprK5AUqlUq8/fbbcHNzs42XFKPoLaCg9bMhETR5dphqIKUDY3ae4N69e/H++++zEqO5XC7i4+MNLnWjsGmLXUoNLZszZEOhdFbMFkGFQoGrV6/qHL969SqTZkKxLaas4DAlEqRjghSKBbPDs2bNwuzZs1FUVITw8HAA6pSTDRs2MGktFOOYW0DBEkwbE2QfP3XjHj7MvIZ1sQPZdnRMkNKBMVsEN2/eDKFQiC1btjAltXx8fLBkyRK89957VneQwkZ/XrRxkVKaGModPnsLOcWV+OkSe401jQQpHRmzRdDOzg5Lly7F0qVLmSICdELk8YO925x+m+ZjhVUP5QCAukalwbYolI5Gq5KlqfhZRmsmRjgwMTIzsGyOZdLscFWdemlkfXMRpKEgpQNjkQh+/fXXOHToEEpKSiCXy1nnzp07ZxXHOjKtGRE0famb1pigodnhZq81kWCDgkaClM6D2bPD27dvx6xZs+Dt7Y28vDyEh4eja9euuHHjBsaOHWsLHykt0NJGSypTI8GHmkhQZdSOQulImC2CH330Efbs2YMdO3aAx+Nh6dKlyMzMxLvvvovq6mpb+NhhqG1Q4JWPTuKTP4ptfi9Dm6+zbLRiPEKIwe4wDQUpHRmzRbCkpARRUVEAAEdHR9TU1AAApk2bhq+++sq63nUwvjj1F/JKqnSOmzPmxoF+TcoruY+vc2/pvcaUMcEHDQrGTkcEKZQOjNljgkKhEJWVlejZsycCAgJw6tQpDB48GMXFxXQAvQXq5K0XF0Of8CsfZTWzMy9PUNMVBvTNDtPfK6XjYnYk+Le//Q3ff/89AHXi9OLFi/HCCy8gLi5O737ElJaxxf8OYubssLYI0jFBSmfC7Ehwz549zPK4+fPno2vXrsjKysL48eMxb948qzvYkbCGlsgVKojzpS0bamFw7bDWz1V1j2b5dVJkzLobhfJkYZYIKhQK/Pvf/8brr7+OHj16AFDvQzx58mSbONfhMDFVxRgPGhR40KBo+VZaP5sbCTYomkeCVAYpHRezusP29vbYuHEjFIqWv4SU9kWjW4QQGNBAVoSomRkGaCRI6VyYPSb4/PPP48SJE7bwpdNiy0jLkAACzbrDtUa6w1QFKR0Ys8cEx44di2XLluHSpUsYPnw4nJ2dWefHjx9vNecopqFfRNXHDHWFmy5kfmRHgs26wzQWpHRgzBbBt99+G4D+/YU5HA6USppjZghDUmILidHom7Hq0axIUHt2WEGTpSmdB7O7wyqVyuDDUgHctWsXAgMDIRAIEBERgdOnTxu1P3z4MEJDQyEQCBAWFoYff/yRdZ4QgsTERPj4+MDR0RExMTG4fv06c/7mzZuYPXs2goKC4OjoiF69eiEpKUlnHbS1actupeZWCiORoLY/1Vqzw839tJXbtSZO8lAotsRsEbQ2Bw8eRHx8PJKSknDu3DkMHjwYIpEId+/e1WuflZWFKVOmYPbs2cjLy0NsbCxiY2Nx+fJlxmbjxo3Yvn07UlNTkZOTA2dnZ4hEItTX1wN4VAX7P//5D/788098+OGHSE1NxYoVK9rkPTfHNnmCLXeHtbu52pGgblvW80tDfaMSf9tyHOO2/05XqFDaFZO7w3V1dRCLxXjppZcAAMuXL0dDQwNznsvlYt26dczevqaydetWzJkzh6lKnZqaiqNHj2Lv3r1YtmyZjv22bdswZswYLFmyBACwbt06ZGZmYufOnUhNTQUhBCkpKUhISMCECRMAAPv374e3tzfS09MxefJkjBkzBmPGjGHaDA4ORkFBAXbv3o3Nmzeb5b85tOXYmuZOhoonAOxJk/sPDUfBtvC7tPIhpDL138/hs6WYFhlo9XtQKKZgciT4+eef4z//+Q/zeufOncjKykJeXh7y8vLw3//+F7t37zbr5nK5HLm5uYiJiXnkkJ0dYmJikJ2drfea7Oxslj0AiEQixr64uBgSiYRl4+7ujoiICINtAkB1dTW6dOli8HxDQwNkMhnrYS6GIioCArlChdy/KqFQmr9Pi7FIzVhVaXZ3uG0jwdtVdczPe36/YdH7plCsgcki+OWXX2Lu3LmsYwcOHMCxY8dw7NgxbNq0CYcOHTLr5hUVFVAqlfD29mYd9/b2hkQi0XuNRCIxaq95NqfNwsJC7Nixw+iKl+TkZNb+y/7+/sbfnJms/O4SXt2djfVH863SHjMxYkJ3mBBitDtsC+5U1zM/l1bW4afL+n83FIqtMVkECwsLERYWxrwWCASws3t0eXh4OK5cuWJd79qA27dvY8yYMZg4cSLmzJlj0G758uWorq5mHqWlpVbzgRDgcFMFmH1ZN63TZtOz0f1Fmk7VypXMBIqnk4PBtqzJnaZIkG+v/htKPVFEV6ZQ2gWTRbCqqoo1BlheXo7AwEDmtUqlYp03BS8vL3C5XEil7LWwUqkUQqFQ7zVCodCovebZlDbLysowevRoREVFYc+ePUZ95fP5cHNzYz3MpS2/4qZNjKi535QozbO3g6cTz2Bb1qSsKRKc9lRPODpw8WeZDH8UVlj9PhRKS5gsgj169GDNwDbn4sWLzHpiU+HxeBg+fDjEYjFzTKVSQSwWIzIyUu81kZGRLHsAyMzMZOyDgoIgFApZNjKZDDk5Oaw2b9++jeeeew7Dhw/HZ599xopqbYWtAh1jzRrbClrTVdaMB3o6OYDvwNVt3wZ+lzVFgv183DA5XD20kHqiyPo3olBawORv/osvvojExEQmzUSburo6rFmzBuPGjTPbgfj4eHz88cf4/PPPkZ+fj7feegu1tbXMbPH06dOxfPlyxn7hwoXIyMjAli1bcPXqVaxevRpnz57FggULAKgTthctWoT169fj+++/x6VLlzB9+nT4+voiNjYWwCMBDAgIwObNm1FeXg6JRGJwzPBJRCNcCiMqqNE2zXighyMPAoe2yZrSjAn6ejhidnQQuHYcnCy8h0u3aHVyStticorMihUrcOjQIfTt2xcLFixAnz59AAAFBQXYuXMnFAqFRXl2cXFxKC8vR2JiIiQSCYYMGYKMjAxmYqOkpIQVpUVFReHAgQNISEjAihUrEBISgvT0dAwc+GjD8KVLl6K2thZz585FVVUVoqOjkZGRwaTvZGZmorCwEIWFhTrRa3uMS9nylkZXjDSd0pTRcndyAFfPVnjW9o8QwkSCvh4C9PB0wvjBvvgu7zZSfyvCrteGWfeGFIoRTBZBb29vZGVl4a233sKyZcsYseBwOHjhhRfw0Ucf6czImsqCBQuYSK45x48f1zk2ceJETJw40WB7HA4Ha9euxdq1a/WenzlzJmbOnGmJq62ibfMENWOCLdvcZyJBBzTqucDaft9/2MiU6xK6q/8xzRsVjO/ybuOnS3fw171a9OzqbKwJCsVqmLV2OCgoCBkZGaisrERhYSEAoHfv3kbz6yhaGMkTbFWzRnabMzox0nSquilR2tOJB1m9bqpMayNBQgg4WhGmJgr0cuGBb68egwwVumF03244VlCOPb/dwL9eCdPbFoVibSwaAOrSpQvCw8MRHh5OBfAxx3h3WH2OGRN0coBA38RIK+4/Z/9ZTNh1kiXGj7rCjizbeaN6AVCnC5XXmJdpQKFYSruvHe5MGBKTZzces/69TIkEm541ZbTcDYlgK0LBzCtSXLxVjfw7j1bYaCZFfNzZSywjgrpgiL8H5AoV9mXZfltSCgWgIvhYUPHA+tVrmDFBUyZGmrrDhmaHLZVAQ+JZVq2OBH3c2ZEgh8PBm03R4BfZf9EKM5Q2gYpgB8eUZXOa7rCnwUjQsntrX2enNSZ4p0qTHqNbbOPv/b0R3M0ZsnoF0k6XWHZjCsUMqAi2IbZKv9E3sfIoT9CUFBmt7rC9rghaGgtqR6HaueiGxgTVdhzMezYYAPDJ78WQK2hhBYptoSLYhrRHUVVTSmnZKllae1KGA61IkBkT1BVBAIgd6ofurnxIZPU4cv621fyhUPRBRbCjopkYMaq8pKmCTNOYoJMDHLi6fxLGtikxhqzu0ZieXZMGKlUEEpnh7jAA8O25eD06CADwn99uGBVyCqW1UBHsoDxKljbeHWZXkOHBnqu7YsRYmo0xtosfbWmgyRMsr2mAUkXAteOgu6vhAryvRQTAlW+PwrsP8OtV/VXGKRRrQEWwDbFVPGMsWbqlZXOaKJBnbweBgx1rAkODsSIMxtAunKqJBDUzw96ufHDtdO+lwU3ggKlP9QRACytQbAsVwTakPcrltbRsrkpryRyHw4G9HmGyNBLURhMJGpsUac7rTweCx7XD2b/u4+zNylb7QKHog4pgB4UpqtpCd1h7tQgAvdGZNURQ06wmPcbHBBHs7ibAP4b5AaDRIMV2UBHsoGjScYwJmIo8qiDj0VRMVb8IWs8vTXfY1920DbnmPhsMDgf4Jf8urktrrOcIhdIEFcE2xFZVZErvP9Q5lldahZJ7D43nCTbrDgP6RdBYNGkM7ZY0WsxEgiaKYHA3F4j6qyuC/+e3Gxb5QaEYg4pgG2KrMcFvz+nm0hECPLvpmPH0EvKoqrSx7rA1krxP3bgHQCsSNKE7rGHeKHXy9JHzt3Gnuq4FawrFPKgIPoaU1zQY3QLTHPRFcRqdIwBTOstVoBZB/RMjrfdDU0ChrOpRRWlTGRrgiYigLmhUEnz6Oy2sQLEuVAQfQ0b+6xcMXvOzVdrSlyytSYgmhKChUT197Ni0ZpirZ68Vi7vDWnpa36hCaeVDVDxQl8gytTus4c3n1IUVvjpdguo23h6U0rGhItjB0dcd1oigigD1jUoAYJbL6VkwYlF3mBCCMzfvM68P55bimaaSYXx7O3Rx1t3VzhjP9emGUKErauVK/DfnL7P9oVAMQUWwDTFXTKyxXExfJKhZFUKgLYKGI0FL3DheUM7q0mu34evhyKo0bQraZbY+O1nM+E2htJZ2F8Fdu3YhMDAQAoEAEREROH36tFH7w4cPIzQ0FAKBAGFhYfjxxx9Z5wkhSExMhI+PDxwdHRETE4Pr16+zbP71r38hKioKTk5O8PDwsPZbshrWyM8zFgkSQlDf1B3WbLWpb6Ml4+uPdVGqCGbtO2PwvLldYQ3jBvnAz8MRFQ/k+Lpps3oKpbW0qwgePHgQ8fHxSEpKwrlz5zB48GCIRCLcvat/rWhWVhamTJmC2bNnIy8vD7GxsYiNjWXth7xx40Zs374dqampyMnJgbOzM0QiEWurULlcjokTJ+Ktt96y+XtsDeaKj9429ImgnVYkqGiKBO013eHWJ0v/ki81et5Q9ZiWcODa4Y1n1IUVPv79hsVjlRSKNu0qglu3bsWcOXMwa9Ys9O/fH6mpqXBycsLevXv12m/btg1jxozBkiVL0K9fP6xbtw7Dhg3Dzp07Aagjm5SUFCQkJGDChAkYNGgQ9u/fj7KyMqSnpzPtrFmzBosXL0ZYWNtu5mPuV9bSNbva6MsTdGgSPBDd7rC+AgrmdOMJIdjx63WjNoaqx5hC3Eh/eDo54K97D/HT5TsWt0OhaGg3EZTL5cjNzUVMTMwjZ+zsEBMTg+zsbL3XZGdns+wBQCQSMfbFxcWQSCQsG3d3d0RERBhssy0xN7DTlwRtLvqiOE0ajEqrO6wRQX01DW5X1eMfH53E4bOlLd4v84oUl2/LjNqYkx7THCeePaZHBgIA/nPiRrvsE03pWLSbCFZUVECpVOrsVezt7Q2JRKL3GolEYtRe82xOm6bS0NAAmUzGepiLud3Kv3/4m9n3aI6mgIKDVoT3aExQd3ZYX8GFAzklOFdShSVfX2xRdG5U1Lbok5cL3xTXDTIjKhACBztcul2NrKJ7rWqLQmn3iZEnheTkZLi7uzMPf39/s9uwxkSHpffULpbKiCAIswm6JhJU6FFBN8Gj7amLWxA5U+Z8zU2P0Xf95JEBAGhhBUrraTcR9PLyApfLhVTKHkSXSqUQCoV6rxEKhUbtNc/mtGkqy5cvR3V1NfMoLW25a9gca4zxmYtm8kB7JQiTIqMdCTbtLdKoZwxRew/gJV9fNHo/UzJfhgV4tGzUArOjg8C14+D36xW4fLu61e1ROi/tJoI8Hg/Dhw+HWCxmjqlUKojFYkRGRuq9JjIykmUPAJmZmYx9UFAQhEIhy0YmkyEnJ8dgm6bC5/Ph5ubGepiLNWZ7zb5nk6jx7PVFgrrdYX2RoHYXN/ev+zrntdFXlFWb9bEDzc4R1Id/Fye8NMgHAI0GKa3DvmUT2xEfH48ZM2ZgxIgRCA8PR0pKCmprazFr1iwAwPTp0+Hn54fk5GQAwMKFCzFq1Chs2bIF48aNQ1paGs6ePYs9e/YAUCfULlq0COvXr0dISAiCgoKwatUq+Pr6IjY2lrlvSUkJKisrUVJSAqVSifPnzwMAevfuDRcXF5u93/bIbdN0h+3ttEVQEwnqToyE9XC3qT/aYtxa5j3bC0fOl+HHS3dQcu8hAro6Wa1tymMKIUBjHcCz3u+6XUUwLi4O5eXlSExMhEQiwZAhQ5CRkcFMbJSUlMBO68sbFRWFAwcOICEhAStWrEBISAjS09MxcOBAxmbp0qWora3F3LlzUVVVhejoaGRkZEAgeJSWkZiYiM8//5x5PXToUADAsWPH8Nxzz9nkvd6V1bdsZAM0KTLaqS8aQSTkUZ4gvykS7O4qQH8fN1y5Y/7EjynwrSiC/X3dMKpPN5y4Vo6Pf7+BdbEDW76I8mSgUgJVfwHl14CKAvZz8Cgg7gur3apdRRAAFixYgAULFug9d/z4cZ1jEydOxMSJEw22x+FwsHbtWqxdu9agzb59+7Bv3z5zXW0VmmotbY1mxQiPqxsJypUqJm1He9P1ri6WT1ysP5pv9Ly+3exaw7xRwThxrRyHzpZiYUxIq2eeKW2MogG4VwiUFwAV1x493ysEFAYCh3uFVnWh3UWw89D6cTBL0IwJ6psdrpM/Wn+rven6q8N64PfrFTbxh2dlEYwM7orBPdxx4VY1Ps+6iff+3teq7VOsRL1MS+S0Irv7NwFiYMaQywe69ga69QG8+qqfu4UCXXpZ1TUqgm1G+yT1aiZj7PXkCdY1TYrYcdh5hLFD/fDSIB/0XvmTWff65Hfdys9jBgiR8eejHE1rjgkCjworvPXlOezP/gtvjuoFZz79s24XCAEe3G0SuWaRXY2R1T18N8CrD9CtL/vZMxCw4xq+zkrQv5YOjiba044ENYKoOSdw4OrM2NpbELHp6wpvmjgIeaX3IZWp02ysLYIA8PcBQgR5OaO4ohZpZ0oxu2njdoqNUKnU43U6kd01oL7K8HUu3loi1/dRhOcqNC23ykZQEWwz2ueXnHZGnc/IWjFix44EtccDtfHv4ojSSt1y9telNQjxdjXp/vZ2dogd4sfsD2LtMUFAXfRh7rPBWP7tJXz6+w1Mj+xpk/t0OhRyoLKoWVRXAFRcNzxeBw7g2ZMtcprIztGjLb03GSqCnQTtFBkmEmxkV5BpzldznsKyby6hZ1cnfJlTwhw/V3LfZBEEwIoyrTk7rM0rQ/2w5edrKKuux/fny/Dq8B42uU+HpKGmSeSazcRWFgPEQN1GLk89Xte8G9u1N+Bg+drw9oCKYCfBQU+ytHZ3WB89PJ3w3zciAIAlgsZ2sGsOh8Pu6diiOwyo38Pr0YHYmFGA//xWhFeG+sFOXzWIzgohQG2F/vE6me5GXQw8V/bEhCay8+gJcDuGfHSMd/EE0I5DHgAe1RAEHgmRZt0w34AIGkKh1BVBY/t+aGuRtWeHtZka0RMfHSvCNekDHL92F38L9W75oo6GSgVUl+qfia0zstrHubvuxES3voCrT/v/8doYKoKdBHayNPuPWrNkzlRq5QoQQljd3PkHzhm052iNhzrYKBIEAHdHB0yNCMB/fruB1OM3OrYIKuRA5Y1micQF6hy6RkMl2DiAR0AzsWuK8Bw929T9xwkqgp0E9uwwW4i0cwRNYWNGAY4XlOPQvEfrsf8o1J9XqNMdtvGExevRQdh7shinb1Yi96/7GN7zCf9yNzxQR3Xa3dfyAuB+MaBS6L/GzqFZfl2T6HXtbdXlZh0FKoKdBNaKkVZGggBwuriS+blRXxFCLbTL4NtqTFCDt5sArwz1w6Gzt5B6oggfTx9h0/tZjdoK3e5r+TVAZmS9Oc9FT35dX3V+XQcZr2sL6CfVSWAlSzcTIkMTIy3RoFCCb8/Fjl8NL2PigMOaSLHV7LA2c5/thcO5t5B5RYrCuzXo3d30mWybolKpRU27+6qJ7OoqDV/n3K3ZxETTs5tvhx+vawuoCLYR7f2nqm/ZnAZLRVBWp8B16X1sFxvfU0Q7UmyL/L3e3V3wQj9v/HxFij2/3cDG/xls83uyUDaqx+uaR3YVhUCjkaK0HgHs7qvm2alL2/neCaEi2Elw0FNAQYMl3WFAXRTitU9yjNpwOOzZZH272dmCN5/rhZ+vSPFd3m3Ev9AXQgu3+TSKvFadOMyIXVNkV3nDyHidvXrtq/Z4Xbe+QNcQOl7XTlAR7CSwKks322Cdb+bEiAZZXcuVcThoeczQFgwL8ER4YBecvlmJvSeLseLFfpY39rBS/3hddYnhaxycAa8Q3fG6LkEA18FyXyhWh4qgrTn3BVBxDS78nhjGqUEh8YUMtivcagjtccDm22pa2h2uNkEEAaBRT15hW/Dmc8E4va8SB3JKMH90b7g7GhEfQtRJw80TicsLgIdGKuo4dTUwXucH2NGle08CVARtzZUjQGEmugP4tqnUXTlxRxHxRaHKV/1M/FCk8kUZusJWo4fOvEdC1zxNxdLu8P2H8hZtOBwOFO2xuQqA0X27o6+3KwqkNfjvqb8wf3RvQKlQp5fojNddB+QPDDfm7q9/Jta5a9u9IYpNoCJoawbFAV2C8bDsCqpK/4QvpxLdONXoxqnGU3bsqiu1hI8bxIcRxULihyLii5tEiMZW/qqiensBP18DYL2JkWNXy02y07fCxObIH4Jz7zrW9bqCU/eyEfqbBKo/78Ou8gagMhDB2tkDXYJ1E4m7hgD8to/eKW0DFUFbM2giMGgibklr8PcPf4Mz6hDMuYPenNvoZVeG3pwy9OKUIZAjgTOnAWGcmwjDTUBLlxTEDiWkO4qaRLGQ+KKoKYqUwdkkN7pqbXPZPFfPUAGFlrhdpVthpjk2HxN8WKnbfa0oAKpKARCEAwi3h7qco6ZX6+CkHq9rvh62SzAdr+uEUBFsIzRl7GvhiEskGJdIMKClDfZQIIBzVy2OnDvobXcbvZoE0pVTh2COBMGQ4AXkstq9SzzY3eqmbrYEXaDpWqfEDWHtAhce1AWDerjj4i31VpVOFhYhLak0tDzrERyOFUSQEEBWpjsxUVEA1BqJRh27AN364qrSB4dvOqHGJRjJ8/4HXA9/Ol5HYaAi2EaQFipLK2CPG8QXN4iv+gBTwYigO6oYUVSLZBl625VByLmP7pwqdOdWIQpXWO09IAIUEV90CxoI35p83LsRiF6cSpRxhHB3dMB3bz+NA6dLcLq4En8L7W7Re9Lej9joezO16oxSoS63rlPp5DogrzF8nVsP/ZVOnL0AAP4NCny94VdUVzfiuds8vNiFCiDlEY+FCO7atQubNm2CRCLB4MGDsWPHDoSHhxu0P3z4MFatWoWbN28iJCQE//u//4sXX3yROU8IQVJSEj7++GNUVVXh6aefxu7duxESEsLYVFZW4p133sH/+3//D3Z2dnj11Vexbds2m225afmWwxzchSfuqjyRBfZuai54yESLve3KGJHsyZHChVOPwZwbwF83gL++R1cAYj6gBBfYEQyuVx9M69YH0/r1AapUgH0IIDB/L+UWvedwdMcEG+vUwta80kllEaA0MNnC4aq7q80Tib36tDhe58y3x4zIntj+ayFSTxRh7EChVfY+pnQM2l0EDx48iPj4eKSmpiIiIgIpKSkQiUQoKChA9+66EUpWVhamTJmC5ORkvPTSSzhw4ABiY2Nx7tw5ZuvNjRs3Yvv27fj888+ZvYdFIhGuXLnCbL05depU3LlzB5mZmWhsbMSsWbMwd+5cHDhwwCbv0xb7rj+AEy6Q3rhAerO61g5QIIAjRW9OGdZGOcBbXgJUFIBUXAdX/gC4d139KDjKbtDV59FYmVefpqiqj/q4BbjhAVCSg2ce/ITR9tfRm3MbSFkOVJXA4J4r9o5a+XVakV2XYMDe8l3wZkQFYs/vN3DxVjWyb9xDVC8vi9uidCw4hNji62k6ERERGDlyJHbu3AkAUKlU8Pf3xzvvvINly5bp2MfFxaG2thY//PADc+ypp57CkCFDkJqaCkIIfH198d577+H9998HAFRXV8Pb2xv79u3D5MmTkZ+fj/79++PMmTMYMUK9wD4jIwMvvvgibt26BV9f3xb9lslkcHd3R3V1NdzcWo6g/iyrxrjtf5j0mViT4+8/h0CvpskTZmztGvtRfg14IDHcCM8V5+u7qSdmVE0TM8QXfxFvKMBluuu9ObfRm1OGEM5t9La7jW6casNtOnrqL8HubrvxusQjl7E/+y8826cb9r9uuKdBefIx5/vZrpGgXC5Hbm4uli9fzhyzs7NDTEwMsrOz9V6TnZ2N+Ph41jGRSIT09HQAQHFxMSQSCWJiYpjz7u7uiIiIQHZ2NiZPnozs7Gx4eHgwAggAMTExsLOzQ05ODl555RWd+zY0NKCh4dEYmExm2ubkSUcuI6e4EvWNBsqU2xgXgdavmMMB3P3Uj16j2Yb11c26qNcflViX12CIXQ2G4AZr1rqRcFEPHlw5RmaJ3fxwrq47LtR1RyHxw7/mvNqUX+fV5ov/34gOxn9P/YXfrpVD9OFvtPbAE0qYnzs2TbTeevB2FcGKigoolUp4e7OLX3p7e+Pq1at6r5FIJHrtJRIJc15zzJhN8662vb09unTpwtg0Jzk5GWvWrDHxnT3idlUdrkqMDOrbGA9jqyS0EbgDPUaoH9o0Fe/c8+1PqC69wpq1duY0wAF1UBIO/iLeKCJ+KCS+KFT5MdHi5dUTcfPcLaw5dAEx/boDgSOt/yZNJKCrE2KH+uHbc7dRIG2/3wmldRhd+WMB7T4m+KSwfPlyVgQqk8ng7+/f4nWLX+iDmVHqLSBr6hvh38UJrgJ7dHPl40Z5LSpr5XAV2KO2QQkvVx6qHjaipl6B+kYlePZ2IATo6sLDQ7kSDnYcONjbQaEkuHCrCtekNaislSMyuCuu332AIC9n+HoIENDFCZduVePlwb4WbZ3Jwp4HdA/F63P64Oa9hwAIpLIG1HZ3xpcnzoAjf4DgPmHgOPCQU3gPfx8gRKS9HRRKFXp1U09Y/GNYDwzq4YGeXdu/QMC/XwnDpBH+7ZPATbEKHUoEvby8wOVyIZVKWcelUimEQqHea4RCoVF7zbNUKoWPjw/LZsiQIYzN3bt3WW0oFApUVlYavC+fzwefzzf9zTUxwNfd4LmBfobPtURkL+PLtYb3tG75JXuuHXp3V4uapj7f3JefZdkYK2evuba9EThw8VQwXepGeUS7JkzxeDwMHz4cYrGYOaZSqSAWixEZGan3msjISJY9AGRmZjL2QUFBEAqFLBuZTIacnBzGJjIyElVVVcjNfZR4/Ouvv0KlUiEiIsJq749CoTwBkHYmLS2N8Pl8sm/fPnLlyhUyd+5c4uHhQSQSCSGEkGnTppFly5Yx9idPniT29vZk8+bNJD8/nyQlJREHBwdy6dIlxmbDhg3Ew8ODHDlyhFy8eJFMmDCBBAUFkbq6OsZmzJgxZOjQoSQnJ4f88ccfJCQkhEyZMsVkv6urqwkAUl1dbYVPgUKhWBNzvp/tLoKEELJjxw4SEBBAeDweCQ8PJ6dOnWLOjRo1isyYMYNlf+jQIdKnTx/C4/HIgAEDyNGjR1nnVSoVWbVqFfH29iZ8Pp88//zzpKCggGVz7949MmXKFOLi4kLc3NzIrFmzSE1Njck+UxGkUB5fzPl+tnue4JOKuXmCFAql7TDn+0kXUVIolE4NFUEKhdKpoSJIoVA6NTRZ2kI0Q6mmLp+jUChth+Z7acqUBxVBC6mpUS+7MmXVCIVCaR9qamrg7m58UQKdHbYQlUqFsrIyuLq6dtradJqlg6WlpZ1+hpx+Fmoel8+BEIKamhr4+vrCroWqRDQStBA7Ozv06NGjvd14LHBzc+vUX3xt6Geh5nH4HFqKADXQiREKhdKpoSJIoVA6NVQEKRbD5/ORlJRkUXWdjgb9LNQ8iZ8DnRihUCidGhoJUiiUTg0VQQqF0qmhIkihUDo1VAQpFEqnhoogxSi7du1CYGAgBAIBIiIicPr0aaP2hw8fRmhoKAQCAcLCwvDjjz+2kae2xZzP4eOPP8YzzzwDT09PeHp6IiYmpsXP7UnC3L8JDWlpaeBwOIiNjbWtg+Ziu9qulCedtLQ0wuPxyN69e8mff/5J5syZQzw8PIhUKtVrf/LkScLlcsnGjRvJlStXSEJCgs7WB08i5n4Or732Gtm1axfJy8sj+fn5ZObMmcTd3Z3cunWrjT23PuZ+FhqKi4uJn58feeaZZ8iECRPaxlkToSJIMUh4eDiZP38+81qpVBJfX1+SnJys137SpElk3LhxrGMRERFk3rx5NvXT1pj7OTRHoVAQV1dX8vnnn9vKxTbDks9CoVCQqKgo8sknn5AZM2Y8diJIu8MUvcjlcuTm5iImJoY5Zmdnh5iYGGRnZ+u9Jjs7m2UPACKRyKD9k4Aln0NzHj58iMbGRnTpYt1tUNsaSz+LtWvXonv37pg9e3ZbuGk2tIACRS8VFRVQKpXw9mbvJezt7Y2rV6/qvUYikei1l0gkNvPT1ljyOTTngw8+gK+vr84/iCcNSz6LP/74A59++inOnz/fBh5aBhVBCsWGbNiwAWlpaTh+/DgEAkF7u9Om1NTUYNq0afj444/h5eXV3u4YhIogRS9eXl7gcrmQSqWs41KpFEKhUO81QqHQLPsnAUs+Bw2bN2/Ghg0b8Msvv2DQoEG2dLNNMPezKCoqws2bN/Hyyy8zx1QqFQDA3t4eBQUF6NWrl22dNgE6JkjRC4/Hw/DhwyEWi5ljKpUKYrEYkZGReq+JjIxk2QNAZmamQfsnAUs+BwDYuHEj1q1bh4yMDIwYMaItXLU55n4WoaGhuHTpEs6fP888xo8fj9GjR+P8+fOPT1X29p6ZoTy+pKWlET6fT/bt20euXLlC5s6dSzw8PIhEIiGEEDJt2jSybNkyxv7kyZPE3t6ebN68meTn55OkpKQOkyJjzuewYcMGwuPxyNdff03u3LnDPGpqatrrLVgNcz+L5jyOs8NUBClG2bFjBwkICCA8Ho+Eh4eTU6dOMedGjRpFZsyYwbI/dOgQ6dOnD+HxeGTAgAHk6NGjbeyxbTDnc+jZsycBoPNISkpqe8dtgLl/E9o8jiJIS2lRKJRODR0TpFAonRoqghQKpVNDRZBCoXRqqAhSKJRODRVBCoXSqaEiSKFQOjVUBCkUSqeGiiCFQunUUBGkdBhmzpwJDoej8xgzZkx7u0Z5jKFVZCgdijFjxuCzzz5jHePz+XptGxsb4eDgwDoml8vB4/HMvq+l11HaHxoJUjoUfD4fQqGQ9fD09AQAcDgc7N69G+PHj4ezszP+9a9/YfXq1RgyZAg++eQTBAUFMTX/SkpKMGHCBLi4uMDNzQ2TJk1ilZAydB3lyYOKIKVTsXr1arzyyiu4dOkSXn/9dQBAYWEhvvnmG3z77bc4f/48VCoVJkyYgMrKSpw4cQKZmZm4ceMG4uLiWG01v47yZEK7w5QOxQ8//AAXFxfWsRUrVmDFihUAgNdeew2zZs1inZfL5di/fz+6desGQF0D8dKlSyguLmZq3u3fvx8DBgzAmTNnMHLkSL3XUZ5MqAhSOhSjR4/G7t27Wce0NzjSV+C0Z8+eLCHLz8+Hv78/q+hn//794eHhgfz8fEYEm19HeTKhIkjpUDg7O6N3795Gz5tyzNR7UZ586JgghdKMfv36obS0FKWlpcyxK1euoKqqCv37929Hzyi2gEaClA5FQ0ODzhaf9vb2Zu12FhMTg7CwMEydOhUpKSlQKBR4++23MWrUqA6zXwjlETQSpHQoMjIy4OPjw3pER0eb1QaHw8GRI0fg6emJZ599FjExMQgODsbBgwdt5DWlPaHl9SkUSqeGRoIUCqVTQ0WQQqF0aqgIUiiUTg0VQQqF0qmhIkihUDo1VAQpFEqnhooghULp1FARpFAonRoqghQKpVNDRZBCoXRqqAhSKJRODRVBCoXSqfn/Pccbx7YiBd4AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#\"\"\"\n", "from ml_utility_loss.loss_learning.visualization import plot_grad, plot_grad_2, plot_grad_3\n", "import matplotlib.pyplot as plt\n", "\n", "#plot_grad_2(y, model.models)\n", "for m in model.models:\n", " ym = y[m]\n", " fig, ax = plt.subplots()\n", " plot_grad_3(ym[\"error\"], ym[\"grad\"], name=f\"{m}_grad\", fig=fig, ax=ax)\n", "#\"\"\"" ] }, { "cell_type": "code", "execution_count": null, "id": "54c0e9f3", "metadata": { "papermill": { "duration": 0.022768, "end_time": "2024-03-03T12:01:03.666008", "exception": false, "start_time": "2024-03-03T12:01:03.643240", "status": "completed" }, "tags": [] }, "outputs": [], "source": [] } ], "metadata": { "accelerator": "GPU", "celltoolbar": "Tags", "colab": { "authorship_tag": "ABX9TyOOVfelovKP9fLGU7SvvRie", "gpuType": "T4", "mount_file_id": "17POSGAvge8y9DW9WGs2jLkibaRjToayg", "provenance": [] }, "kaggle": { "accelerator": "gpu", "dataSources": [], "dockerImageVersionId": 30648, "isGpuEnabled": true, "isInternetEnabled": true, "language": "python", "sourceType": "notebook" }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.13" }, "papermill": { "default_parameters": {}, "duration": 3563.29435, "end_time": "2024-03-03T12:01:06.412574", "environment_variables": {}, "exception": null, "input_path": "eval/insurance/tab_ddpm_concat/4/mlu-eval.ipynb", "output_path": "eval/insurance/tab_ddpm_concat/4/mlu-eval.ipynb", "parameters": { "allow_same_prediction": true, "dataset": "insurance", "dataset_name": "insurance", "debug": false, "folder": "eval", "gp": false, "gp_multiply": false, "log_wandb": false, "param_index": 3, "path": "eval/insurance/tab_ddpm_concat/4", "path_prefix": "../../../../", "random_seed": 4, "single_model": "tab_ddpm_concat" }, "start_time": "2024-03-03T11:01:43.118224", "version": "2.5.0" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }