diff --git "a/insurance/tab_ddpm_concat/mlu-eval.ipynb" "b/insurance/tab_ddpm_concat/mlu-eval.ipynb" new file mode 100644--- /dev/null +++ "b/insurance/tab_ddpm_concat/mlu-eval.ipynb" @@ -0,0 +1,2560 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "982e76f5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T18:26:50.558870Z", + "iopub.status.busy": "2024-02-29T18:26:50.558154Z", + "iopub.status.idle": "2024-02-29T18:26:50.590106Z", + "shell.execute_reply": "2024-02-29T18:26:50.589458Z" + }, + "papermill": { + "duration": 0.046189, + "end_time": "2024-02-29T18:26:50.591955", + "exception": false, + "start_time": "2024-02-29T18:26:50.545766", + "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-02-29T18:26:50.617349Z", + "iopub.status.busy": "2024-02-29T18:26:50.616718Z", + "iopub.status.idle": "2024-02-29T18:26:50.624173Z", + "shell.execute_reply": "2024-02-29T18:26:50.623371Z" + }, + "papermill": { + "duration": 0.022172, + "end_time": "2024-02-29T18:26:50.626060", + "exception": false, + "start_time": "2024-02-29T18:26:50.603888", + "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-02-29T18:26:50.649180Z", + "iopub.status.busy": "2024-02-29T18:26:50.648911Z", + "iopub.status.idle": "2024-02-29T18:26:50.653522Z", + "shell.execute_reply": "2024-02-29T18:26:50.652094Z" + }, + "papermill": { + "duration": 0.019003, + "end_time": "2024-02-29T18:26:50.655938", + "exception": false, + "start_time": "2024-02-29T18:26:50.636935", + "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-02-29T18:26:50.679562Z", + "iopub.status.busy": "2024-02-29T18:26:50.679302Z", + "iopub.status.idle": "2024-02-29T18:26:50.683027Z", + "shell.execute_reply": "2024-02-29T18:26:50.682249Z" + }, + "executionInfo": { + "elapsed": 678, + "status": "ok", + "timestamp": 1696841022168, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "ns5hFcVL2yvs", + "papermill": { + "duration": 0.01756, + "end_time": "2024-02-29T18:26:50.684861", + "exception": false, + "start_time": "2024-02-29T18:26:50.667301", + "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-02-29T18:26:50.707664Z", + "iopub.status.busy": "2024-02-29T18:26:50.707390Z", + "iopub.status.idle": "2024-02-29T18:26:50.712716Z", + "shell.execute_reply": "2024-02-29T18:26:50.711943Z" + }, + "papermill": { + "duration": 0.018823, + "end_time": "2024-02-29T18:26:50.714583", + "exception": false, + "start_time": "2024-02-29T18:26:50.695760", + "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 = False" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1800468a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T18:26:50.739163Z", + "iopub.status.busy": "2024-02-29T18:26:50.738835Z", + "iopub.status.idle": "2024-02-29T18:26:50.744203Z", + "shell.execute_reply": "2024-02-29T18:26:50.743458Z" + }, + "papermill": { + "duration": 0.019989, + "end_time": "2024-02-29T18:26:50.746255", + "exception": false, + "start_time": "2024-02-29T18:26:50.726266", + "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 = 2\n", + "allow_same_prediction = True\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd7c02d6", + "metadata": { + "papermill": { + "duration": 0.010925, + "end_time": "2024-02-29T18:26:50.768318", + "exception": false, + "start_time": "2024-02-29T18:26:50.757393", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5f45b1d0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T18:26:50.791282Z", + "iopub.status.busy": "2024-02-29T18:26:50.791016Z", + "iopub.status.idle": "2024-02-29T18:26:50.799559Z", + "shell.execute_reply": "2024-02-29T18:26:50.798806Z" + }, + "executionInfo": { + "elapsed": 7, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "UdvXYv3c3LXy", + "papermill": { + "duration": 0.022153, + "end_time": "2024-02-29T18:26:50.801373", + "exception": false, + "start_time": "2024-02-29T18:26:50.779220", + "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-02-29T18:26:50.825158Z", + "iopub.status.busy": "2024-02-29T18:26:50.824897Z", + "iopub.status.idle": "2024-02-29T18:26:52.939311Z", + "shell.execute_reply": "2024-02-29T18:26:52.938380Z" + }, + "papermill": { + "duration": 2.128694, + "end_time": "2024-02-29T18:26:52.941418", + "exception": false, + "start_time": "2024-02-29T18:26:50.812724", + "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-02-29T18:26:52.968131Z", + "iopub.status.busy": "2024-02-29T18:26:52.967214Z", + "iopub.status.idle": "2024-02-29T18:26:52.979057Z", + "shell.execute_reply": "2024-02-29T18:26:52.978209Z" + }, + "papermill": { + "duration": 0.027034, + "end_time": "2024-02-29T18:26:52.981011", + "exception": false, + "start_time": "2024-02-29T18:26:52.953977", + "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-02-29T18:26:53.005698Z", + "iopub.status.busy": "2024-02-29T18:26:53.005020Z", + "iopub.status.idle": "2024-02-29T18:26:53.011733Z", + "shell.execute_reply": "2024-02-29T18:26:53.010953Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "Vrl2QkoV3o_8", + "papermill": { + "duration": 0.021252, + "end_time": "2024-02-29T18:26:53.013739", + "exception": false, + "start_time": "2024-02-29T18:26:52.992487", + "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-02-29T18:26:53.037402Z", + "iopub.status.busy": "2024-02-29T18:26:53.037158Z", + "iopub.status.idle": "2024-02-29T18:26:53.136345Z", + "shell.execute_reply": "2024-02-29T18:26:53.135661Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "TilUuFk9vqMb", + "papermill": { + "duration": 0.113075, + "end_time": "2024-02-29T18:26:53.138309", + "exception": false, + "start_time": "2024-02-29T18:26:53.025234", + "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-02-29T18:26:53.163865Z", + "iopub.status.busy": "2024-02-29T18:26:53.163568Z", + "iopub.status.idle": "2024-02-29T18:26:57.713583Z", + "shell.execute_reply": "2024-02-29T18:26:57.712809Z" + }, + "executionInfo": { + "elapsed": 3113, + "status": "ok", + "timestamp": 1696841025277, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "7Abt8nStvr9Z", + "papermill": { + "duration": 4.565534, + "end_time": "2024-02-29T18:26:57.715908", + "exception": false, + "start_time": "2024-02-29T18:26:53.150374", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-02-29 18:26:55.362648: 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-02-29 18:26:55.362701: 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-02-29 18:26:55.364282: 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-02-29T18:26:57.741084Z", + "iopub.status.busy": "2024-02-29T18:26:57.740440Z", + "iopub.status.idle": "2024-02-29T18:26:57.747224Z", + "shell.execute_reply": "2024-02-29T18:26:57.746357Z" + }, + "papermill": { + "duration": 0.021021, + "end_time": "2024-02-29T18:26:57.749183", + "exception": false, + "start_time": "2024-02-29T18:26:57.728162", + "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-02-29T18:26:57.774557Z", + "iopub.status.busy": "2024-02-29T18:26:57.774285Z", + "iopub.status.idle": "2024-02-29T18:27:05.763239Z", + "shell.execute_reply": "2024-02-29T18:27:05.762279Z" + }, + "executionInfo": { + "elapsed": 20137, + "status": "ok", + "timestamp": 1696841045408, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "tbaguWxAvtPi", + "papermill": { + "duration": 8.004862, + "end_time": "2024-02-29T18:27:05.766044", + "exception": false, + "start_time": "2024-02-29T18:26:57.761182", + "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", + " 'single_model': True,\n", + " 'bias': True,\n", + " 'bias_final': True,\n", + " 'pma_ffn_mode': 'shared',\n", + " 'patience': 10,\n", + " 'inds_init_mode': 'fixnorm',\n", + " 'grad_clip': 0.77,\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", + " 'synth_data': 2,\n", + " 'dataset_size': 2048,\n", + " 'batch_size': 8,\n", + " 'epochs': 100,\n", + " 'n_warmup_steps': 100,\n", + " 'Optim': torch_optimizer.diffgrad.DiffGrad,\n", + " 'loss_balancer_beta': 0.75,\n", + " 'loss_balancer_r': 0.95,\n", + " 'fixed_role_model': 'tab_ddpm_concat',\n", + " 'd_model': 256,\n", + " 'attn_activation': torch.nn.modules.activation.LeakyReLU,\n", + " 'tf_d_inner': 512,\n", + " 'tf_n_layers_enc': 4,\n", + " 'tf_n_head': 64,\n", + " 'tf_activation': torch.nn.modules.activation.ReLU6,\n", + " 'tf_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'ada_d_hid': 1024,\n", + " 'ada_n_layers': 7,\n", + " 'ada_activation': torch.nn.modules.activation.ReLU,\n", + " 'ada_activation_final': torch.nn.modules.activation.Softsign,\n", + " 'head_d_hid': 128,\n", + " 'head_n_layers': 9,\n", + " 'head_n_head': 64,\n", + " 'head_activation': torch.nn.modules.activation.RReLU,\n", + " 'head_activation_final': torch.nn.modules.activation.Softsign,\n", + " 'models': ['tab_ddpm_concat'],\n", + " 'max_seconds': 3600,\n", + " 'tf_lora': False,\n", + " 'tf_num_inds': 32,\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.1, 'multiply': False}}}" + ] + }, + "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-02-29T18:27:06.257693Z", + "iopub.status.busy": "2024-02-29T18:27:06.257389Z", + "iopub.status.idle": "2024-02-29T18:27:06.330588Z", + "shell.execute_reply": "2024-02-29T18:27:06.329733Z" + }, + "papermill": { + "duration": 0.088632, + "end_time": "2024-02-29T18:27:06.332688", + "exception": false, + "start_time": "2024-02-29T18:27:06.244056", + "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-02-29T18:27:06.361058Z", + "iopub.status.busy": "2024-02-29T18:27:06.360443Z", + "iopub.status.idle": "2024-02-29T18:27:06.783264Z", + "shell.execute_reply": "2024-02-29T18:27:06.782352Z" + }, + "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.439025, + "end_time": "2024-02-29T18:27:06.785332", + "exception": false, + "start_time": "2024-02-29T18:27:06.346307", + "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-02-29T18:27:06.814758Z", + "iopub.status.busy": "2024-02-29T18:27:06.813947Z", + "iopub.status.idle": "2024-02-29T18:27:06.818524Z", + "shell.execute_reply": "2024-02-29T18:27:06.817759Z" + }, + "papermill": { + "duration": 0.021262, + "end_time": "2024-02-29T18:27:06.820462", + "exception": false, + "start_time": "2024-02-29T18:27:06.799200", + "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-02-29T18:27:06.848255Z", + "iopub.status.busy": "2024-02-29T18:27:06.847981Z", + "iopub.status.idle": "2024-02-29T18:27:06.854747Z", + "shell.execute_reply": "2024-02-29T18:27:06.853941Z" + }, + "papermill": { + "duration": 0.02231, + "end_time": "2024-02-29T18:27:06.856576", + "exception": false, + "start_time": "2024-02-29T18:27:06.834266", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "9613953" + ] + }, + "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-02-29T18:27:06.882937Z", + "iopub.status.busy": "2024-02-29T18:27:06.882671Z", + "iopub.status.idle": "2024-02-29T18:27:06.968606Z", + "shell.execute_reply": "2024-02-29T18:27:06.967758Z" + }, + "papermill": { + "duration": 0.101194, + "end_time": "2024-02-29T18:27:06.970459", + "exception": false, + "start_time": "2024-02-29T18:27:06.869265", + "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, 1024] --\n", + "│ │ │ └─Linear: 4-1 [2, 1071, 1024] 13,312\n", + "│ │ │ └─ReLU: 4-2 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-2 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-3 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-4 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-3 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-5 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-6 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-4 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-7 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-8 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-5 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-9 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-10 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-6 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-11 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-12 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-7 [2, 1071, 256] --\n", + "│ │ │ └─Linear: 4-13 [2, 1071, 256] 262,400\n", + "│ │ │ └─Softsign: 4-14 [2, 1071, 256] --\n", + "├─Adapter: 1-2 [2, 267, 12] (recursive)\n", + "│ └─Sequential: 2-2 [2, 267, 256] (recursive)\n", + "│ │ └─FeedForward: 3-8 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-15 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-16 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-9 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-17 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-18 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-10 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-19 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-20 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-11 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-21 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-22 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-12 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-23 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-24 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-13 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-25 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-26 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-14 [2, 267, 256] (recursive)\n", + "│ │ │ └─Linear: 4-27 [2, 267, 256] (recursive)\n", + "│ │ │ └─Softsign: 4-28 [2, 267, 256] --\n", + "├─TwinEncoder: 1-3 [2, 4096] --\n", + "│ └─Encoder: 2-3 [2, 16, 256] --\n", + "│ │ └─ModuleList: 3-16 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-29 [2, 1071, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 32, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-1 [2, 32, 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, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-5 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-6 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-7 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-8 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-9 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 64, 1071, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-11 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-12 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-2 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-4 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─ReLU6: 6-5 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-6 [2, 1071, 256] 131,328\n", + "│ │ │ └─EncoderLayer: 4-30 [2, 1071, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 32, 256] --\n", + "│ ��� │ │ │ │ └─Linear: 7-13 [2, 32, 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, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-17 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-18 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-19 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-20 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-21 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 64, 1071, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-23 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-24 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-4 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-10 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─ReLU6: 6-11 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-12 [2, 1071, 256] 131,328\n", + "│ │ │ └─EncoderLayer: 4-31 [2, 1071, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-14 [2, 32, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-25 [2, 32, 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, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-29 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-30 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-31 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-32 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-33 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 64, 1071, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-35 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-36 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-6 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-16 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─ReLU6: 6-17 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-18 [2, 1071, 256] 131,328\n", + "│ │ │ └─EncoderLayer: 4-32 [2, 16, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-7 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-20 [2, 32, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-37 [2, 32, 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, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-41 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-42 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-21 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-43 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-44 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-45 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 64, 1071, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-47 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-48 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-8 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-22 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-23 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-24 [2, 1071, 256] 131,328\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-9 [2, 16, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-25 [2, 16, 256] 4,096\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-26 [2, 16, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-49 [2, 16, 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, 64, 16, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 64, 16, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-53 [2, 16, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-54 [2, 16, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-10 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-27 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-28 [2, 16, 512] --\n", + "│ │ │ │ │ └─Linear: 6-29 [2, 16, 256] (recursive)\n", + "│ └─Encoder: 2-4 [2, 16, 256] (recursive)\n", + "│ │ └─ModuleList: 3-16 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-33 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-11 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-30 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-31 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-55 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-56 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-57 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-59 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-60 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-32 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-61 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-62 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-63 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-65 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-66 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-12 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-33 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─ReLU6: 6-34 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-35 [2, 267, 256] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-34 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-13 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-36 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-37 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-67 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-68 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-69 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-71 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-72 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-38 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-73 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-74 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-75 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-77 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-78 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-14 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-39 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─ReLU6: 6-40 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-41 [2, 267, 256] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-35 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-15 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-42 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-43 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-79 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-80 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-81 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-83 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-84 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-44 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-85 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-86 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-87 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-88 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-15 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-89 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-90 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-16 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-45 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─ReLU6: 6-46 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-47 [2, 267, 256] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-36 [2, 16, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-17 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-48 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-49 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-91 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-92 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-93 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-94 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-16 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-95 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-96 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-50 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-97 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-98 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-99 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-100 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-17 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-101 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-102 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-18 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-51 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-52 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-53 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-19 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-54 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-55 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-103 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-104 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-105 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-106 [2, 64, 16, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-18 [2, 64, 16, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-107 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-108 [2, 16, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-20 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-56 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-57 [2, 16, 512] --\n", + "│ │ │ │ │ └─Linear: 6-58 [2, 16, 256] (recursive)\n", + "├─Head: 1-4 [2] --\n", + "│ └─Sequential: 2-5 [2, 1] --\n", + "│ │ └─FeedForward: 3-17 [2, 128] --\n", + "│ │ │ └─Linear: 4-37 [2, 128] 524,416\n", + "│ │ │ └─RReLU: 4-38 [2, 128] --\n", + "│ │ └─FeedForward: 3-18 [2, 128] --\n", + "│ │ │ └─Linear: 4-39 [2, 128] 16,512\n", + "│ │ │ └─RReLU: 4-40 [2, 128] --\n", + "│ │ └─FeedForward: 3-19 [2, 128] --\n", + "│ │ │ └─Linear: 4-41 [2, 128] 16,512\n", + "│ │ │ └─RReLU: 4-42 [2, 128] --\n", + "│ │ └─FeedForward: 3-20 [2, 128] --\n", + "│ │ │ └─Linear: 4-43 [2, 128] 16,512\n", + "│ │ │ └─RReLU: 4-44 [2, 128] --\n", + "│ │ └─FeedForward: 3-21 [2, 128] --\n", + "│ │ │ └─Linear: 4-45 [2, 128] 16,512\n", + "│ │ │ └─RReLU: 4-46 [2, 128] --\n", + "│ │ └─FeedForward: 3-22 [2, 128] --\n", + "│ │ │ └─Linear: 4-47 [2, 128] 16,512\n", + "│ │ │ └─RReLU: 4-48 [2, 128] --\n", + "│ │ └─FeedForward: 3-23 [2, 128] --\n", + "│ │ │ └─Linear: 4-49 [2, 128] 16,512\n", + "│ │ │ └─RReLU: 4-50 [2, 128] --\n", + "│ │ └─FeedForward: 3-24 [2, 128] --\n", + "│ │ │ └─Linear: 4-51 [2, 128] 16,512\n", + "│ │ │ └─RReLU: 4-52 [2, 128] --\n", + "│ │ └─FeedForward: 3-25 [2, 1] --\n", + "│ │ │ └─Linear: 4-53 [2, 1] 129\n", + "│ │ │ └─Softsign: 4-54 [2, 1] --\n", + "========================================================================================================================\n", + "Total params: 9,613,953\n", + "Trainable params: 9,613,953\n", + "Non-trainable params: 0\n", + "Total mult-adds (M): 38.08\n", + "========================================================================================================================\n", + "Input size (MB): 0.13\n", + "Forward/backward pass size (MB): 307.47\n", + "Params size (MB): 38.46\n", + "Estimated Total Size (MB): 346.05\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-02-29T18:27:07.000684Z", + "iopub.status.busy": "2024-02-29T18:27:07.000395Z", + "iopub.status.idle": "2024-02-29T18:42:55.818307Z", + "shell.execute_reply": "2024-02-29T18:42:55.817254Z" + }, + "papermill": { + "duration": 948.852675, + "end_time": "2024-02-29T18:42:55.837260", + "exception": false, + "start_time": "2024-02-29T18:27:06.984585", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: Tracking run with wandb version 0.16.3\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: W&B syncing is set to \u001b[1m`offline`\u001b[0m in this directory. \n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Run \u001b[1m`wandb online`\u001b[0m or set \u001b[1mWANDB_MODE=online\u001b[0m to enable cloud syncing.\n" + ] + }, + { + "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.0265493107464863, 'avg_role_model_std_loss': 9.705848431753656, 'avg_role_model_mean_pred_loss': 0.0019637997826472465, '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.0265493107464863, 'n_size': 320, 'n_batch': 40, 'duration': 39.08715486526489, 'duration_batch': 0.9771788716316223, 'duration_size': 0.12214735895395279, 'avg_pred_std': 0.04609664692543447}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.012864274116873275, 'avg_role_model_std_loss': 8.93672634124523, 'avg_role_model_mean_pred_loss': 3.463389237516879e-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.012864274116873275, 'n_size': 80, 'n_batch': 10, 'duration': 8.234524965286255, 'duration_batch': 0.8234524965286255, 'duration_size': 0.10293156206607819, 'avg_pred_std': 0.023089123656973243}\n", + "Epoch 1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.013430703204357996, 'avg_role_model_std_loss': 10.238072396071818, 'avg_role_model_mean_pred_loss': 0.0001760885078965657, '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.013430703204357996, 'n_size': 320, 'n_batch': 40, 'duration': 38.923088788986206, 'duration_batch': 0.9730772197246551, 'duration_size': 0.12163465246558189, 'avg_pred_std': 0.027457697270438074}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.01386686596670188, 'avg_role_model_std_loss': 9.424022936335371, 'avg_role_model_mean_pred_loss': 5.71949209714262e-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.01386686596670188, 'n_size': 80, 'n_batch': 10, 'duration': 8.236119270324707, 'duration_batch': 0.8236119270324707, 'duration_size': 0.10295149087905883, 'avg_pred_std': 0.019944945629686118}\n", + "Epoch 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.013098158335196786, 'avg_role_model_std_loss': 6.953670260656827, 'avg_role_model_mean_pred_loss': 7.627181049958409e-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.013098158335196786, 'n_size': 320, 'n_batch': 40, 'duration': 38.896809816360474, 'duration_batch': 0.9724202454090118, 'duration_size': 0.12155253067612648, 'avg_pred_std': 0.03701225146651268}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.011231413613131735, 'avg_role_model_std_loss': 4.642900250397725, 'avg_role_model_mean_pred_loss': 1.232088975626766e-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.011231413613131735, 'n_size': 80, 'n_batch': 10, 'duration': 8.272239923477173, 'duration_batch': 0.8272239923477173, 'duration_size': 0.10340299904346466, 'avg_pred_std': 0.031016640178859235}\n", + "Epoch 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.013012661421089432, 'avg_role_model_std_loss': 6.77741541211999, 'avg_role_model_mean_pred_loss': 0.00014677781123761946, '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.013012661421089432, 'n_size': 320, 'n_batch': 40, 'duration': 39.03108096122742, 'duration_batch': 0.9757770240306854, 'duration_size': 0.12197212800383568, 'avg_pred_std': 0.040795679786242545}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.010680149483960122, 'avg_role_model_std_loss': 5.439762359634369, 'avg_role_model_mean_pred_loss': 8.51207419643174e-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.010680149483960122, 'n_size': 80, 'n_batch': 10, 'duration': 8.236795425415039, 'duration_batch': 0.8236795425415039, 'duration_size': 0.10295994281768799, 'avg_pred_std': 0.02782872337847948}\n", + "Epoch 4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.012592662169481628, 'avg_role_model_std_loss': 6.8064604322151805, 'avg_role_model_mean_pred_loss': 0.00012719917820476213, '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.012592662169481628, 'n_size': 320, 'n_batch': 40, 'duration': 38.966336727142334, 'duration_batch': 0.9741584181785583, 'duration_size': 0.12176980227231979, 'avg_pred_std': 0.03671876427251845}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.012881963208201341, 'avg_role_model_std_loss': 16.157494982505522, 'avg_role_model_mean_pred_loss': 0.00010115250418607502, '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.012881963208201341, 'n_size': 80, 'n_batch': 10, 'duration': 8.331452369689941, 'duration_batch': 0.8331452369689941, 'duration_size': 0.10414315462112426, 'avg_pred_std': 0.012491705431602895}\n", + "Epoch 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.013670370759791694, 'avg_role_model_std_loss': 10.748200260194086, 'avg_role_model_mean_pred_loss': 0.0001568969438597634, '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.013670370759791694, 'n_size': 320, 'n_batch': 40, 'duration': 38.94208788871765, 'duration_batch': 0.9735521972179413, 'duration_size': 0.12169402465224266, 'avg_pred_std': 0.029897483938839287}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.014085652580251917, 'avg_role_model_std_loss': 22.363185199221174, 'avg_role_model_mean_pred_loss': 0.00020219407759825003, '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.014085652580251917, 'n_size': 80, 'n_batch': 10, 'duration': 8.2787184715271, 'duration_batch': 0.82787184715271, 'duration_size': 0.10348398089408875, 'avg_pred_std': 0.009641142934560776}\n", + "Epoch 6\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.014017040852922946, 'avg_role_model_std_loss': 10.649183725507465, 'avg_role_model_mean_pred_loss': 0.00013577813718335108, '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.014017040852922946, 'n_size': 320, 'n_batch': 40, 'duration': 38.94879508018494, 'duration_batch': 0.9737198770046234, 'duration_size': 0.12171498462557792, 'avg_pred_std': 0.028363983915187418}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.01068424858385697, 'avg_role_model_std_loss': 3.8434145080467714, 'avg_role_model_mean_pred_loss': 1.0552424407705985e-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.01068424858385697, 'n_size': 80, 'n_batch': 10, 'duration': 8.305310726165771, 'duration_batch': 0.8305310726165771, 'duration_size': 0.10381638407707214, 'avg_pred_std': 0.03533868733793497}\n", + "Epoch 7\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.011766438081394881, 'avg_role_model_std_loss': 8.660977102358947, 'avg_role_model_mean_pred_loss': 8.090821406305792e-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.011766438081394881, 'n_size': 320, 'n_batch': 40, 'duration': 38.78416681289673, 'duration_batch': 0.9696041703224182, 'duration_size': 0.12120052129030227, 'avg_pred_std': 0.04158601735252887}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.012133054883452132, 'avg_role_model_std_loss': 20.211999930033198, 'avg_role_model_mean_pred_loss': 2.2262640635517526e-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.012133054883452132, 'n_size': 80, 'n_batch': 10, 'duration': 8.369733810424805, 'duration_batch': 0.8369733810424804, 'duration_size': 0.10462167263031005, 'avg_pred_std': 0.010681234044022858}\n", + "Epoch 8\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.012191647826693953, 'avg_role_model_std_loss': 7.005204355998285, 'avg_role_model_mean_pred_loss': 9.821474643096905e-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.012191647826693953, 'n_size': 320, 'n_batch': 40, 'duration': 38.88823890686035, 'duration_batch': 0.9722059726715088, 'duration_size': 0.1215257465839386, 'avg_pred_std': 0.03872000898700208}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.014966235030442476, 'avg_role_model_std_loss': 9.767283525761012, 'avg_role_model_mean_pred_loss': 0.0001517352883070089, '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.014966235030442476, 'n_size': 80, 'n_batch': 10, 'duration': 8.22826075553894, 'duration_batch': 0.8228260755538941, 'duration_size': 0.10285325944423676, 'avg_pred_std': 0.01799462023191154}\n", + "Epoch 9\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.012526353562134319, 'avg_role_model_std_loss': 6.590273188782885, 'avg_role_model_mean_pred_loss': 7.7691583878714e-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.012526353562134319, 'n_size': 320, 'n_batch': 40, 'duration': 38.93899869918823, 'duration_batch': 0.9734749674797059, 'duration_size': 0.12168437093496323, 'avg_pred_std': 0.03674360387958586}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.012331876624375581, 'avg_role_model_std_loss': 18.443907407086634, 'avg_role_model_mean_pred_loss': 6.805989072731223e-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.012331876624375581, 'n_size': 80, 'n_batch': 10, 'duration': 8.421772003173828, 'duration_batch': 0.8421772003173829, 'duration_size': 0.10527215003967286, 'avg_pred_std': 0.01039172657765448}\n", + "Epoch 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.012064280622871593, 'avg_role_model_std_loss': 9.317451603279006, 'avg_role_model_mean_pred_loss': 3.690295125249321e-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.012064280622871593, 'n_size': 320, 'n_batch': 40, 'duration': 39.005112171173096, 'duration_batch': 0.9751278042793274, 'duration_size': 0.12189097553491593, 'avg_pred_std': 0.0359303968725726}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.01261272220290266, 'avg_role_model_std_loss': 10.194672084533522, 'avg_role_model_mean_pred_loss': 5.446935015456234e-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.01261272220290266, 'n_size': 80, 'n_batch': 10, 'duration': 8.333169937133789, 'duration_batch': 0.8333169937133789, 'duration_size': 0.10416462421417236, 'avg_pred_std': 0.01722581619396806}\n", + "Epoch 11\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.012482693148194812, 'avg_role_model_std_loss': 8.178162423045615, 'avg_role_model_mean_pred_loss': 9.780007754767173e-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.012482693148194812, 'n_size': 320, 'n_batch': 40, 'duration': 38.96896147727966, 'duration_batch': 0.9742240369319916, 'duration_size': 0.12177800461649894, 'avg_pred_std': 0.03824995262548327}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.012514100689440966, 'avg_role_model_std_loss': 19.314230701327325, 'avg_role_model_mean_pred_loss': 7.543949816977147e-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.012514100689440966, 'n_size': 80, 'n_batch': 10, 'duration': 8.239241361618042, 'duration_batch': 0.8239241361618042, 'duration_size': 0.10299051702022552, 'avg_pred_std': 0.009454242698848248}\n", + "Epoch 12\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.01332451379566919, 'avg_role_model_std_loss': 10.310542043212262, 'avg_role_model_mean_pred_loss': 0.0003665929893701819, '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.01332451379566919, 'n_size': 320, 'n_batch': 40, 'duration': 39.00809144973755, 'duration_batch': 0.9752022862434387, 'duration_size': 0.12190028578042984, 'avg_pred_std': 0.027350465022027492}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.010987071882118471, 'avg_role_model_std_loss': 4.729085849918556, 'avg_role_model_mean_pred_loss': 8.189743033426566e-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.010987071882118471, 'n_size': 80, 'n_batch': 10, 'duration': 8.261511325836182, 'duration_batch': 0.8261511325836182, 'duration_size': 0.10326889157295227, 'avg_pred_std': 0.03069485481828451}\n", + "Epoch 13\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.013592794616124592, 'avg_role_model_std_loss': 7.457387926033698, 'avg_role_model_mean_pred_loss': 0.000220215535729551, '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.013592794616124592, 'n_size': 320, 'n_batch': 40, 'duration': 38.93746519088745, 'duration_batch': 0.9734366297721863, 'duration_size': 0.12167957872152328, 'avg_pred_std': 0.03546805907972157}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.011548876191955059, 'avg_role_model_std_loss': 6.165951245542237, 'avg_role_model_mean_pred_loss': 1.5450504935188292e-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.011548876191955059, 'n_size': 80, 'n_batch': 10, 'duration': 8.323935985565186, 'duration_batch': 0.8323935985565185, 'duration_size': 0.10404919981956481, 'avg_pred_std': 0.026838560402393342}\n", + "Epoch 14\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.013447031378746033, 'avg_role_model_std_loss': 8.19890535405798, 'avg_role_model_mean_pred_loss': 0.00016373289685844838, '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.013447031378746033, 'n_size': 320, 'n_batch': 40, 'duration': 38.8496150970459, 'duration_batch': 0.9712403774261474, 'duration_size': 0.12140504717826843, 'avg_pred_std': 0.029747568373568355}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.011828925088047981, 'avg_role_model_std_loss': 5.351523938098455, 'avg_role_model_mean_pred_loss': 2.9337766557091526e-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.011828925088047981, 'n_size': 80, 'n_batch': 10, 'duration': 8.288572311401367, 'duration_batch': 0.8288572311401368, 'duration_size': 0.1036071538925171, 'avg_pred_std': 0.0307698548771441}\n", + "Epoch 15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.01384369531297125, 'avg_role_model_std_loss': 8.665561918970889, 'avg_role_model_mean_pred_loss': 0.00016956335028766033, '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.01384369531297125, 'n_size': 320, 'n_batch': 40, 'duration': 38.970547676086426, 'duration_batch': 0.9742636919021607, 'duration_size': 0.12178296148777008, 'avg_pred_std': 0.03315324831055477}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.01150583740673028, 'avg_role_model_std_loss': 6.560287872780464, 'avg_role_model_mean_pred_loss': 1.5260961676233363e-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.01150583740673028, 'n_size': 80, 'n_batch': 10, 'duration': 8.322679042816162, 'duration_batch': 0.8322679042816162, 'duration_size': 0.10403348803520203, 'avg_pred_std': 0.0259027692489326}\n", + "Epoch 16\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.012172109389211982, 'avg_role_model_std_loss': 7.0008499470219245, 'avg_role_model_mean_pred_loss': 7.735751830111326e-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.012172109389211982, 'n_size': 320, 'n_batch': 40, 'duration': 39.07010316848755, 'duration_batch': 0.9767525792121887, 'duration_size': 0.12209407240152359, 'avg_pred_std': 0.03525363316293806}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.012191956081369425, 'avg_role_model_std_loss': 7.897130101547532, 'avg_role_model_mean_pred_loss': 2.3637969795231585e-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.012191956081369425, 'n_size': 80, 'n_batch': 10, 'duration': 8.288463592529297, 'duration_batch': 0.8288463592529297, 'duration_size': 0.10360579490661621, 'avg_pred_std': 0.022672764584422113}\n", + "Epoch 17\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.012383807837613859, 'avg_role_model_std_loss': 4.774037581340053, 'avg_role_model_mean_pred_loss': 0.00011500121783720729, '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.012383807837613859, 'n_size': 320, 'n_batch': 40, 'duration': 38.94200682640076, 'duration_batch': 0.9735501706600189, 'duration_size': 0.12169377133250237, 'avg_pred_std': 0.04339534998871386}\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: - 0.000 MB of 0.000 MB uploaded\r" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.012275835702894256, 'avg_role_model_std_loss': 9.627914267603774, 'avg_role_model_mean_pred_loss': 4.899254280417153e-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.012275835702894256, 'n_size': 80, 'n_batch': 10, 'duration': 8.323761701583862, 'duration_batch': 0.8323761701583863, 'duration_size': 0.10404702126979828, 'avg_pred_std': 0.018597377510741354}\n", + "Stopped False\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: \n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Run history:\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_test ▅▆▂▁▅▇▁▃█▄▄▄▂▂▃▂▃▄\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_train █▂▂▂▁▂▂▁▁▁▁▁▂▂▂▂▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_test ▅▄▇▆▂▁█▁▃▁▃▁▇▆▇▅▅▃\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_train █▁▅▆▄▂▁▆▅▅▄▅▁▄▂▃▄▇\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_test ▅▆▂▁▅▇▁▃█▄▄▄▂▂▃▂▃▄\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_train █▂▂▂▁▂▂▁▁▁▁▁▂▂▂▂▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_test ▂▃▁▁▄█▁▂▆▃▃▃▁▁▂▁▂▂\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_train █▂▁▁▁▁▁▁▁▁▁▁▂▂▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_test ▃▃▁▂▆█▁▇▃▇▃▇▁▂▂▂▃▃\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_train ▇▇▄▃▃██▆▄▃▆▅▇▄▅▆▄▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_test ▁▁▃▁▅▃▄▆▁█▅▁▂▄▃▄▃▄\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_train █▄▄▇▅▅▅▁▃▅▆▅▆▅▃▅█▅\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_test ▁▁▃▁▅▃▄▆▁█▅▁▂▄▃▄▃▄\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_train █▄▄▇▅▅▅▁▃▅▆▅▆▅▃▅█▅\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_test ▁▁▃▁▅▃▄▆▁█▅▁▂▄▃▄▃▄\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_train █▄▄▇▅▅▅▁▃▅▆▅▆▅▃▅█▅\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_test ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_train ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \n", + "\u001b[34m\u001b[1mwandb\u001b[0m: Run summary:\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_test 0.01228\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_loss_train 0.01238\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_test 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_embed_loss_train 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_test 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_cos_loss_train 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_test 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_non_role_model_g_mag_loss_train 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_test 0.0186\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_pred_std_train 0.0434\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_test 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_cos_loss_train 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_test 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_g_mag_loss_train 0.0\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_test 0.01228\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_loss_train 0.01238\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_test 5e-05\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_mean_pred_loss_train 0.00012\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_test 9.62791\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: avg_role_model_std_loss_train 4.77404\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_test 0.83238\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_batch_train 0.97355\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_test 0.10405\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_size_train 0.12169\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_test 8.32376\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: duration_train 38.94201\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_test 10\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_batch_train 40\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_test 80\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: n_size_train 320\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: You can sync this run to the cloud by running:\n", + "\u001b[34m\u001b[1mwandb\u001b[0m: \u001b[1mwandb sync /kaggle/working/eval/insurance/tab_ddpm_concat/4/wandb/offline-run-20240229_182708-etiddam5\u001b[0m\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: Find logs at: \u001b[35m\u001b[1m./wandb/offline-run-20240229_182708-etiddam5/logs\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Eval loss {'role_model': 'tab_ddpm_concat', 'n_size': 399, 'n_batch': 50, 'role_model_metrics': {'avg_loss': 0.01993635216760531, 'avg_g_mag_loss': 0.6526490935406888, 'avg_g_cos_loss': 4.4486220484027385e-08, 'pred_duration': 0.8737220764160156, 'grad_duration': 0.5640714168548584, 'total_duration': 1.437793493270874, 'pred_std': 0.053181204944849014, 'std_loss': 0.7849577069282532, 'mean_pred_loss': 1.8548063962953165e-05, 'pred_rmse': 0.141196146607399, 'pred_mae': 0.0972040668129921, 'pred_mape': 0.7692168354988098, 'grad_rmse': 0.28230687975883484, 'grad_mae': 0.19419056177139282, 'grad_mape': 0.9970712065696716}, '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.01993635216760531, 'avg_g_mag_loss': 0.6526490935406888, 'avg_g_cos_loss': 4.4486220484027385e-08, 'avg_pred_duration': 0.8737220764160156, 'avg_grad_duration': 0.5640714168548584, 'avg_total_duration': 1.437793493270874, 'avg_pred_std': 0.053181204944849014, 'avg_std_loss': 0.7849577069282532, 'avg_mean_pred_loss': 1.8548063962953165e-05}, 'min_metrics': {'avg_loss': 0.01993635216760531, 'avg_g_mag_loss': 0.6526490935406888, 'avg_g_cos_loss': 4.4486220484027385e-08, 'pred_duration': 0.8737220764160156, 'grad_duration': 0.5640714168548584, 'total_duration': 1.437793493270874, 'pred_std': 0.053181204944849014, 'std_loss': 0.7849577069282532, 'mean_pred_loss': 1.8548063962953165e-05, 'pred_rmse': 0.141196146607399, 'pred_mae': 0.0972040668129921, 'pred_mape': 0.7692168354988098, 'grad_rmse': 0.28230687975883484, 'grad_mae': 0.19419056177139282, 'grad_mape': 0.9970712065696716}, 'model_metrics': {'tab_ddpm_concat': {'avg_loss': 0.01993635216760531, 'avg_g_mag_loss': 0.6526490935406888, 'avg_g_cos_loss': 4.4486220484027385e-08, 'pred_duration': 0.8737220764160156, 'grad_duration': 0.5640714168548584, 'total_duration': 1.437793493270874, 'pred_std': 0.053181204944849014, 'std_loss': 0.7849577069282532, 'mean_pred_loss': 1.8548063962953165e-05, 'pred_rmse': 0.141196146607399, 'pred_mae': 0.0972040668129921, 'pred_mape': 0.7692168354988098, 'grad_rmse': 0.28230687975883484, 'grad_mae': 0.19419056177139282, 'grad_mape': 0.9970712065696716}}}\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,\n", + " study_name=study_name,\n", + " **params\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9b514a07", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T18:42:55.875215Z", + "iopub.status.busy": "2024-02-29T18:42:55.874907Z", + "iopub.status.idle": "2024-02-29T18:42:55.879007Z", + "shell.execute_reply": "2024-02-29T18:42:55.878119Z" + }, + "papermill": { + "duration": 0.025079, + "end_time": "2024-02-29T18:42:55.880936", + "exception": false, + "start_time": "2024-02-29T18:42:55.855857", + "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-02-29T18:42:55.915833Z", + "iopub.status.busy": "2024-02-29T18:42:55.915549Z", + "iopub.status.idle": "2024-02-29T18:42:55.991917Z", + "shell.execute_reply": "2024-02-29T18:42:55.990964Z" + }, + "papermill": { + "duration": 0.096139, + "end_time": "2024-02-29T18:42:55.994052", + "exception": false, + "start_time": "2024-02-29T18:42:55.897913", + "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-02-29T18:42:56.032185Z", + "iopub.status.busy": "2024-02-29T18:42:56.031896Z", + "iopub.status.idle": "2024-02-29T18:42:56.328976Z", + "shell.execute_reply": "2024-02-29T18:42:56.328057Z" + }, + "papermill": { + "duration": 0.319257, + "end_time": "2024-02-29T18:42:56.331162", + "exception": false, + "start_time": "2024-02-29T18:42:56.011905", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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MJGRkWzbto1u3bqxbt26et3vRpEFSEhIYNy4cdx3332sX7+elJQU/vnPf950YeHvQ2KVStXgkWCksNURV4OwyR7brcjFixdJS0vjjTfeYOjQoXTt2pW//vrLyObBBx+kpKSEzZs3s2LFCsaNG2co69y5MxUVFaSkpBjOnThxolIdtaVr167s37+foqIiw7k//vgDKysrOnfubDjXp08fZs+eza5du+jRowcrVqwwlAUGBjJz5ky2bNnCww8/zLJly256X7VabdjvezN27dqFv78///znP+nXrx+dOnUyLF40NaSw1REXe8WXTQrbrYmbmxvu7u588sknnDhxgm3bthEdHW1k06JFC6KiopgzZw5Hjx5l7NixhrIuXboQHh7O1KlTSUxMJCUlhalTp2Jvb1+nvY7jxo3Dzs6OiRMncujQIbZv385zzz3H+PHj8fLyIj09ndmzZ5OQkMCZM2fYsmULx48fp2vXrly9epUZM2awY8cOzpw5wx9//MHevXuN5uCqIyAggMLCQuLj48nLy6O4uLha206dOpGRkcHKlSs5efIk77//fr17hQ2FFLY6oh+KSifdWxMrKytWrlxJUlISPXr0YObMmbz33nuV7MaNG8f+/fsZOHAgbdu2NSr76quv8PLyYtCgQTz00EOGFUI7OzuT2+Pg4MAvv/zCpUuXuOOOO3jkkUcYOnQoH3zwgaH82LFjjBo1isDAQKZOncr06dOZNm0a1tbWXLx4kQkTJhAYGMjo0aMZMWIE8+fPv+l9+/fvzzPPPMOYMWNo1aoVCxYsqNZ25MiRzJw5kxkzZtC7d2927drFnDlzTH7WxkAlTHX+acYUFBTg4uJCfn7+TSdEP9l5krc3HuOhPq3595jejdPAJkhJSQnp6em0a9euTl/o5sS5c+fw8/Nj69atDB061NLNuWWp7jNlyvdTrorWEVfDUFT22G5Xtm3bRmFhIUFBQWRlZfHqq68SEBDAoEGDLN202x45FK0jroahqJxju10pLy/n9ddfp3v37jz00EO0atXK4Kz7zTff4OjoWOXRvXv3RmvjiBEjqm3H22+/3WjtaGzqJGxLly4lICAAOzs7QkNDSUxMrNF+zZo1dOnSBTs7O4KCgti4caOhrLy8nFmzZhEUFESLFi3w9fVlwoQJZGZmGtUREBBg2PahP9555x0jmwMHDjBw4EDs7Ozw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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-02-29T18:42:56.370376Z", + "iopub.status.busy": "2024-02-29T18:42:56.370066Z", + "iopub.status.idle": "2024-02-29T18:43:43.371513Z", + "shell.execute_reply": "2024-02-29T18:43:43.370520Z" + }, + "papermill": { + "duration": 47.023831, + "end_time": "2024-02-29T18:43:43.374040", + "exception": false, + "start_time": "2024-02-29T18:42:56.350209", + "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-02-29T18:43:43.414397Z", + "iopub.status.busy": "2024-02-29T18:43:43.413556Z", + "iopub.status.idle": "2024-02-29T18:43:43.433770Z", + "shell.execute_reply": "2024-02-29T18:43:43.432945Z" + }, + "papermill": { + "duration": 0.042663, + "end_time": "2024-02-29T18:43:43.435796", + "exception": false, + "start_time": "2024-02-29T18:43:43.393133", + "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_concat5.952382e-080.6092630.0199360.5591480.1941910.9970710.2823070.0000190.8766730.0972040.7692360.1411960.0531810.7849621.435821
\n", + "
" + ], + "text/plain": [ + " avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration \\\n", + "tab_ddpm_concat 5.952382e-08 0.609263 0.019936 0.559148 \n", + "\n", + " grad_mae grad_mape grad_rmse mean_pred_loss \\\n", + "tab_ddpm_concat 0.194191 0.997071 0.282307 0.000019 \n", + "\n", + " pred_duration pred_mae pred_mape pred_rmse pred_std \\\n", + "tab_ddpm_concat 0.876673 0.097204 0.769236 0.141196 0.053181 \n", + "\n", + " std_loss total_duration \n", + "tab_ddpm_concat 0.784962 1.435821 " + ] + }, + "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-02-29T18:43:43.475408Z", + "iopub.status.busy": "2024-02-29T18:43:43.474824Z", + "iopub.status.idle": "2024-02-29T18:43:43.909232Z", + "shell.execute_reply": "2024-02-29T18:43:43.908268Z" + }, + "papermill": { + "duration": 0.456458, + "end_time": "2024-02-29T18:43:43.911370", + "exception": false, + "start_time": "2024-02-29T18:43:43.454912", + "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-02-29T18:43:43.951744Z", + "iopub.status.busy": "2024-02-29T18:43:43.950961Z", + "iopub.status.idle": "2024-02-29T18:44:32.670044Z", + "shell.execute_reply": "2024-02-29T18:44:32.669005Z" + }, + "papermill": { + "duration": 48.741699, + "end_time": "2024-02-29T18:44:32.672417", + "exception": false, + "start_time": "2024-02-29T18:43:43.930718", + "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-02-29T18:44:32.713356Z", + "iopub.status.busy": "2024-02-29T18:44:32.713056Z", + "iopub.status.idle": "2024-02-29T18:44:32.730203Z", + "shell.execute_reply": "2024-02-29T18:44:32.729517Z" + }, + "papermill": { + "duration": 0.038975, + "end_time": "2024-02-29T18:44:32.732107", + "exception": false, + "start_time": "2024-02-29T18:44:32.693132", + "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-02-29T18:44:32.769055Z", + "iopub.status.busy": "2024-02-29T18:44:32.768530Z", + "iopub.status.idle": "2024-02-29T18:44:32.773631Z", + "shell.execute_reply": "2024-02-29T18:44:32.772799Z" + }, + "papermill": { + "duration": 0.025757, + "end_time": "2024-02-29T18:44:32.775758", + "exception": false, + "start_time": "2024-02-29T18:44:32.750001", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'tab_ddpm_concat': 0.05795487974159697}\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-02-29T18:44:32.813941Z", + "iopub.status.busy": "2024-02-29T18:44:32.813678Z", + "iopub.status.idle": "2024-02-29T18:44:33.119654Z", + "shell.execute_reply": "2024-02-29T18:44:33.118662Z" + }, + "papermill": { + "duration": 0.327687, + "end_time": "2024-02-29T18:44:33.121766", + "exception": false, + "start_time": "2024-02-29T18:44:32.794079", + "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-02-29T18:44:33.160005Z", + "iopub.status.busy": "2024-02-29T18:44:33.159736Z", + "iopub.status.idle": "2024-02-29T18:44:33.460975Z", + "shell.execute_reply": "2024-02-29T18:44:33.460154Z" + }, + "papermill": { + "duration": 0.322423, + "end_time": "2024-02-29T18:44:33.462943", + "exception": false, + "start_time": "2024-02-29T18:44:33.140520", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAASUAAAEmCAYAAAAk84bZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAMElEQVR4nO2deXxTZfb/Pzd70yxd6AotLVD2XZYBkUX4KosKXxxBxZFN0BFnBhlcGEcUHUXHZWDG+TEzzkBFEVwGddSvIoMKyr4Isi+VLtCWbjTd0qzP74+be5u0SZqkSZM25/165ZXm5i4nafLJec5znnM4xhgDQRBEhCAJtwEEQRDOkCgRBBFRkCgRBBFRkCgRBBFRkCgRBBFRkCgRBBFRkCgRBBFRkCgRBBFRyMJtQFuw2+0oLi6GVqsFx3HhNocgiGYwxlBbW4v09HRIJL75QB1alIqLi5GRkRFuMwiCaIWioiJ069bNp307tChptVoA/AvW6XRhtoYgiObU1NQgIyND/K76QocWJWHIptPpSJQIIoLxJ7xCgW6CICIKEiWCICIKEiWCICKKDh1T6qwwxmC1WmGz2cJtCkF4RSqVQiaTBTUlh0QpwjCbzSgpKUFDQ0O4TSEIn1Cr1UhLS4NCoQjK+UiUIgi73Y7Lly9DKpUiPT0dCoWCkkKJiIUxBrPZjPLycly+fBk5OTk+J0h6g0QpgjCbzbDb7cjIyIBarQ63OQTRKjExMZDL5SgoKIDZbIZKpWrzOSnQHYEE49eGINqLYH9eyVMiCB9oMFthNNugkksRq6SvTSihd5cgWqHGaIHRws+EWm32MFvT+aFxAhE2FixYgFmzZgX1nBMnTsTy5cu97pOVlYV169b5fE6TtUmIbNSQLOSQKBFBwRcx6IgwxmB3ao1os0ePKj377LMYOnRou1+XRIkgvNBcg+yMgfq3hhYSpQ6C2Wr3eGse5/C2r8WHff1lwYIF2L17N9avXw+O48BxHPLy8rB48WJkZ2cjJiYGffr0wfr1690ev2bNGiQlJUGn0+Ghhx6C2Wz26br19fW4//77odFokJaWhtdee63FPmVlZbj99tsRExOD7OxsbNmypcU+HMdhw4YNmDZtGmJiYtCjRw98+OGHAHgRKiwoQKo+Bp9s/xAzp06GWq3GyJEjceHCBRw+fBgjRoyARqPBtGnTUF5e7vP7tnHjRgwYMABKpRJpaWl45JFHxOcKCwsxc+ZMaDQa6HQ6zJkzB9euXROfF7yYt99+G1lZWdDr9bj77rtRW1sr7mO32/HHP/4RvXr1glKpRGZmJl544QXx+SeeeAK9e/eGWq1Gjx498PTTT8NisQAAcnNzsWbNGpw4cUL8n+bm5vr82toCBbo7CH/95pLH57K7xGLWsK7i43/syYPFQ/CjW3wM7hrRVBhv497LMJpdl7M8+j+9/bJt/fr1uHDhAgYOHIjnnnsOABAfH49u3brhgw8+QGJiIvbt24elS5ciLS0Nc+bMEY/dtWsXVCoVvv32W+Tn52PhwoVITEx0+fJ44rHHHsPu3bvxySefIDk5Gb/73e9w7NgxlyHHggULUFxcjG+++QZyuRy//vWvUVZW1uJcTz/9NF566SWsX78eb7/9Nu6++26cPHkSPXo1vRevrv0Dnlv7Cgb07oGlSx7AvffeC61Wi/Xr10OtVmPOnDlYvXo1NmzY0KrtGzZswIoVK/DSSy9h2rRpMBgM2Lt3LwBeTARB2r17N6xWK5YtW4a5c+fi22+/Fc+Rl5eHjz/+GJ999hmuX7+OOXPm4KWXXhLfu1WrVuHNN9/En/70J4wbNw4lJSU4d+6ceLxWq0Vubi7S09Nx8uRJLFmyBFqtFo8//jjmzp2LU6dO4csvv8R///tfAIBer2/1dQUF1oExGAwMADMYDOE2JSgYjUZ25swZZjQaWzz3+lfnPd4+OnbFZd+/7Lrgcd/3Dxe67Lvh20st9gmECRMmsN/85jde91m2bBm78847xcfz589nCQkJrL6+vsmeDRuYRqNhNpvN67lqa2uZQqFg77//vritsrKSxcTEiHacP3+eAWCHDh0S9zl79iwDwP70pz+J2wCwhx56yOX8o0ePZr/85S9Zg8nCDv14jgFg697YwMprG5nZamNbt25lANiuXbvEY9auXcv69Onj1W6B9PR09tRTT7l97quvvmJSqZQVFjb9r06fPu3yWp555hmmVqtZTU2NuM9jjz3GRo8ezRhjrKamhimVSvbmm2/6ZA9jjL3yyivshhtuEB8/88wzbMiQIa0e5+1zG8h3lDylDsKySb08PidpthJl6fieHvdtvmpl0Y3ZbTHLK3/961+xceNGFBYWwmg0wmw2twicDhkyxCV7fcyYMairq0NRURG6d+/u8dx5eXkwm80YPXq0uC0hIQF9+vQRH589exYymQw33HCDuK1v376Ii4trcb4xY8a0eHz8+HE4+5tjR92ALholACAlJQUAMGjQIPH5lJQUt15Yc8rKylBcXIzJkye7ff7s2bPIyMhwKfXcv39/xMXF4ezZsxg5ciQAfhbRuaJjWlqaeP2zZ8/CZDJ5vAYAvPfee/jzn/+MvLw81NXVwWq1RkSxRIopdRAUMonHm0wq8XlfuQ/7BoNt27Zh5cqVWLx4Mb766iscP34cCxcu9DleFCmoFTJ00fALTeVyubhdWJPYfJvd3npMLiYmJii2OV+7+fVbu8b+/fsxb948TJ8+HZ999hl++OEHPPXUUxHx/yFRIoKCQqFwKbWyd+9ejB07Fg8//DCGDRuGXr16IS8vr8VxJ06cgNFoFB8fOHAAGo2m1YYQPXv2hFwux8GDB8Vt169fx4ULF8THffv2hdVqxdGjR8Vt58+fR3V1dYvzHThwoMXjfv36AfCvlKsvaLVaZGVlYdeuXW6f79evH4qKilBUVCRuO3PmDKqrq9G/f3+frpGTk4OYmBiP19i3bx+6d++Op556CiNGjEBOTg4KCgpc9mn+P20vaPhGBIWsrCwcPHgQ+fn50Gg0yMnJwebNm7Fjxw5kZ2fj7bffxuHDh5Gd7TpcNJvNWLx4MX7/+98jPz8fzzzzDB555JFW11NpNBosXrwYjz32GBITE5GcnIynnnrK5bg+ffpg6tSpePDBB7FhwwbIZDIsX77crRfxwQcfYMSIERg3bhy2bNmCQ4cO4V//+pfLPkazFZV1JsTIpW14p3ieffZZPPTQQ0hOTsa0adNQW1uLvXv34le/+hWmTJmCQYMGYd68eVi3bh2sVisefvhhTJgwASNGjPDp/CqVCk888QQef/xxKBQK3HjjjSgvL8fp06exePFi5OTkoLCwENu2bcPIkSPx+eef46OPPnI5R1ZWFi5fvozjx4+jW7du0Gq1UCqVbX7trUGeEhEUVq5cCalUiv79+yMpKQm33norZs+ejblz52L06NGorKzEww8/3OK4yZMnIycnB+PHj8fcuXNxxx134Nlnn/Xpmq+88gpuuukm3H777ZgyZQrGjRvnEj8CgE2bNiE9PR0TJkzA7NmzsXTpUiQnJ7c415o1a7Bt2zYMHjwYmzdvxtatW9G/f3/UNlpQY+SHNHbGYLUz2IKQpzR//nysW7cO/+///T8MGDAAt912Gy5evAiA98w++eQTxMfHY/z48ZgyZQp69OiB9957z69rPP300/jtb3+L1atXo1+/fpg7d64Yc7rjjjvw6KOP4pFHHsHQoUOxb98+PP300y7H33nnnZg6dSomTZqEpKQkbN26tc2v2xc4xjpuJlhNTQ30ej0MBkNEBOjaSmNjIy5fvozs7OyglIAgfIPjOHz00Udul7xU1ZtgsTHoY+Sw2hnqTVbEyKXQxchbnihK8fa5DeQ7Sp4SQXhByOiWcIAQWerAv+MdgrCKks1mw9NPPy1m/fbs2RPPP/88/dMJFBYWQqPReLwVFha2ix3CZ5HjODH1wpdPpzfbv/vuu9AZ3AkIa6D75ZdfxoYNG/DWW29hwIABOHLkCBYuXAi9Xo9f//rX4TSNCDPp6ek4fvy41+eDhbcfQcFT4rimWThf1uR6s71r164enyPCLEr79u3DzJkzMWPGDAB8tH/r1q04dOhQOM0iIgCZTIZevTwnjLYHzmIlAQfO4SP54smH2/aOTFiHb2PHjsWuXbvE3JITJ07g+++/x7Rp08JpFkEAcPWIBE9JwgESauYQUsLqKT355JOoqalB3759IZVKYbPZ8MILL2DevHlu9zeZTDCZTOLjmpqa9jKViEKa4km8IClkHJK0NCsaasLqKb3//vvYsmUL3n33XRw7dgxvvfUWXn31Vbz11ltu91+7di30er14ay3rlyDagkwqQbJWiSRN6BMGiSbCmqeUkZGBJ598EsuWLRO3/eEPf8A777zjUmJBwJ2nlJGRQXlKBBFGgp2nFNbhW0NDQ4vlBFKp1OOiRqVS2S5p7gThDsYYrjdYwBhDfKyCYkshIqyidPvtt+OFF15AZmYmBgwYgB9++AGvv/46Fi1aFE6zCAIAYLba0GC2QS6ViG2VhMqdjKEpm5IIKmGNKf3lL3/Bz3/+czz88MPo168fVq5ciQcffBDPP/98OM0iAiDSGgcEwx6rncHkVEKY4zjK6m4HwuopabVarFu3zq92N0TnxWw2Q6FQhNsMEeaUOCnAcfx2kqTQQWvfIh3GAKu5/W9+eAKBNg4Q+r698MILSE9PF6tG7tu3D0OHDoVKpcKIESPw8ccfg+M4lyzpU6dOYdq0adBoNEhJScEvfvELVFRUeLQnPz/f/7fecc85jdOEv8lRCh1UTynSsVmA71p26Qg5N/0WkPnmtbS1cYBOp8POnTsB8LM1t99+O6ZPn453330XBQUFLYZh1dXVuPnmm/HAAw/gT3/6E4xGI5544gnMmTMHX3/9tVt7kpKS/H4LnPOUBDgOAAMY+Uohg0SJaDN6vR4KhQJqtRqpqani9jVr1oh/Z2dnY//+/Xj//fddRCk2Nhb//Oc/xWHb3/72N3AchzfffBMqlQr9+/fH1atXsWTJEvGYN954A8OGDcOLL74obtu4cSMyMjJw4cIF9O7d2609/iIO35w3ikGlgE9LtAKJUqQjlfNeSziu20Z8aRwwaNAglzjS+fPnMXjwYJd8l1GjRrkcc+LECXzzzTfQaDQtrpmXl4fevf1rEeUJcfjm5CpJOA4cR4oUSkiUIh2O83kYFUkIjQNee+01jBkzBlqtFq+88opLTW2A95T8pa6uDrfffjtefvnlFs+lpaUFbHNz3A3f4tUd73/R0SBRIoKCt8YBAu4aBzSnT58+eOedd2AymcRE2cOHD7vsM3z4cPz73/9GVlYWZDL3H+FgFL3XU3XJsECzb0RQcG4cUFFRgZycHBw5cgQ7duzAhQsX8PTTT7cQF3fce++9sNvtWLp0Kc6ePYsdO3bg1VdfBdA0jFq2bBmqqqpwzz334PDhw8jLy8OOHTuwcOFCUYia2+NL66PmCDN3we5mQniHRIkICoE2DmiOTqfDp59+iuPHj2Po0KF46qmnsHr1agAQ40zp6enYu3cvbDYbbrnlFgwaNAjLly9HXFycuGypuT3BqlRZb7Kiqt4Mo9kalPMRLaHGAREELch1z5YtW7Bw4UIYDIagNXL0hRqjBQxArEIqNvysabTAaLYhViGFRkXDO6CTLcglCHds3rwZPXr0QNeuXXHixAkxB6k9BQkATFY77IxBrWjq80YZAaGHRImIOEpLS7F69WqUlpYiLS0Nd911F1544YV2t0NIkHSOKFFGd+ghUSIijscffxyPP/54WG1gjHlc+waQpxRKKNBNEK3gsvZNECVylUIGiVIEQh/48MOaNQ0Q/25/UyKeYH9eSZQiCLmcn81paGgIsyWE84Jb5zwlyllqifB5FT6/bYViShGEVCpFXFwcysrKAABqtZq+BGHCarPDYraA44DGRtfn9AoAsKOx+RNRBmMMDQ0NKCsrQ1xcHKRSaesH+QCJUoQhrGoXhIkIH8KwpIZ+GLwSFxfXpmoMzSFRijA4jkNaWhqSk5NhsVjCbQ5BeEUulwfNQxIgUYpQpFJp0P/ZRNsxNFjw7YUyyKUSTB8UvIoERBMkSgThhqvVRpy6akCSVonhmfHidovdjp/K6xGjoB+MUEGzbwThhuv1ZpwprkFRletMqNyx4Ndq87/qAOEbJEoE4QahrZJc6voVkUn5oLfVziifLESQKBGEGyw2XnBkEteZN6mkae2bzU6iFApIlAjCDaKnJHP9ijh7TlYSpZBAokQQbjA7REnRbPgm4ZqWnZAohQYSJYJwg9UxfGseU+I4DnKpBFIJB5uNRCkUUEoAQbhBGL4JgW1nfjmhJyQSyvIOFSRKBOGG/+mfggm9k9yKEglSaCFRIgg3yKWSFkM3on0gUSIIP/nuYjmuN1jws+wEJOuowUOwoZ8CgnDDvksV+OZ8GQwNLRdFX7luRF5ZHWpN1GYpFJAoEYQbzpTU4HhhNYyWll12hYRKSp4MDSRKBOEGi5gS0DKoLQS/LbT+LSSQKBGEG6weMroBQOpYlEueUmggUSKIZtjtTMzWFqoCOCOXNC3KJYIPiRIRtTRabPj8xxIcLbjust3sNCxzN3wTFuVaKaM7JJAoEVHL8aJqXLhWiz0XylHvNJMmxIokHCcKkDNN5UsophQKwi5KV69exX333YfExETExMRg0KBBOHLkSLjNIqKAslqT+HdpTVNnEnHdm4xz201mfE4SfnVzL4zpkRh6I6OQsCZPXr9+HTfeeCMmTZqEL774AklJSbh48SLi4+NbP5gg2kiPLrHIK6sDAFTWmdEzid+uj5FjyfgeHhfcyjxlelfmAVU/ASkDAR3V7w6UsIrSyy+/jIyMDGzatEnclp2dHUaLiGhiYFc9ahotOPhTFWobm5IkJRIOGqWfX43qQuDkB3z1t5ITwMgHgJi44BocJYR1+Paf//wHI0aMwF133YXk5GQMGzYMb775psf9TSYTampqXG4E0RZ0Kr6ra22j79nZBZX1+PJUCY4VOgXIC/Y19fq2WYCiQ8E0M6oIqyj99NNP2LBhA3JycrBjxw788pe/xK9//Wu89dZbbvdfu3Yt9Hq9eMvIyGhni4nOgsVmR3WDGSk6FaYNSsXYnk3xoWs1jfj2fBlOXTW4Pba6wYKzJbW4et3Ib2g0AFWX+b9738Lfl58FKBAeEGEVJbvdjuHDh+PFF1/EsGHDsHTpUixZsgR/+9vf3O6/atUqGAwG8VZUVNTOFhOdhWs1jdi0Nx+f/1iMvqk6l4W1FXUm/FBYjUuOeFNzWsy+CYKk7wqkDQVkSsDcANRcDeVL6LSEVZTS0tLQv39/l239+vVDYWGh2/2VSiV0Op3LjSACwWjm17SpFS1jR2LTADc5SgAgE9ssOYZr1QX8fXwWIJHy9wBguBI0e6OJsIrSjTfeiPPnz7tsu3DhArp37x4mi4hoocEhSiqFFHnldTh5xQCTld/mqb2SgNR5QS5jfJAbAOIy+Xt9N/6eRCkgwjr79uijj2Ls2LF48cUXMWfOHBw6dAj/+Mc/8I9//COcZhFRgLD6Xy2XYueZazCabUiLU0GpkcJidd80QEDI8rbYGR9PMtUBnATQOcRIEKWaq7xoucl1IjwTVk9p5MiR+Oijj7B161YMHDgQzz//PNatW4d58+aF0ywiCjA5hEcll0LtaMEtDOnMvnpKNjtQV8ZvjO0CSB2/8bFJvBBZjIC5PlQvodMS9sqTt912G2677bZwm0FEGWbBG5JJECPnRUkY0lm9lC3htztiSnYG1F3jN2pSmnaQyoGYeKChCqgvA5SaULyETkvYRYkgwoGLKAmeksU1puQpc7uLRomHJvTkA+FnjvEbnUUJ4L2lhiqgvgJI6BGCV9B5IVEiopLuiWqo5BJ00ShQVc+vgWsw8wmUE/skY3SPRNGDao5UwolChvpy/l6T5LpTbBJQfr5peEf4DIkSEZUM7KrHwK56AEBRFZ8EKcSUYhTSJtHxhs3CB7oBXoScER43VAbF3miCRImIepoP31rDYrNjz4VySBrKMcFuh0SuAuTqZid1LCo3Xm95AsIrJEpEVFLbaIFcKoFSJkH3BDWmD0pDvJpfB3fwp0rYGMOgrnpoHWvjmvPjFQMSGq7ArmGQqBNaTvsLi3EtRsBq4rO8CZ8gUSKikrcPFMBksWP+2CwkxCoQH6sQnzteVI0Gsw05yVpo3bR1E7qZxFgM/BpctZu6SjIloFDzy02M1wFtaoheSecj7EXeCKK9YYzBYuWn/RVuGgM4z8y5g+M4yCQcVNZq2BgDYhLcX0gVx98bq9tqclQRkCj99NNPwbaDINoNq53B7igzopBKYLczXCqrxckrBlhsdrEhgNKDKAF8ukCTp+RBlCiuFBABiVKvXr0wadIkvPPOO2hsbGz9AIKIIARPiOOaEiQ/PVGC/569BoOxqdibp2UmAByekgF2uxdPSYgrNVYHw+yoISBROnbsGAYPHowVK1YgNTUVDz74IA4doqJWRMfAeXjGcRwkEg4qR05StaNNt0ImgcRN0wABOSyQ2U28x+WpwiR5SgERkCgNHToU69evR3FxMTZu3IiSkhKMGzcOAwcOxOuvv47y8vJg20kQQUNY2+bsCQnr3wxGMwDvQzcAUDN+TZtNqvQ8s6bi86DEXCbCJ9oU6JbJZJg9ezY++OADvPzyy7h06RJWrlyJjIwM3H///SgpKQmWnQQRNARPyXnBbUwzT6k1UZrRW4MbusdDF+elo4nSUe/LVNtUKpdolTaJ0pEjR/Dwww8jLS0Nr7/+OlauXIm8vDzs3LkTxcXFmDlzZrDsJIigoVZIMairHjnJTQtlhQTKOLUc94/pjmmDvHcjiWX1UEglkAjekDuUWj5wZbcBloag2B4NBJSn9Prrr2PTpk04f/48pk+fjs2bN2P69OmQOCryZWdnIzc3F1lZWcG0lSCCQqJGiSn9XRfQCsM3s5UhUeNDomOjo2mFUut5H4kUUMTy9ZYaa/i/iVYJSJQ2bNiARYsWYcGCBUhLc/+LkpycjH/9619tMo4g2gth+Ga0+NbVpLD0GmwV9YhNUiDZ245KLS9KploA1AvOFwISpZ07dyIzM1P0jAQYYygqKkJmZiYUCgXmz58fFCMJIphYbHbY7AxyqUQs2JaTokUXrRIVdSbsy6tAdpdYpOljPJ6jqrICxppGxFlVrYsSSgATtQPzlYBiSj179kRFRUWL7VVVVdRMkoh4Tl41YMO3efjqdKm4LUmrRO8ULa7X880pSw3e8++UNr7TiUXWSgE3pSPmRKLkMwGJEvMwk1BXVweVys1iIYKIIKxit5KWH/96Ez98i/XWIZcxKKx8SkCj1EtMCWiKOZlq/Tc0SvFr+LZixQoA/Nqf1atXQ61uKtdgs9lw8OBBDB06NKgGEkSwsYqVJZuSIxljyK9swNVqvraSPsZ9dQAAgLkeUtgAcDBL1J73A5pEqZE8JV/xS5R++OEHAPw/8OTJk1AomlZWKxQKDBkyBCtXrgyuhQQRZCyOtW1yp5gox3H49ESx+NirKJlqIeE4mKUxYGilU4nKKVeJ8Am/ROmbb74BACxcuBDr16+nZpBEh8SdpwQAaXoVrlw3IkYhFZeduMVUAwkHmKUacLZWkiKdh292OyChwhytEdA7tGnTJhIkosNi8dCtZFxOF3SNj8GUfl7n04DGGkg4DiaZRqwo4BGFI4GS2QELtVvyBZ89pdmzZyM3Nxc6nQ6zZ8/2uu/27dvbbBhBhAqr3eEpNfNa0vQxmDMio/UTmAxI1ikxsXdPyHoned9XIuFL5Zrr+Zu3ZEsCgB+ipNfrwTlKfur1XlLrCSLCSY+LgZTjEK9WtL6zOxprIJNIoNElAN6GeQKKWF6QTHUAaVKr+CxKmzZtcvs3QXQ0hmfGt+0EQtBa5WMIQ6nlWy2Z69p23SghoJiS0WhEQ0PTAsOCggKsW7cOX331VdAMI4iIxVQDo8WGQ8VWHCv0oVaSsOaNWnj7RECiNHPmTGzevBkAUF1djVGjRuG1117DzJkzsWHDhqAaSBDBxmy18xUjA8FuA8z1aLTYcLDEirMlPuQfKRxZ3+Qp+UTAlSdvuukmAMCHH36I1NRUFBQUYPPmzfjzn/8cVAMJIti8c6AA63ddRLEjUdIvTDUAY5BIZbBKVLD5Im4kSn4RkCg1NDRAq+Ujdl999RVmz54NiUSCn/3sZygoKAiqgQQRbMTZN2kriY/uEDKzVTqA48T0Aq8oHaJkIlHyhYAbB3z88ccoKirCjh07cMsttwAAysrKKH+JiHjEPKVAEhkdQW7OEeS2OQTOKxRT8ouARGn16tVYuXIlsrKyMHr0aIwZMwYA7zUNGzYsqAYSRLBpWpAbgKfkWO0vVJz0yVNyHr5RWdxWCaie0s9//nOMGzcOJSUlGDJkiLh98uTJ+N///d+gGUcQwcbm1PNN7qWFkkccwzcuRvCU/BAluw2wNgJyz3WaiDa07U5NTUVqqmsr4lGjRrXZIIIIJVan4ZbMSwsljzg8JamjrZLNzmC3M6/tmCCVAXIVYGnk40okSl4JSJTq6+vx0ksvYdeuXSgrK4O92biaOugSkYowdOM4iFUn/cLRLkmh1mPez7pCLpGA8+U0Cg0vSuY6AK0sTYlyAhKlBx54ALt378YvfvELpKWlictPCCLS4Tigd4oWDCywz60j0C2J0SM51o+ChgoNUF9BaQE+EJAoffHFF/j8889x4403BtsegggpaoUMMwYHWMDf0ghYTfzfSj9nmWkGzmcCmn2Lj49HQoKH/ukB8tJLL4HjOCxfvjyo5yWIoCGseZOrAJkCRwuqsO9SBRrMPnRAoVwlnwlIlJ5//nmsXr3aZf1bWzh8+DD+/ve/Y/DgwUE5H0F4gjHmscZ8qwjF/x1e0tGC6zh4uQr1Jlvrx1JWt88ENHx77bXXkJeXh5SUFGRlZUEudy0deuzYMZ/PVVdXh3nz5uHNN9/EH/7wh0DMIQifya9swMc/XEV6nApzR2b6d7AjyC2IklQiAWBzmdHzCImSzwQkSrNmzQqaAcuWLcOMGTMwZcqUVkXJZDLBZDKJj2tqqBg74R9CKdzAgtxOS0zQlFJg9SmBkmJKvhKQKD3zzDNBufi2bdtw7NgxHD582Kf9165dizVr1gTl2kR04qkUrk8IMSWHpyRkhNOi3OAScBXz6upq/POf/8SqVatQVVUFgB+2Xb161afji4qK8Jvf/AZbtmzxuVfcqlWrYDAYxFtRUVGg5hNRijDUkgay7q3Rg6fky/BNCHRbzfyN8EhAntKPP/6IKVOmQK/XIz8/H0uWLEFCQgK2b9+OwsJCsdaSN44ePYqysjIMHz5c3Gaz2bBnzx688cYbMJlMkEpdS40qlUoolcpATCYIAM6LcdswfHOJKaH15gEAIFXwmd02K99AQBZgKd4oICBPacWKFViwYAEuXrzo4uVMnz4de/bs8ekckydPxsmTJ3H8+HHxNmLECMybNw/Hjx9vIUgEEQya2iv5+dFnzGn4xpftEYaAPsWUOK5pCEdpAV4JyFMSpvCb07VrV5SWlro5oiVarRYDBw502RYbG4vExMQW2wkiWAhejd8VAsx1/IJajhNF6aacJPysR6L3xpXOKGIBYzUFu1shIFFSKpVuZ74uXLiApCRa10NELvoYObK7xKJLrJ9hAMFLUmgACe/FJ8T6OQSjGTifCEiU7rjjDjz33HN4//33AfDTq4WFhXjiiSdw5513BmzMt99+G/CxBOELA7vqMbBrAC3CmgW5A0Lh6K9EM3BeCSim9Nprr6Gurg5JSUkwGo2YMGECevXqBa1WixdeeCHYNhJE+GkW5AaAoqoGHM6vQmGljysbRE+JRMkbAXlKer0eO3fuxN69e3HixAnU1dVh+PDhmDJlSrDtI4jIQPCUnDrc5lfW40j+dQzvHo/MRHXr56Dhm0/4LUp2ux25ubnYvn078vPzwXEcsrOzkZqaCsYCLAdBEO3EJ8ev4sp1Iyb3S0bfVD+GYibHEhNV09BPaPvtU51ugBIofcSv4RtjDHfccQceeOABXL16FYMGDcKAAQNQUFCABQsWUClcIuIxW+0wW+2Q+Pvj2SybG2iawfOpTjfQlEBJnpJX/PKUcnNzsWfPHuzatQuTJk1yee7rr7/GrFmzsHnzZtx///1BNZIggoWQEuB31UlhMa5ToFs4h0/LTACn4VsDYLcDgWSVRwF+vStbt27F7373uxaCBAA333wznnzySWzZsiVoxhFEsBGSJ/1qr2Sz8EICuHhKcn8yugFAHsvnOTE7YAlO2Z/OiF+i9OOPP2Lq1Kken582bRpOnDjRZqMIIlQElDwpDN2kcpei/1KxSoCPMSWJpOl4GsJ5xC9RqqqqQkpKisfnU1JScP369TYbRRChIqCeb43V/L1KD+cuAcI5fPaUAEoL8AG/Yko2mw0ymedDpFIprFYfSoMSRJiwCC27/Rm+iYmTrkmX3eJj8PMbuiFG4cc6TYUWQDl5Sl7wS5QYY1iwYIHHlfrOBdgIIhLpGhcDk8UOpcwPUXKTOAnwTQjUCX5m1VCuUqv49Y7Onz+/1X1o5o2IZGYO7er/QW5m3gKGhm+t4pcobdq0KVR2EETk4mH4ZjTbcP5aLTgAQzLifDsXJVC2SsBtuwkiavAwfGu02PDNuTIoZBLfRYkSKFuFRImIGmoaLXh7fwFUcikWj8v27SC73WOFAIUjLmWx2X1fYkUxpVahlFIiarA4lpiYrT7mFQH8MIvZAU7SVHrEgSBKjAFmX3OVxOqTtb7bEGWQKBFRg7AcxK9OJian6gDN0ghkEk5cQ+ez0Ameks1CDQQ8QKJERA0WIZvbn3VvXmbeOI5zGsL5mEApNBAAKNjtARIlImoQloNI/Wka4GHmTUAQJZ89JY5zqkBJcSV3kCgRUUNA7ZU8zLwJ+C1KAAW7W4Fm34iowSYuxvXHU/KeODmpTxIYA5K0fjQioARKr5AoEVGDUiZBepwKiRo/upAYq/l7VZzbp7vF+1AGtzmUQOkVEiUiasjqEousLrG+H8BYU4WAmLjgGUIJlF4hUSIIT5hqHA0oJYDSfaC7xGBEWY0JSVol0uNi3O7TAoopeYUC3QThCXHopvdYuvbCtTp8fa4MeeV+DMVo+OYV8pSIqOHAT5U4ecWAwd30GN0jsfUDjI6ChTHxHndRSNsw+2YiUXIHeUpE1GC02FBnsvpeKdKHeFKbUgIsjgYChAskSkTUIJbC9TVPSRi+efGUhGJxJn9ESWwgwKiBgBtIlIioQcjo9jlPSRi+eUgHACCWwjVabL4bIpEAckcqAQW7W0CiREQNVn8X5IrDN8+eUozcIUpmP0QJoARKL5AoEVGD1Z+mARYjYGnk//YSUxJFyR9PCaAZOC/Q7BsRNVj8aa8kDN0UsXy/Nw9oVDLcPiQNKrkfHU0ASqD0AokSETXoY+QwWe2id+OVhir+Xu09dUAulaBXstbrPm6hBEqPkCgRUcOtA1J937mhgr9vRZQChoZvHiFRIgh3NFTy9z6IUn5FPQxGC7ISY6FXex7quUAJlB6hQDdBuEMYvsW2LkqH86vw9bkyFBuMvp9f6RjyUa3uFpCnREQNm/fngzHgf4d3hU7lxaOx25oC3T54SlqVHIARtY1+tKwXRMlcxydR+tIJJUogUSKiAsYYqurNYAxisX+PNBp4YZLKPFacdEan4r9GtY0W3w1SaHkhstt4YVIGECzvpIR1+LZ27VqMHDkSWq0WycnJmDVrFs6fPx9Ok4hOis3OwBxL3lpNnqx3CnL74MHoYnivy9lTMjRY8M25MuzLq4DJ6iaHSSKhdkseCKso7d69G8uWLcOBAwewc+dOWCwW3HLLLaivp2lSIrg4dxuRt5Y86UeQGwC0Dk+pxuEpWWx2fHjsCo4XVePgT1X49EQJ7O4WAVNcyS1hHb59+eWXLo9zc3ORnJyMo0ePYvz48WGyiuiMCM0iZRIOktYW5PopSvGxfHnd6/UWWG12HM6vQo3RArmUA2NAUVUDzpTUYGDXZoXiVDqgpripYwoBIMJiSgYDX6Q9ISHB7fMmkwkmk0l8XFND/0zCNywOUZLLfBgc1Jfx97FJPp1bq5QhRiGF0WzDTxX1OJrPB8lvHZCKOpMVBqMFPZM0LQ8UPSX6HDsTMaJkt9uxfPly3HjjjRg4cKDbfdauXYs1a9a0s2VEZ0AUpdYqBNhtQL3DU/JRlDiOw60DUhGrkOJcaS2sdobMBDV6JWvAeYtJCUF0EiUXIkaUli1bhlOnTuH777/3uM+qVauwYsUK8XFNTQ0yMjLawzyigyPhOCRqFNAoW/nIN1QBdisgU3itDtCcbEdDgiStErFKKbISY70LEuAkShRTciYiROmRRx7BZ599hj179qBbt24e91MqlVAq/eivRRAOUnQq3D8mq/Ud667x97HJAeUOcRyHG7q7hh8YY8grr8OlsjpM6psMpcyx9k4YvlFMyYWwzr4xxvDII4/go48+wtdff43s7OxwmkMQTaKkSQ7qafdeqsTZklpcrnCaWRYaXJrrqCyuE2EVpWXLluGdd97Bu+++C61Wi9LSUpSWlsJo9CNdnyCCSX05fx9EUeI4Dr2S+UD3T+VOoiSP5ds3MQaYaQgnEFZR2rBhAwwGAyZOnIi0tDTx9t5774XTLKITcuqqAZv352PfpQrPOzHm5CmlBPX63RP58rdXrjeACVmcEklTXSWKK4mENaYk/nMIIsTUm6yorDMjXe+lQqS5DjA38LEkH2fefCVVp4JcyqHeZENlvRldNI7YqErPx5QaDYDeczw1mqAqAURUIGR0e81Tqi3l79WJXqtNBoJMKhE76BZVOXUwEZoSCJ1TCBIlIjoQ85S8ZXPXXOXvdV1DYkNXhyiVGhqbNgr1v4UmBQSJEhEdmH3J6DYIopQeEhtSdCoAQINz5xPylFoQEXlKBBFqhEaUHjO67XagtoT/O0SeUrf4GDw0oafYKw4AeUpuIFEiooKmZSYehm/15YDNwmdyx3YJiQ0yqQSy5j0LBE/JVMsvcZH42RWlE0LDNyIqUMkl0KpknlshCfEkbXr7VoFUxPLF5BjjZ+AI8pSI6GDqwDTvO9SENp4kUFTVgEOXqxCnlmNyvxReAFVxfGG5xmpA7b5CRjRBnhJBMAZUF/J/x4V2gbfNzlBY1YAr151WLVCw2wUSJYIwXucTGCVSQB9aUeqi5ZMmrzeYxTiXGOwWmhVEOSRKRKeHMYa3DxTgvcOFMJrdZHRXF/D3uvSgJ002J1YhRYxCCsaA6/VmfqMwZBPaOkU5JEpEp8diY6ioNaG4uhFSd8mT1x2iFNc95LZwHIdER/nc8jpHFVWh7K5QhjfKIVEiOj1CNxEJx7VMCWCsyVOKD70oAU1DuIo6wVNyiFJjNWDzo3dcJ4VEiej0mK187EYhk7SsBll3jV+EK5WFLGmyOUmOxbiVgqek0AAyJS+QRhrCkSgRnR6Tkyi1oPISfx+f3W6Ji4kaBWIU0qYKlBxHQzgnKE+J6PQInpLSnShVXOTvu+S0mz2pOhUeHN/D1WtTJ/LtlkiUSJSIzo9HT6mxhi9XwnFAQs92s8dtQwFhaUu9lyJ0UQIN34hOD8fxXWxbdDIRhm7atKYKkO2M2DlXHL6RKJGnRHR6eqdo0TtF2/KJ8vP8fTsO3QTOl9biu4vlyEhQ49YBqU01wesr+Rk4afR+NclTIqITU21TKkByv3a/vFTCobbRivJaxwycUgfIYwBmb2peEKWQKBHRSdk5fgpe39WvppPBIsmRq1RVb4bNzvgxptCsoK603e2JJEiUiE7PN+fK8N7hQteea2Wn+fvkAWGxSaeSQSGTwGZnqBKWm2gdolR7LSw2RQokSkSnp9yxxMQqLICtKwdqSviea8l9w2ITx3FiEqU4hNOkOuwjT4kgOjVGC7/MRCzwVnyMv+/Siy+yFiaSxOUmDlHSCqJUxlfBjFJIlIhOj1CoP0YhBawmoPQk/0T68DBaBbH3myhKMfG8SNptTfXCoxASJaJTY7czcUFujFwKlJ7ivRB1IhCfFVbbUnRKpOlVSNbyXU7AcU1F5qqLwmdYmIneZAgiKmi02iA0Yo6RAig6wD/oekP71uJ2Q7JOhbtHZbpu1GfwM4OGK+ExKgIgUSLCB2OAtRGwGPn8HGbntzE7X2xNquBzd9pQeK3OxJcCUSukkJSd5JeWKGKBtMHBehXBRah8aSiK2iTK6HvFRPiwNAKVF4HKPL5kiLGaFyBvcBwfa9F1BZL6AAk9/FrNb7Ux6GLk0MrsQP5efmPmmJBXmPQHi82OBpMNerWcz+xWxALmesBQyL/eKINEiQg95gZ+2HT1mPtZJakckMh4AeIkADjAbuWD0szOl4ltqOID1EotkPkzIG2oT15EelwMFo/LBrv0NVBUC6j0QPrQYL/CgLlcUY//HC9GklaJe0dn8u9BYi+g5AQv3iRKRIfEZuVzW8z1/Jdanch7F2GOmYAxoOwMcHEnP0QDeNuS+wL6boC6CyBXexYXxvjXVHcNqLrMn8tUy5/v6jGg9y2+BasNV8FdOcz/nfM/EeUlJcQqYGcM5bUmWGx2voOvKEqXgF5Twv9/bGdIlDoytdeAK4f4wKi9WRnVmDggfRh/kynb3zabFbjwZdP0e2wXoMckILGn718yjuNX7ys1/HE9JgKlJ4D87/m6Q8e3AikDgJ43e17lb6oFznzMe1zJfcOy+NYbOkf1gjqTFcXVRnRPjOWFVirnh7eGKyFv+xRpkCh1RGxWIP87oOggxKklhZr3juxWfqW5sRrI+wYoPMD/2qYMaL9f3EYDcGp7U62irHF8HKetlR2lMn7WLHkAcHkPnwR57TQfp8oaD3Qd7nqN+kr8uONfkBqrkNG1K3S9p7Xt+iGA4zhkJqpxprgGBZUNvCjJFEBSX17QS38kUSIinJoS4NxnTcXAkvoAGaP59kCC6FjNQPk5oHA/H4s5+ylw7RTQZxofUwkl1UXA6e18HEkeA/SfCSRkB/cachU/dEsdBFzcwb8nl/7Lv96kPvxrrK8AKzsDk6Ec9VwskgfM4Y+LQLISYx2iVA8gid+YNpgXpbKzvCcojwmrje0JiVJHwW4DCvYCBfv5oYhCDfSeyn8JmyNT8B/qlAG8N5W/l4/JHP4n7zWlDg6N11R8HLj4FW+rJhkYeGdTo8VQoEsDhs8HSo7zQzpTHR9rcmC12VGp6Iq8xAm4MSEpdHa0ke6JanAc393E0GDhZ+H0GYAmiV+nd+UwkD0+3Ga2GyRKHYG6Mt7bqSvjHyf3BXJu5YXJGxIp0H0sPxQ49xlguAqc+z++uFmfafxMVjCw2/ihohBMTu4L9L2tfQLKHMfHzVIH87NVhkI+qK7QoEySjrN2QK9W8AHkCEUllyIjXo3CqgacLa3Bz3okOoa9N/HD4CuH+dcYrP9XhEOiFMnYrEDhPj4uZLfxLnzvW/0vSqZOAIbexwfFL3/Hf3kPvQnk3NL2WFNDFXD2P/wQCgCybwK639j+M0YSKZDUm785KMyrBLhKpOkjc9jmzPDu8cjqEou+qU7C06U37w3WlAAXdvCeZxTMxEXEz8df//pXZGVlQaVSYfTo0Th06FC4TQovjPEzakf+xQ+97Db+yzbygcCrJEokfH7PiIX8anSrife+Tv2bD4z7i83C23bkX/yXRqYEBs7mg9oR8sUput4AgM9VinSyu8Tihu7xiHWuI85xQJ8ZvOBWXAQu726a2OjEhN1Teu+997BixQr87W9/w+jRo7Fu3TrceuutOH/+PJKTk8NtXvtiaeRzcYp/aBqqKWJ5jyapT3C+7LFd+DhM4X4+RlVxkc+H6ZIDpAzik/W8JSU2VPEzXsU/8DlEAN9Ztu+M0AfR/cDQYEFxNZ8blZ0UvvIkgWByrNdTyaV8XCnnFuD8F3w80VTHB75bG7p3YDjGwiu9o0ePxsiRI/HGG28AAOx2OzIyMvCrX/0KTz75pNdja2pqoNfrYTAYoNPp2sPc4GCzAJYGfoaqoZLvYFFdyHscwrILqRzIGAV0GxW6WaO6Mn5qXeh9BvCZ1ZpkXrzkaj4Z027hUwzqy/l7AZWOzz1K7hcx3pFATaMF312ogMlqw+zh3cJtjs9U1Jnw+Y8lUMklmNQ3GUkaJd+S6coRfoaRMUfKQD/+B0STzMeaIigh1JlAvqNhFSWz2Qy1Wo0PP/wQs2bNErfPnz8f1dXV+OSTT1z2N5lMMJlM4uOamhpkZGS0/oKrLvP/0OaIL535t83lLWu+rZVz2awtEx2die3CL6FIGdB+v4Z15XxSYtk5PtnQG5wEiMsE0obw3ls7dZUVsNsZ3jlYAMYAO2Mu9wwMmQlqTB2YJu5vtdkhi+Agd3Ou1TTi38euwGRp6lUXI5dCJuUQayzGRMkJJLJqAEB1gxkFVfwQVaFQoF+3JP7/wUmabqFk8Fz+h8kLgYhSWIdvFRUVsNlsSElJcdmekpKCc+fOtdh/7dq1WLNmjf8Xspoir8kfJ+ED1+oEfumFNo3P5A3lFLonNEl8qkDPyYDxOl9gzFjdtHpfKgMUWl4wtWlhzffhOKCyzuzx+UaL6wLfjiRIAJCiU+GekZnYm1eBn8rrYbbaxQ6/leiCyv7zkKioBCouwHTlJ9RZ8iFhNjBmbhpOtxetLaYOkLDHlPxh1apVWLFihfhY8JRaJS4DGHJ3syGG42+v25yea74t0HNJJI71XoqIG/LwPe0T+FuEwnEcfn4DPxyTSDhwACQcBwkHgAOUsvb13EJBfKwCtw1Oh9Vmh8Fogclq5zueAEjUKACFDkjIhqa7FRmDTYDdDLm9EYiVOJWAsQPM5t+F/R00haiUcFhFqUuXLpBKpbh2zbV7w7Vr15Camtpif6VSCaUygHVcitjgZxUTYSMjofMGeZ2RSSVI1Hj+vMcqZY7Zuo4VyG+NsPq2CoUCN9xwA3bt2iVus9vt2LVrF8aMGRNGywiCCBdhH76tWLEC8+fPx4gRIzBq1CisW7cO9fX1WLhwYbhNIwgiDIRdlObOnYvy8nKsXr0apaWlGDp0KL788ssWwW+CIKKDsOcptYUOm6dEEFFCIN/RjjVfShBEp4dEiSCIiIJEiSCIiCLsge62IITDampqwmwJQRDuEL6b/oSuO7Qo1dby67R8yuomCCJs1NbWQq/3rYpEh559s9vtKC4uhlar5VdSRyHCUpuioiKagQwAev/aRmvvH2MMtbW1SE9Ph0TiW7SoQ3tKEokE3bp1nLIUoUSn09GXqg3Q+9c2vL1/vnpIAhToJggioiBRIggioiBR6uAolUo888wzgVVPIOj9ayOheP86dKCbIIjOB3lKBEFEFCRKBEFEFCRKBEFEFCRKBEFEFCRKHZCqqirMmzcPOp0OcXFxWLx4Merq6rweM3HiRHAc53J76KGH2sni8OJvB+YPPvgAffv2hUqlwqBBg/B///d/7WRpZOLP+5ebm9vic6ZS+dn9hhEdjqlTp7IhQ4awAwcOsO+++4716tWL3XPPPV6PmTBhAluyZAkrKSkRbwaDoZ0sDh/btm1jCoWCbdy4kZ0+fZotWbKExcXFsWvXrrndf+/evUwqlbI//vGP7MyZM+z3v/89k8vl7OTJk+1seWTg7/u3adMmptPpXD5npaWlfl2TRKmDcebMGQaAHT58WNz2xRdfMI7j2NWrVz0eN2HCBPab3/ymHSyMLEaNGsWWLVsmPrbZbCw9PZ2tXbvW7f5z5sxhM2bMcNk2evRo9uCDD4bUzkjF3/dv06ZNTK/Xt+maNHzrYOzfvx9xcXEYMWKEuG3KlCmQSCQ4ePCg12O3bNmCLl26YODAgVi1ahUaGhpCbW5YMZvNOHr0KKZMmSJuk0gkmDJlCvbv3+/2mP3797vsDwC33nqrx/07M4G8fwBQV1eH7t27IyMjAzNnzsTp06f9um6HXpAbjZSWliI5Odllm0wmQ0JCAkpLSz0ed++996J79+5IT0/Hjz/+iCeeeALnz5/H9u3bQ21y2PC3AzPAv7/u9vf23nZWAnn/+vTpg40bN2Lw4MEwGAx49dVXMXbsWJw+fdrnxfMkShHCk08+iZdfftnrPmfPng34/EuXLhX/HjRoENLS0jB58mTk5eWhZ8+eAZ+XIJwZM2aMS8/GsWPHol+/fvj73/+O559/3qdzkChFCL/97W+xYMECr/v06NEDqampKCsrc9lutVpRVVXltquwJ0aPHg0AuHTpUqcVJX87MANAamqqX/t3ZgJ5/5ojl8sxbNgwXLp0yefrUkwpQkhKSkLfvn293hQKBcaMGYPq6mocPXpUPPbrr7+G3W4XhcYXjh8/DgBIS0sL9kuJGALpwDxmzBiX/QFg586dUdmxORgdrG02G06ePOnf56xNYXIiLEydOpUNGzaMHTx4kH3//fcsJyfHJSXgypUrrE+fPuzgwYOMMcYuXbrEnnvuOXbkyBF2+fJl9sknn7AePXqw8ePHh+sltBvbtm1jSqWS5ebmsjNnzrClS5eyuLg4cZr6F7/4BXvyySfF/ffu3ctkMhl79dVX2dmzZ9kzzzwT9SkB/rx/a9asYTt27GB5eXns6NGj7O6772YqlYqdPn3a52uSKHVAKisr2T333MM0Gg3T6XRs4cKFrLa2Vnz+8uXLDAD75ptvGGOMFRYWsvHjx7OEhASmVCpZr1692GOPPRYVeUqMMfaXv/yFZWZmMoVCwUaNGsUOHDggPjdhwgQ2f/58l/3ff/991rt3b6ZQKNiAAQPY559/3s4WRxb+vH/Lly8X901JSWHTp09nx44d8+t6VLqEIIiIgmJKBEFEFCRKBEFEFCRKBEFEFCRKBEFEFCRKBEFEFCRKBEFEFCRKBEFEFCRKRIciNzcXcXFx4uNnn30WQ4cOFR8vWLAAs2bNane7iOBBokS4ZcGCBR5L5i5btgwcx7ksIA6FGGRlZWHdunUu2+bOnYsLFy54PGb9+vXIzc0VH0+cOBHLly8Pql1EaCFRIjySkZGBbdu2wWg0itsaGxvx7rvvIjMzMyw2xcTEtKgn5Yxer3fxpIiOB4kS4ZHhw4cjIyPDpRDc9u3bkZmZiWHDhrXp3O48mFmzZone18SJE1FQUIBHH31ULEAPtBy+NcfZY1uwYAF2796N9evXi+e4fPkyevXqhVdffdXluOPHj4PjOL9KbBChgUSJ8MqiRYuwadMm8fHGjRuxcOHCkF93+/bt6NatG5577jmUlJSgpKTE73OsX78eY8aMwZIlS8RzZGZmtnhNALBp0yaMHz8evXr1CtZLIAKERInwyn333Yfvv/8eBQUFKCgowN69e3HfffeF/LoJCQmQSqXQarVITU0NqMiaXq+HQqGAWq0WzyGVSrFgwQKcP39ebBVksVjw7rvvYtGiRcF+GUQAUOVJwitJSUmYMWMGcnNzwRjDjBkz0KVLl3Cb1SbS09MxY8YMbNy4EaNGjcKnn34Kk8mEu+66K9ymESBPifCBRYsWITc3F2+99VbQvAmJRILmVXMsFktQzu0LDzzwgBjE37RpE+bOnQu1Wt1u1yc8Q6JEtMrUqVNhNpthsVhw6623BuWcSUlJLnEim82GU6dOueyjUChgs9nadB1P55g+fTpiY2OxYcMGfPnllzR0iyBo+Ea0ilQqFTupSKVSj/sZDAax9rdAYmIiMjIyWux78803Y8WKFfj888/Rs2dPvP7666iurnbZJysrC3v27MHdd98NpVIZ0LAxKysLBw8eRH5+PjQaDRISEiCRSMTY0qpVq5CTkxOVNbgjFfKUCJ/Q6XTQ6XRe9/n2228xbNgwl9uaNWvc7rto0SLMnz8f999/PyZMmIAePXpg0qRJLvs899xzyM/PR8+ePZGUlBSQ3StXroRUKkX//v2RlJSEwsJC8bnFixfDbDa3y2wi4TtUDpeIWr777jtMnjwZRUVFLRouEuGDRImIOkwmE8rLyzF//nykpqZiy5Yt4TaJcIKGb0TUsXXrVnTv3h3V1dX44x//GG5ziGaQp0QQRERBnhJBEBEFiRJBEBEFiRJBEBEFiRJBEBEFiRJBEBEFiRJBEBEFiRJBEBEFiRJBEBEFiRJBEBHF/wd7qD9T5r3nzgAAAABJRU5ErkJggg==", + "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-02-29T18:44:33.503100Z", + "iopub.status.busy": "2024-02-29T18:44:33.502818Z", + "iopub.status.idle": "2024-02-29T18:44:33.729512Z", + "shell.execute_reply": "2024-02-29T18:44:33.728656Z" + }, + "papermill": { + "duration": 0.248914, + "end_time": "2024-02-29T18:44:33.731368", + "exception": false, + "start_time": "2024-02-29T18:44:33.482454", + "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-02-29T18:44:33.772296Z", + "iopub.status.busy": "2024-02-29T18:44:33.772018Z", + "iopub.status.idle": "2024-02-29T18:44:34.042778Z", + "shell.execute_reply": "2024-02-29T18:44:34.041888Z" + }, + "papermill": { + "duration": 0.293553, + "end_time": "2024-02-29T18:44:34.044775", + "exception": false, + "start_time": "2024-02-29T18:44:33.751222", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "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.019946, + "end_time": "2024-02-29T18:44:34.084886", + "exception": false, + "start_time": "2024-02-29T18:44:34.064940", + "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": 1067.648958, + "end_time": "2024-02-29T18:44:36.826930", + "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, + "param_index": 2, + "path": "eval/insurance/tab_ddpm_concat/4", + "path_prefix": "../../../../", + "random_seed": 4, + "single_model": "tab_ddpm_concat" + }, + "start_time": "2024-02-29T18:26:49.177972", + "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 +} \ No newline at end of file