diff --git "a/treatment/lct_gan/mlu-eval.ipynb" "b/treatment/lct_gan/mlu-eval.ipynb" new file mode 100644--- /dev/null +++ "b/treatment/lct_gan/mlu-eval.ipynb" @@ -0,0 +1,2670 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "982e76f5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:40.905323Z", + "iopub.status.busy": "2024-03-01T06:37:40.904929Z", + "iopub.status.idle": "2024-03-01T06:37:40.938985Z", + "shell.execute_reply": "2024-03-01T06:37:40.938267Z" + }, + "papermill": { + "duration": 0.049669, + "end_time": "2024-03-01T06:37:40.941076", + "exception": false, + "start_time": "2024-03-01T06:37:40.891407", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import joblib\n", + "\n", + "#joblib.parallel_backend(\"threading\")" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "675f0b41", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:40.968919Z", + "iopub.status.busy": "2024-03-01T06:37:40.968442Z", + "iopub.status.idle": "2024-03-01T06:37:40.975769Z", + "shell.execute_reply": "2024-03-01T06:37:40.974924Z" + }, + "papermill": { + "duration": 0.023557, + "end_time": "2024-03-01T06:37:40.977775", + "exception": false, + "start_time": "2024-03-01T06:37:40.954218", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n%cd /kaggle/working\\n#!git clone https://github.com/R-N/ml-utility-loss\\n%cd ml-utility-loss\\n!git pull\\n#!pip install .\\n!pip install . --no-deps --force-reinstall --upgrade\\n#'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "%cd /kaggle/working\n", + "#!git clone https://github.com/R-N/ml-utility-loss\n", + "%cd ml-utility-loss\n", + "!git pull\n", + "#!pip install .\n", + "!pip install . --no-deps --force-reinstall --upgrade\n", + "#\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5ae30f5c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:41.001740Z", + "iopub.status.busy": "2024-03-01T06:37:41.001463Z", + "iopub.status.idle": "2024-03-01T06:37:41.005366Z", + "shell.execute_reply": "2024-03-01T06:37:41.004588Z" + }, + "papermill": { + "duration": 0.018202, + "end_time": "2024-03-01T06:37:41.007313", + "exception": false, + "start_time": "2024-03-01T06:37:40.989111", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.rcParams['figure.figsize'] = [3,3]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9f42c810", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:41.030702Z", + "iopub.status.busy": "2024-03-01T06:37:41.030401Z", + "iopub.status.idle": "2024-03-01T06:37:41.034415Z", + "shell.execute_reply": "2024-03-01T06:37:41.033610Z" + }, + "executionInfo": { + "elapsed": 678, + "status": "ok", + "timestamp": 1696841022168, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "ns5hFcVL2yvs", + "papermill": { + "duration": 0.017916, + "end_time": "2024-03-01T06:37:41.036404", + "exception": false, + "start_time": "2024-03-01T06:37:41.018488", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "datasets = [\n", + " \"insurance\",\n", + " \"treatment\",\n", + " \"contraceptive\"\n", + "]\n", + "\n", + "study_dir = \"./\"" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "85d0c8ce", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:41.060140Z", + "iopub.status.busy": "2024-03-01T06:37:41.059891Z", + "iopub.status.idle": "2024-03-01T06:37:41.065405Z", + "shell.execute_reply": "2024-03-01T06:37:41.064582Z" + }, + "papermill": { + "duration": 0.01973, + "end_time": "2024-03-01T06:37:41.067481", + "exception": false, + "start_time": "2024-03-01T06:37:41.047751", + "status": "completed" + }, + "tags": [ + "parameters" + ] + }, + "outputs": [], + "source": [ + "#Parameters\n", + "import os\n", + "\n", + "path_prefix = \"../../../../\"\n", + "\n", + "dataset_dir = os.path.join(path_prefix, \"ml-utility-loss/datasets\")\n", + "dataset_name = \"treatment\"\n", + "model_name=\"ml_utility_2\"\n", + "models = [\"tvae\", \"realtabformer\", \"lct_gan\", \"tab_ddpm_concat\"]\n", + "single_model = \"lct_gan\"\n", + "random_seed = 42\n", + "gp = True\n", + "gp_multiply = True\n", + "folder = \"eval\"\n", + "debug = False\n", + "path = None\n", + "param_index = 0\n", + "allow_same_prediction = True\n", + "log_wandb = False" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1d904d96", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:41.092350Z", + "iopub.status.busy": "2024-03-01T06:37:41.092062Z", + "iopub.status.idle": "2024-03-01T06:37:41.097169Z", + "shell.execute_reply": "2024-03-01T06:37:41.096307Z" + }, + "papermill": { + "duration": 0.019934, + "end_time": "2024-03-01T06:37:41.099194", + "exception": false, + "start_time": "2024-03-01T06:37:41.079260", + "status": "completed" + }, + "tags": [ + "injected-parameters" + ] + }, + "outputs": [], + "source": [ + "# Parameters\n", + "dataset = \"treatment\"\n", + "dataset_name = \"treatment\"\n", + "single_model = \"lct_gan\"\n", + "gp = False\n", + "gp_multiply = False\n", + "random_seed = 42\n", + "debug = False\n", + "folder = \"eval\"\n", + "path_prefix = \"../../../../\"\n", + "path = \"eval/treatment/lct_gan/42\"\n", + "param_index = 0\n", + "allow_same_prediction = True\n", + "log_wandb = False\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd7c02d6", + "metadata": { + "papermill": { + "duration": 0.011024, + "end_time": "2024-03-01T06:37:41.121282", + "exception": false, + "start_time": "2024-03-01T06:37:41.110258", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5f45b1d0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:41.145649Z", + "iopub.status.busy": "2024-03-01T06:37:41.144969Z", + "iopub.status.idle": "2024-03-01T06:37:41.154625Z", + "shell.execute_reply": "2024-03-01T06:37:41.153823Z" + }, + "executionInfo": { + "elapsed": 7, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "UdvXYv3c3LXy", + "papermill": { + "duration": 0.023987, + "end_time": "2024-03-01T06:37:41.156560", + "exception": false, + "start_time": "2024-03-01T06:37:41.132573", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/kaggle/working\n", + "/kaggle/working/eval/treatment/lct_gan/42\n" + ] + } + ], + "source": [ + "from pathlib import Path\n", + "import os\n", + "\n", + "%cd /kaggle/working/\n", + "\n", + "if path is None:\n", + " path = os.path.join(folder, dataset_name, single_model, random_seed)\n", + "Path(path).mkdir(parents=True, exist_ok=True)\n", + "\n", + "%cd {path}" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f85bf540", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:41.180579Z", + "iopub.status.busy": "2024-03-01T06:37:41.180271Z", + "iopub.status.idle": "2024-03-01T06:37:43.405343Z", + "shell.execute_reply": "2024-03-01T06:37:43.404398Z" + }, + "papermill": { + "duration": 2.23974, + "end_time": "2024-03-01T06:37:43.407601", + "exception": false, + "start_time": "2024-03-01T06:37:41.167861", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Set seed to \n" + ] + } + ], + "source": [ + "from ml_utility_loss.util import seed\n", + "if single_model:\n", + " model_name=f\"{model_name}_{single_model}\"\n", + "if random_seed is not None:\n", + " seed(random_seed)\n", + " print(\"Set seed to\", seed)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "8489feae", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:43.434451Z", + "iopub.status.busy": "2024-03-01T06:37:43.434028Z", + "iopub.status.idle": "2024-03-01T06:37:43.461510Z", + "shell.execute_reply": "2024-03-01T06:37:43.460714Z" + }, + "papermill": { + "duration": 0.043451, + "end_time": "2024-03-01T06:37:43.463747", + "exception": false, + "start_time": "2024-03-01T06:37:43.420296", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import json\n", + "import os\n", + "\n", + "df = pd.read_csv(os.path.join(dataset_dir, f\"{dataset_name}.csv\"))\n", + "with open(os.path.join(dataset_dir, f\"{dataset_name}.json\")) as f:\n", + " info = json.load(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "debcc684", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:43.489093Z", + "iopub.status.busy": "2024-03-01T06:37:43.488805Z", + "iopub.status.idle": "2024-03-01T06:37:43.509803Z", + "shell.execute_reply": "2024-03-01T06:37:43.509067Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "Vrl2QkoV3o_8", + "papermill": { + "duration": 0.035791, + "end_time": "2024-03-01T06:37:43.511912", + "exception": false, + "start_time": "2024-03-01T06:37:43.476121", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "task = info[\"task\"]\n", + "target = info[\"target\"]\n", + "cat_features = info[\"cat_features\"]\n", + "mixed_features = info[\"mixed_features\"]\n", + "longtail_features = info[\"longtail_features\"]\n", + "integer_features = info[\"integer_features\"]\n", + "\n", + "test = df.sample(frac=0.2, random_state=42)\n", + "train = df[~df.index.isin(test.index)]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7538184a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:43.539665Z", + "iopub.status.busy": "2024-03-01T06:37:43.538932Z", + "iopub.status.idle": "2024-03-01T06:37:44.020315Z", + "shell.execute_reply": "2024-03-01T06:37:44.019458Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "TilUuFk9vqMb", + "papermill": { + "duration": 0.498436, + "end_time": "2024-03-01T06:37:44.022641", + "exception": false, + "start_time": "2024-03-01T06:37:43.524205", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import ml_utility_loss.synthesizers.tab_ddpm.params as TAB_DDPM_PARAMS\n", + "import ml_utility_loss.synthesizers.lct_gan.params as LCT_GAN_PARAMS\n", + "import ml_utility_loss.synthesizers.realtabformer.params as RTF_PARAMS\n", + "from ml_utility_loss.synthesizers.realtabformer.params.default import GPT2_PARAMS, REALTABFORMER_PARAMS\n", + "from ml_utility_loss.util import filter_dict_2, filter_dict\n", + "\n", + "tab_ddpm_params = getattr(TAB_DDPM_PARAMS, dataset_name).BEST\n", + "lct_gan_params = getattr(LCT_GAN_PARAMS, dataset_name).BEST\n", + "lct_ae_params = filter_dict_2(lct_gan_params, LCT_GAN_PARAMS.default.AE_PARAMS)\n", + "rtf_params = getattr(RTF_PARAMS, dataset_name).BEST\n", + "rtf_params = filter_dict(rtf_params, REALTABFORMER_PARAMS)\n", + "\n", + "lct_ae_embedding_size=lct_gan_params[\"embedding_size\"]\n", + "tab_ddpm_normalization=\"quantile\"\n", + "tab_ddpm_cat_encoding=tab_ddpm_params[\"cat_encoding\"]\n", + "#tab_ddpm_cat_encoding=\"one-hot\"\n", + "tab_ddpm_y_policy=\"default\"\n", + "tab_ddpm_is_y_cond=True" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "cca61838", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:44.047511Z", + "iopub.status.busy": "2024-03-01T06:37:44.047200Z", + "iopub.status.idle": "2024-03-01T06:37:57.447527Z", + "shell.execute_reply": "2024-03-01T06:37:57.446595Z" + }, + "executionInfo": { + "elapsed": 3113, + "status": "ok", + "timestamp": 1696841025277, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "7Abt8nStvr9Z", + "papermill": { + "duration": 13.41538, + "end_time": "2024-03-01T06:37:57.450103", + "exception": false, + "start_time": "2024-03-01T06:37:44.034723", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-03-01 06:37:48.725607: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n", + "2024-03-01 06:37:48.725704: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n", + "2024-03-01 06:37:48.855733: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_lct_ae\n", + "\n", + "lct_ae = load_lct_ae(\n", + " dataset_name=dataset_name,\n", + " model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", + " model_name=\"lct_ae\",\n", + " df_name=\"df\",\n", + ")\n", + "lct_ae = None" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "6f83b7b6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:57.477690Z", + "iopub.status.busy": "2024-03-01T06:37:57.476436Z", + "iopub.status.idle": "2024-03-01T06:37:57.490600Z", + "shell.execute_reply": "2024-03-01T06:37:57.489899Z" + }, + "papermill": { + "duration": 0.029971, + "end_time": "2024-03-01T06:37:57.492902", + "exception": false, + "start_time": "2024-03-01T06:37:57.462931", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_rtf_embed\n", + "\n", + "rtf_embed = load_rtf_embed(\n", + " dataset_name=dataset_name,\n", + " model_dir=os.path.join(path_prefix, \"ml-utility-loss/models\"),\n", + " model_name=\"realtabformer\",\n", + " df_name=\"df\",\n", + " ckpt_type=\"best-disc-model\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "0026de74", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:37:57.518368Z", + "iopub.status.busy": "2024-03-01T06:37:57.518061Z", + "iopub.status.idle": "2024-03-01T06:38:22.498118Z", + "shell.execute_reply": "2024-03-01T06:38:22.497159Z" + }, + "executionInfo": { + "elapsed": 20137, + "status": "ok", + "timestamp": 1696841045408, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "tbaguWxAvtPi", + "papermill": { + "duration": 24.995876, + "end_time": "2024-03-01T06:38:22.500742", + "exception": false, + "start_time": "2024-03-01T06:37:57.504866", + "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" + ] + }, + { + "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" + ] + }, + { + "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" + ] + }, + { + "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" + ] + }, + { + "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': 'torch',\n", + " 'grad_clip': 0.8,\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': 4,\n", + " 'epochs': 100,\n", + " 'lr_mul': 0.04,\n", + " 'n_warmup_steps': 220,\n", + " 'Optim': torch_optimizer.diffgrad.DiffGrad,\n", + " 'loss_balancer_beta': 0.73,\n", + " 'loss_balancer_r': 0.94,\n", + " 'fixed_role_model': 'lct_gan',\n", + " 'd_model': 512,\n", + " 'attn_activation': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'tf_d_inner': 512,\n", + " 'tf_n_layers_enc': 4,\n", + " 'tf_n_head': 64,\n", + " 'tf_activation': ml_utility_loss.activations.LeakyHardtanh,\n", + " 'tf_activation_final': ml_utility_loss.activations.LeakyHardtanh,\n", + " 'ada_d_hid': 1024,\n", + " 'ada_n_layers': 7,\n", + " 'ada_activation': torch.nn.modules.activation.SELU,\n", + " 'ada_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'head_d_hid': 128,\n", + " 'head_n_layers': 8,\n", + " 'head_n_head': 64,\n", + " 'head_activation': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'head_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'models': ['lct_gan'],\n", + " 'max_seconds': 3600,\n", + " 'tf_lora': False,\n", + " 'tf_num_inds': 64,\n", + " 'ada_n_seeds': 0,\n", + " 'gradient_penalty_kwargs': {'mag_loss': True,\n", + " 'mse_mag': False,\n", + " 'mag_corr': False,\n", + " 'seq_mag': False,\n", + " 'cos_loss': False,\n", + " 'mag_corr_kwargs': {'only_sign': False},\n", + " 'cos_loss_kwargs': {'only_sign': True, 'cos_matrix': False},\n", + " 'mse_mag_kwargs': {'target': 0.2, '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-03-01T06:47:42.874049Z", + "iopub.status.busy": "2024-03-01T06:47:42.873701Z", + "iopub.status.idle": "2024-03-01T06:57:03.489733Z", + "shell.execute_reply": "2024-03-01T06:57:03.488592Z" + }, + "papermill": { + "duration": 560.649636, + "end_time": "2024-03-01T06:57:03.504726", + "exception": false, + "start_time": "2024-03-01T06:47:42.855090", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "load_dataset_3_factory 2\n", + "Caching in ../../../../treatment/_cache/lct_gan/all inf False\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Splitting without random!\n", + "Split with reverse index!\n", + "../../../../ml-utility-loss/datasets_2/treatment [80, 20]\n", + "Caching in ../../../../treatment/_cache4/lct_gan/all inf False\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Splitting without random!\n", + "Split with reverse index!\n", + "../../../../ml-utility-loss/datasets_4/treatment [80, 20]\n", + "Caching in ../../../../treatment/_cache5/lct_gan/all inf False\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Splitting without random!\n", + "Split with reverse index!\n", + "../../../../ml-utility-loss/datasets_5/treatment [160, 40]\n", + "[320, 80]\n", + "[320, 80]\n" + ] + } + ], + "source": [ + "train_set, val_set = datasetsn(model=params[\"fixed_role_model\"], synth_data=params[\"synth_data\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "2fcb1418", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "execution": { + "iopub.execute_input": "2024-03-01T06:57:03.535116Z", + "iopub.status.busy": "2024-03-01T06:57:03.534120Z", + "iopub.status.idle": "2024-03-01T06:57:04.098122Z", + "shell.execute_reply": "2024-03-01T06:57:04.097203Z" + }, + "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.581203, + "end_time": "2024-03-01T06:57:04.100206", + "exception": false, + "start_time": "2024-03-01T06:57:03.519003", + "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" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['lct_gan'] 1\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.model.pipeline import remove_non_model_params\n", + "from ml_utility_loss.loss_learning.estimator.pipeline import create_model\n", + "from ml_utility_loss.util import filter_dict, clear_memory\n", + "\n", + "clear_memory()\n", + "\n", + "params2 = remove_non_model_params(params)\n", + "adapters = filter_dict(preprocessor.adapter_sizes, params[\"models\"])\n", + "\n", + "model = create_model(\n", + " adapters=adapters,\n", + " #Body=\"twin_encoder\",\n", + " **params2,\n", + ")\n", + "#cf.apply_weight_standardization(model, n_last_layers_ignore=0)\n", + "print(model.models, len(model.adapters))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "938f94fc", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:57:04.131337Z", + "iopub.status.busy": "2024-03-01T06:57:04.131012Z", + "iopub.status.idle": "2024-03-01T06:57:04.135399Z", + "shell.execute_reply": "2024-03-01T06:57:04.134498Z" + }, + "papermill": { + "duration": 0.022449, + "end_time": "2024-03-01T06:57:04.137334", + "exception": false, + "start_time": "2024-03-01T06:57:04.114885", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "study_name=f\"{model_name}_{dataset_name}\"" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "12fb613e", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:57:04.165908Z", + "iopub.status.busy": "2024-03-01T06:57:04.165622Z", + "iopub.status.idle": "2024-03-01T06:57:04.172471Z", + "shell.execute_reply": "2024-03-01T06:57:04.171692Z" + }, + "papermill": { + "duration": 0.023524, + "end_time": "2024-03-01T06:57:04.174595", + "exception": false, + "start_time": "2024-03-01T06:57:04.151071", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "18680833" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def count_parameters(model):\n", + " return sum(p.numel() for p in model.parameters() if p.requires_grad)\n", + "\n", + "count_parameters(model)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "bd386e57", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:57:04.203425Z", + "iopub.status.busy": "2024-03-01T06:57:04.202969Z", + "iopub.status.idle": "2024-03-01T06:57:04.337294Z", + "shell.execute_reply": "2024-03-01T06:57:04.336388Z" + }, + "papermill": { + "duration": 0.151558, + "end_time": "2024-03-01T06:57:04.339656", + "exception": false, + "start_time": "2024-03-01T06:57:04.188098", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "========================================================================================================================\n", + "Layer (type:depth-idx) Output Shape Param #\n", + "========================================================================================================================\n", + "MLUtilitySingle [2, 2648, 75] --\n", + "├─Adapter: 1-1 [2, 2648, 75] --\n", + "│ └─Sequential: 2-1 [2, 2648, 512] --\n", + "│ │ └─FeedForward: 3-1 [2, 2648, 1024] --\n", + "│ │ │ └─Linear: 4-1 [2, 2648, 1024] 77,824\n", + "│ │ │ └─SELU: 4-2 [2, 2648, 1024] --\n", + "│ │ └─FeedForward: 3-2 [2, 2648, 1024] --\n", + "│ │ │ └─Linear: 4-3 [2, 2648, 1024] 1,049,600\n", + "│ │ │ └─SELU: 4-4 [2, 2648, 1024] --\n", + "│ │ └─FeedForward: 3-3 [2, 2648, 1024] --\n", + "│ │ │ └─Linear: 4-5 [2, 2648, 1024] 1,049,600\n", + "│ │ │ └─SELU: 4-6 [2, 2648, 1024] --\n", + "│ │ └─FeedForward: 3-4 [2, 2648, 1024] --\n", + "│ │ │ └─Linear: 4-7 [2, 2648, 1024] 1,049,600\n", + "│ │ │ └─SELU: 4-8 [2, 2648, 1024] --\n", + "│ │ └─FeedForward: 3-5 [2, 2648, 1024] --\n", + "│ │ │ └─Linear: 4-9 [2, 2648, 1024] 1,049,600\n", + "│ │ │ └─SELU: 4-10 [2, 2648, 1024] --\n", + "│ │ └─FeedForward: 3-6 [2, 2648, 1024] --\n", + "│ │ │ └─Linear: 4-11 [2, 2648, 1024] 1,049,600\n", + "│ │ │ └─SELU: 4-12 [2, 2648, 1024] --\n", + "│ │ └─FeedForward: 3-7 [2, 2648, 512] --\n", + "│ │ │ └─Linear: 4-13 [2, 2648, 512] 524,800\n", + "│ │ │ └─LeakyHardsigmoid: 4-14 [2, 2648, 512] --\n", + "├─Adapter: 1-2 [2, 661, 75] (recursive)\n", + "│ └─Sequential: 2-2 [2, 661, 512] (recursive)\n", + "│ │ └─FeedForward: 3-8 [2, 661, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-15 [2, 661, 1024] (recursive)\n", + "│ │ │ └─SELU: 4-16 [2, 661, 1024] --\n", + "│ │ └─FeedForward: 3-9 [2, 661, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-17 [2, 661, 1024] (recursive)\n", + "│ │ │ └─SELU: 4-18 [2, 661, 1024] --\n", + "│ │ └─FeedForward: 3-10 [2, 661, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-19 [2, 661, 1024] (recursive)\n", + "│ │ │ └─SELU: 4-20 [2, 661, 1024] --\n", + "│ │ └─FeedForward: 3-11 [2, 661, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-21 [2, 661, 1024] (recursive)\n", + "│ │ │ └─SELU: 4-22 [2, 661, 1024] --\n", + "│ │ └─FeedForward: 3-12 [2, 661, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-23 [2, 661, 1024] (recursive)\n", + "│ │ │ └─SELU: 4-24 [2, 661, 1024] --\n", + "│ │ └─FeedForward: 3-13 [2, 661, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-25 [2, 661, 1024] (recursive)\n", + "│ │ │ └─SELU: 4-26 [2, 661, 1024] --\n", + "│ │ └─FeedForward: 3-14 [2, 661, 512] (recursive)\n", + "│ │ │ └─Linear: 4-27 [2, 661, 512] (recursive)\n", + "│ │ │ └─LeakyHardsigmoid: 4-28 [2, 661, 512] --\n", + "├─TwinEncoder: 1-3 [2, 8192] --\n", + "│ └─Encoder: 2-3 [2, 16, 512] --\n", + "│ │ └─ModuleList: 3-16 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-29 [2, 2648, 512] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 2648, 512] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 64, 512] 32,768\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 64, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-1 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-2 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-3 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-4 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 64, 64, 2648] --\n", + "│ │ │ │ │ │ └─Linear: 7-5 [2, 64, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-6 [2, 64, 512] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 2648, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-7 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-8 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-9 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 64, 2648, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 64, 2648, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-11 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-12 [2, 2648, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-2 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-4 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-5 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-6 [2, 2648, 512] 262,656\n", + "│ │ │ └─EncoderLayer: 4-30 [2, 2648, 512] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 2648, 512] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 64, 512] 32,768\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 64, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-13 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-14 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-15 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-16 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 64, 64, 2648] --\n", + "│ │ │ │ │ │ └─Linear: 7-17 [2, 64, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-18 [2, 64, 512] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 2648, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-19 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-20 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-21 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 64, 2648, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 64, 2648, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-23 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-24 [2, 2648, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-4 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-10 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-11 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-12 [2, 2648, 512] 262,656\n", + "│ │ │ └─EncoderLayer: 4-31 [2, 2648, 512] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 2648, 512] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 64, 512] 32,768\n", + "│ │ │ �� │ └─MultiHeadAttention: 6-14 [2, 64, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-25 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-26 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-27 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-28 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 64, 64, 2648] --\n", + "│ │ │ │ │ │ └─Linear: 7-29 [2, 64, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-30 [2, 64, 512] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 2648, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-31 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-32 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-33 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 64, 2648, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 64, 2648, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-35 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-36 [2, 2648, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-6 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-16 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-17 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-18 [2, 2648, 512] 262,656\n", + "│ │ │ └─EncoderLayer: 4-32 [2, 16, 512] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-7 [2, 2648, 512] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 64, 512] 32,768\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-20 [2, 64, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-37 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-38 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-39 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-40 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 64, 64, 2648] --\n", + "│ │ │ │ │ │ └─Linear: 7-41 [2, 64, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-42 [2, 64, 512] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-21 [2, 2648, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-43 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-44 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-45 [2, 64, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 64, 2648, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 64, 2648, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-47 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-48 [2, 2648, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-8 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-22 [2, 2648, 512] 262,656\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-23 [2, 2648, 512] --\n", + "│ │ │ │ │ └─Linear: 6-24 [2, 2648, 512] 262,656\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-9 [2, 16, 512] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-25 [2, 16, 512] 8,192\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-26 [2, 16, 512] --\n", + "│ │ │ │ │ │ └─Linear: 7-49 [2, 16, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-50 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─Linear: 7-51 [2, 2648, 512] 262,144\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-52 [2, 64, 16, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 64, 16, 2648] --\n", + "│ │ │ │ │ │ └─Linear: 7-53 [2, 16, 512] 262,656\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-54 [2, 16, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-10 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-27 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-28 [2, 16, 512] --\n", + "│ │ │ │ │ └─Linear: 6-29 [2, 16, 512] (recursive)\n", + "│ └─Encoder: 2-4 [2, 16, 512] (recursive)\n", + "│ │ └─ModuleList: 3-16 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-33 [2, 661, 512] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-11 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-30 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-31 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-55 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-56 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-57 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 64, 64, 661] --\n", + "│ │ │ │ │ │ └─Linear: 7-59 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-60 [2, 64, 512] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-32 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-61 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-62 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-63 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 64, 661, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 64, 661, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-65 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-66 [2, 661, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-12 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-33 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-34 [2, 661, 512] --\n", + "│ │ │ │ │ └─Linear: 6-35 [2, 661, 512] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-34 [2, 661, 512] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-13 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-36 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-37 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-67 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-68 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-69 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 64, 64, 661] --\n", + "│ │ │ │ │ │ └─Linear: 7-71 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-72 [2, 64, 512] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-38 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-73 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-74 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-75 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 64, 661, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 64, 661, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-77 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-78 [2, 661, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-14 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-39 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-40 [2, 661, 512] --\n", + "│ │ │ │ │ └─Linear: 6-41 [2, 661, 512] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-35 [2, 661, 512] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-15 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-42 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-43 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-79 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-80 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-81 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 64, 64, 661] --\n", + "│ │ │ │ │ │ └─Linear: 7-83 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-84 [2, 64, 512] --\n", + "│ �� │ │ │ └─MultiHeadAttention: 6-44 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-85 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-86 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-87 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-88 [2, 64, 661, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-15 [2, 64, 661, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-89 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-90 [2, 661, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-16 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-45 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-46 [2, 661, 512] --\n", + "│ │ │ │ │ └─Linear: 6-47 [2, 661, 512] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-36 [2, 16, 512] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-17 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-48 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-49 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-91 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-92 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-93 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-94 [2, 64, 64, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-16 [2, 64, 64, 661] --\n", + "│ │ │ │ │ │ └─Linear: 7-95 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-96 [2, 64, 512] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-50 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-97 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-98 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-99 [2, 64, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-100 [2, 64, 661, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-17 [2, 64, 661, 64] --\n", + "│ │ │ │ │ │ └─Linear: 7-101 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-102 [2, 661, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-18 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-51 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-52 [2, 661, 512] --\n", + "│ │ │ │ │ └─Linear: 6-53 [2, 661, 512] (recursive)\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-19 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-54 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-55 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-103 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-104 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-105 [2, 661, 512] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-106 [2, 64, 16, 8] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-18 [2, 64, 16, 661] --\n", + "│ │ │ │ │ │ └─Linear: 7-107 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ │ └─LeakyHardsigmoid: 7-108 [2, 16, 512] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-20 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-56 [2, 16, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardtanh: 6-57 [2, 16, 512] --\n", + "│ │ │ │ │ └─Linear: 6-58 [2, 16, 512] (recursive)\n", + "├─Head: 1-4 [2] --\n", + "│ └─Sequential: 2-5 [2, 1] --\n", + "│ │ └─FeedForward: 3-17 [2, 128] --\n", + "│ │ │ └─Linear: 4-37 [2, 128] 1,048,704\n", + "│ │ │ └─LeakyHardsigmoid: 4-38 [2, 128] --\n", + "│ │ └─FeedForward: 3-18 [2, 128] --\n", + "│ │ │ └─Linear: 4-39 [2, 128] 16,512\n", + "│ │ │ └─LeakyHardsigmoid: 4-40 [2, 128] --\n", + "│ │ └─FeedForward: 3-19 [2, 128] --\n", + "│ │ │ └─Linear: 4-41 [2, 128] 16,512\n", + "│ │ │ └─LeakyHardsigmoid: 4-42 [2, 128] --\n", + "│ │ └─FeedForward: 3-20 [2, 128] --\n", + "│ │ │ └─Linear: 4-43 [2, 128] 16,512\n", + "│ │ │ └─LeakyHardsigmoid: 4-44 [2, 128] --\n", + "│ │ └─FeedForward: 3-21 [2, 128] --\n", + "│ │ │ └─Linear: 4-45 [2, 128] 16,512\n", + "│ │ │ └─LeakyHardsigmoid: 4-46 [2, 128] --\n", + "│ │ └─FeedForward: 3-22 [2, 128] --\n", + "│ │ │ └─Linear: 4-47 [2, 128] 16,512\n", + "│ │ │ └─LeakyHardsigmoid: 4-48 [2, 128] --\n", + "│ │ └─FeedForward: 3-23 [2, 128] --\n", + "│ │ │ └─Linear: 4-49 [2, 128] 16,512\n", + "│ │ │ └─LeakyHardsigmoid: 4-50 [2, 128] --\n", + "│ │ └─FeedForward: 3-24 [2, 1] --\n", + "│ │ │ └─Linear: 4-51 [2, 1] 129\n", + "│ │ │ └─LeakyHardsigmoid: 4-52 [2, 1] --\n", + "========================================================================================================================\n", + "Total params: 18,680,833\n", + "Trainable params: 18,680,833\n", + "Non-trainable params: 0\n", + "Total mult-adds (M): 73.97\n", + "========================================================================================================================\n", + "Input size (MB): 1.99\n", + "Forward/backward pass size (MB): 1079.48\n", + "Params size (MB): 74.72\n", + "Estimated Total Size (MB): 1156.19\n", + "========================================================================================================================" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from torchinfo import summary\n", + "\n", + "role_model = params[\"fixed_role_model\"]\n", + "s = train_set[0][role_model]\n", + "summary(model[role_model], input_size=((2, *s[0].shape), (2, *s[1].shape)), depth=9) # 8 max" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "0f42c4d1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T06:57:04.372051Z", + "iopub.status.busy": "2024-03-01T06:57:04.371747Z", + "iopub.status.idle": "2024-03-01T07:59:06.110637Z", + "shell.execute_reply": "2024-03-01T07:59:06.109597Z" + }, + "papermill": { + "duration": 3721.757757, + "end_time": "2024-03-01T07:59:06.112909", + "exception": false, + "start_time": "2024-03-01T06:57:04.355152", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g_loss_mul 0.1\n", + "Epoch 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.22352998348069378, 'avg_role_model_std_loss': 80.13195664776967, 'avg_role_model_mean_pred_loss': 0.09520609854183135, '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.22352998348069378, 'n_size': 320, 'n_batch': 80, 'duration': 103.12237620353699, 'duration_batch': 1.2890297025442123, 'duration_size': 0.3222574256360531, 'avg_pred_std': 0.0988283173581749}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.01245800144970417, 'avg_role_model_std_loss': 1.6089594815347597, 'avg_role_model_mean_pred_loss': 0.00019736949793127678, '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.01245800144970417, 'n_size': 80, 'n_batch': 20, 'duration': 20.080093383789062, 'duration_batch': 1.004004669189453, 'duration_size': 0.25100116729736327, 'avg_pred_std': 0.07783476307522505}\n", + "Epoch 1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.008753520530444803, 'avg_role_model_std_loss': 0.34713386677235575, 'avg_role_model_mean_pred_loss': 0.00011480308697381734, '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.008753520530444803, 'n_size': 320, 'n_batch': 80, 'duration': 103.45079112052917, 'duration_batch': 1.2931348890066148, 'duration_size': 0.3232837222516537, 'avg_pred_std': 0.19368809863808564}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.007529928936855867, 'avg_role_model_std_loss': 3.185711348353652, 'avg_role_model_mean_pred_loss': 0.00010870498384889516, '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.007529928936855867, 'n_size': 80, 'n_batch': 20, 'duration': 20.23315191268921, 'duration_batch': 1.0116575956344604, 'duration_size': 0.2529143989086151, 'avg_pred_std': 0.043344746553339066}\n", + "Epoch 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.006802400949891307, 'avg_role_model_std_loss': 0.3522556849198281, 'avg_role_model_mean_pred_loss': 0.0001498469549909341, '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.006802400949891307, 'n_size': 320, 'n_batch': 80, 'duration': 103.24245595932007, 'duration_batch': 1.290530699491501, 'duration_size': 0.3226326748728752, 'avg_pred_std': 0.18977850895607845}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.007473361069423845, 'avg_role_model_std_loss': 4.433246247235365, 'avg_role_model_mean_pred_loss': 0.00010783077031044641, '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.007473361069423845, 'n_size': 80, 'n_batch': 20, 'duration': 20.317150354385376, 'duration_batch': 1.0158575177192688, 'duration_size': 0.2539643794298172, 'avg_pred_std': 0.043154743919149044}\n", + "Epoch 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.008915021323991823, 'avg_role_model_std_loss': 0.718201418556464, 'avg_role_model_mean_pred_loss': 8.08643664615523e-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.008915021323991823, 'n_size': 320, 'n_batch': 80, 'duration': 103.76086711883545, 'duration_batch': 1.2970108389854431, 'duration_size': 0.3242527097463608, 'avg_pred_std': 0.18378724994836376}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.015541119105182587, 'avg_role_model_std_loss': 4.1963203363062345, 'avg_role_model_mean_pred_loss': 0.0004786531295351892, '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.015541119105182587, 'n_size': 80, 'n_batch': 20, 'duration': 20.26967740058899, 'duration_batch': 1.0134838700294495, 'duration_size': 0.2533709675073624, 'avg_pred_std': 0.03725434660445899}\n", + "Epoch 4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.006931817024451448, 'avg_role_model_std_loss': 0.35298403866354533, 'avg_role_model_mean_pred_loss': 7.142922729861737e-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.006931817024451448, 'n_size': 320, 'n_batch': 80, 'duration': 103.68316864967346, 'duration_batch': 1.2960396081209182, 'duration_size': 0.32400990203022956, 'avg_pred_std': 0.1754610677191522}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006783264396653976, 'avg_role_model_std_loss': 2.084030251805075, 'avg_role_model_mean_pred_loss': 0.00010564910719947917, '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.006783264396653976, 'n_size': 80, 'n_batch': 20, 'duration': 20.532756090164185, 'duration_batch': 1.0266378045082092, 'duration_size': 0.2566594511270523, 'avg_pred_std': 0.046784830396063626}\n", + "Epoch 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.005099834372958867, 'avg_role_model_std_loss': 0.0875181610394841, 'avg_role_model_mean_pred_loss': 9.274947589943961e-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.005099834372958867, 'n_size': 320, 'n_batch': 80, 'duration': 103.51723384857178, 'duration_batch': 1.2939654231071471, 'duration_size': 0.3234913557767868, 'avg_pred_std': 0.19479809664189815}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006807428642059676, 'avg_role_model_std_loss': 6.448283100366529, 'avg_role_model_mean_pred_loss': 8.50121301514406e-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.006807428642059676, 'n_size': 80, 'n_batch': 20, 'duration': 20.114439249038696, 'duration_batch': 1.005721962451935, 'duration_size': 0.2514304906129837, 'avg_pred_std': 0.04373221881105564}\n", + "Epoch 6\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00480109396030457, 'avg_role_model_std_loss': 0.9528829011607514, 'avg_role_model_mean_pred_loss': 5.0811379982423e-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.00480109396030457, 'n_size': 320, 'n_batch': 80, 'duration': 103.59416389465332, 'duration_batch': 1.2949270486831665, 'duration_size': 0.32373176217079164, 'avg_pred_std': 0.178886199297267}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006987621737061999, 'avg_role_model_std_loss': 4.279015872643868, 'avg_role_model_mean_pred_loss': 9.801611965674085e-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.006987621737061999, 'n_size': 80, 'n_batch': 20, 'duration': 20.27844500541687, 'duration_batch': 1.0139222502708436, 'duration_size': 0.2534805625677109, 'avg_pred_std': 0.04849170843372121}\n", + "Epoch 7\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00464072308905088, 'avg_role_model_std_loss': 0.1356045210827208, 'avg_role_model_mean_pred_loss': 6.834771834407436e-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.00464072308905088, 'n_size': 320, 'n_batch': 80, 'duration': 103.63158965110779, 'duration_batch': 1.2953948706388474, 'duration_size': 0.32384871765971185, 'avg_pred_std': 0.19017753867083229}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006893738606595434, 'avg_role_model_std_loss': 3.8557679186087626, 'avg_role_model_mean_pred_loss': 8.831684561805275e-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.006893738606595434, 'n_size': 80, 'n_batch': 20, 'duration': 20.594661712646484, 'duration_batch': 1.0297330856323241, 'duration_size': 0.25743327140808103, 'avg_pred_std': 0.04350378216477111}\n", + "Epoch 8\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004308880444841634, 'avg_role_model_std_loss': 0.06846157661166216, 'avg_role_model_mean_pred_loss': 5.0194533013741347e-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.004308880444841634, 'n_size': 320, 'n_batch': 80, 'duration': 103.90516233444214, 'duration_batch': 1.2988145291805266, 'duration_size': 0.32470363229513166, 'avg_pred_std': 0.18733386998064816}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006929469533497467, 'avg_role_model_std_loss': 3.2670128452096834, 'avg_role_model_mean_pred_loss': 7.968755999527843e-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.006929469533497467, 'n_size': 80, 'n_batch': 20, 'duration': 20.433101177215576, 'duration_batch': 1.021655058860779, 'duration_size': 0.2554137647151947, 'avg_pred_std': 0.04181941950228065}\n", + "Epoch 9\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004508837422326906, 'avg_role_model_std_loss': 0.08966287379656705, 'avg_role_model_mean_pred_loss': 8.609927907704219e-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.004508837422326906, 'n_size': 320, 'n_batch': 80, 'duration': 103.64076137542725, 'duration_batch': 1.2955095171928406, 'duration_size': 0.32387737929821014, 'avg_pred_std': 0.18831826079403982}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0070835084756254215, 'avg_role_model_std_loss': 4.297422426286471, 'avg_role_model_mean_pred_loss': 0.00011362928610676448, '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.0070835084756254215, 'n_size': 80, 'n_batch': 20, 'duration': 20.304687023162842, 'duration_batch': 1.015234351158142, 'duration_size': 0.2538085877895355, 'avg_pred_std': 0.0519675396499224}\n", + "Epoch 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004514601970731747, 'avg_role_model_std_loss': 0.1381884859496653, 'avg_role_model_mean_pred_loss': 8.4598984369378e-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.004514601970731747, 'n_size': 320, 'n_batch': 80, 'duration': 103.90474796295166, 'duration_batch': 1.2988093495368958, 'duration_size': 0.32470233738422394, 'avg_pred_std': 0.17621430779545336}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.005505984234332573, 'avg_role_model_std_loss': 5.328735202133521, 'avg_role_model_mean_pred_loss': 3.370500902892815e-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.005505984234332573, 'n_size': 80, 'n_batch': 20, 'duration': 20.54746174812317, 'duration_batch': 1.0273730874061584, 'duration_size': 0.2568432718515396, 'avg_pred_std': 0.051376725709997115}\n", + "Epoch 11\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004419548849091371, 'avg_role_model_std_loss': 0.07128540304256603, 'avg_role_model_mean_pred_loss': 6.623427232033962e-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.004419548849091371, 'n_size': 320, 'n_batch': 80, 'duration': 103.64773535728455, 'duration_batch': 1.2955966919660569, 'duration_size': 0.3238991729915142, 'avg_pred_std': 0.18890725779347123}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.005045573477400467, 'avg_role_model_std_loss': 4.834901636225572, 'avg_role_model_mean_pred_loss': 2.2054046640818116e-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.005045573477400467, 'n_size': 80, 'n_batch': 20, 'duration': 20.591118812561035, 'duration_batch': 1.0295559406280517, 'duration_size': 0.2573889851570129, 'avg_pred_std': 0.051232723612338306}\n", + "Epoch 12\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004236863098185495, 'avg_role_model_std_loss': 0.04387387494761443, 'avg_role_model_mean_pred_loss': 8.839865267179564e-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.004236863098185495, 'n_size': 320, 'n_batch': 80, 'duration': 103.94386696815491, 'duration_batch': 1.2992983371019364, 'duration_size': 0.3248245842754841, 'avg_pred_std': 0.1935716205276549}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.008129652022034861, 'avg_role_model_std_loss': 5.03432033594964, 'avg_role_model_mean_pred_loss': 0.00015811533519221043, '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.008129652022034861, 'n_size': 80, 'n_batch': 20, 'duration': 20.881214380264282, 'duration_batch': 1.044060719013214, 'duration_size': 0.2610151797533035, 'avg_pred_std': 0.04673133364703972}\n", + "Epoch 13\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004276435652536747, 'avg_role_model_std_loss': 0.0654336524629164, 'avg_role_model_mean_pred_loss': 4.581930034836763e-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.004276435652536747, 'n_size': 320, 'n_batch': 80, 'duration': 103.00667309761047, 'duration_batch': 1.287583413720131, 'duration_size': 0.32189585343003274, 'avg_pred_std': 0.18084844152908772}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.007877110847039149, 'avg_role_model_std_loss': 2.788165700972968, 'avg_role_model_mean_pred_loss': 0.0001813338503336759, '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.007877110847039149, 'n_size': 80, 'n_batch': 20, 'duration': 20.325989723205566, 'duration_batch': 1.0162994861602783, 'duration_size': 0.2540748715400696, 'avg_pred_std': 0.04980120111722499}\n", + "Epoch 14\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0038373295942619734, 'avg_role_model_std_loss': 0.0791764844770995, 'avg_role_model_mean_pred_loss': 4.599695211216274e-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.0038373295942619734, 'n_size': 320, 'n_batch': 80, 'duration': 103.24337792396545, 'duration_batch': 1.290542224049568, 'duration_size': 0.322635556012392, 'avg_pred_std': 0.18313483651727439}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0050060375331668185, 'avg_role_model_std_loss': 3.8634611237153877, 'avg_role_model_mean_pred_loss': 2.9480706338880223e-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.0050060375331668185, 'n_size': 80, 'n_batch': 20, 'duration': 20.198811054229736, 'duration_batch': 1.0099405527114869, 'duration_size': 0.2524851381778717, 'avg_pred_std': 0.058232192660216245}\n", + "Epoch 15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.003900589924239739, 'avg_role_model_std_loss': 0.10312648875277333, 'avg_role_model_mean_pred_loss': 2.1983545730452913e-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.003900589924239739, 'n_size': 320, 'n_batch': 80, 'duration': 103.35287404060364, 'duration_batch': 1.2919109255075454, 'duration_size': 0.32297773137688635, 'avg_pred_std': 0.19720614301040768}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.009117326361592858, 'avg_role_model_std_loss': 1.760603382944828, 'avg_role_model_mean_pred_loss': 0.00027292398581290066, '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.009117326361592858, 'n_size': 80, 'n_batch': 20, 'duration': 20.001904249191284, 'duration_batch': 1.0000952124595641, 'duration_size': 0.25002380311489103, 'avg_pred_std': 0.048848784435540436}\n", + "Epoch 16\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0018584069126518442, 'avg_role_model_std_loss': 0.04251637269783757, 'avg_role_model_mean_pred_loss': 1.0266101569923053e-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.0018584069126518442, 'n_size': 320, 'n_batch': 80, 'duration': 102.94779467582703, 'duration_batch': 1.286847433447838, 'duration_size': 0.3217118583619595, 'avg_pred_std': 0.18552915730979294}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.007703973473689984, 'avg_role_model_std_loss': 1.3023191384279245, 'avg_role_model_mean_pred_loss': 0.00017489787961899594, '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.007703973473689984, 'n_size': 80, 'n_batch': 20, 'duration': 20.37928342819214, 'duration_batch': 1.018964171409607, 'duration_size': 0.25474104285240173, 'avg_pred_std': 0.05299922423437238}\n", + "Epoch 17\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0008170823710770492, 'avg_role_model_std_loss': 0.018880133842297652, 'avg_role_model_mean_pred_loss': 5.023515140430146e-07, '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.0008170823710770492, 'n_size': 320, 'n_batch': 80, 'duration': 102.69966387748718, 'duration_batch': 1.2837457984685898, 'duration_size': 0.32093644961714746, 'avg_pred_std': 0.1925133554963395}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.00931795308351866, 'avg_role_model_std_loss': 2.071352872970965, 'avg_role_model_mean_pred_loss': 0.0002587945756321958, '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.00931795308351866, 'n_size': 80, 'n_batch': 20, 'duration': 19.96341824531555, 'duration_batch': 0.9981709122657776, 'duration_size': 0.2495427280664444, 'avg_pred_std': 0.053129641944542526}\n", + "Epoch 18\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0003576292982074847, 'avg_role_model_std_loss': 0.012536979420885785, 'avg_role_model_mean_pred_loss': 4.498594921749366e-08, '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.0003576292982074847, 'n_size': 320, 'n_batch': 80, 'duration': 100.82452273368835, 'duration_batch': 1.2603065341711044, 'duration_size': 0.3150766335427761, 'avg_pred_std': 0.19631691183894873}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.00876514861229225, 'avg_role_model_std_loss': 1.4645986258908124, 'avg_role_model_mean_pred_loss': 0.0002133372895583463, '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.00876514861229225, 'n_size': 80, 'n_batch': 20, 'duration': 19.451266765594482, 'duration_batch': 0.9725633382797241, 'duration_size': 0.24314083456993102, 'avg_pred_std': 0.05004617176018655}\n", + "Epoch 19\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0002510753680212474, 'avg_role_model_std_loss': 0.008272775144363465, 'avg_role_model_mean_pred_loss': 3.3253448800756014e-08, '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.0002510753680212474, 'n_size': 320, 'n_batch': 80, 'duration': 102.30520558357239, 'duration_batch': 1.2788150697946548, 'duration_size': 0.3197037674486637, 'avg_pred_std': 0.19034422542899848}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.00618170693560387, 'avg_role_model_std_loss': 1.5110018466951716, 'avg_role_model_mean_pred_loss': 7.781338554512241e-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.00618170693560387, 'n_size': 80, 'n_batch': 20, 'duration': 19.740620136260986, 'duration_batch': 0.9870310068130493, 'duration_size': 0.24675775170326233, 'avg_pred_std': 0.055138330021873114}\n", + "Epoch 20\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00028350398017664704, 'avg_role_model_std_loss': 0.019687367545015277, 'avg_role_model_mean_pred_loss': 2.482109546082703e-07, '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.00028350398017664704, 'n_size': 320, 'n_batch': 80, 'duration': 99.86743569374084, 'duration_batch': 1.2483429461717606, 'duration_size': 0.31208573654294014, 'avg_pred_std': 0.1864254915737547}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.007587061779486248, 'avg_role_model_std_loss': 1.3006179411045196, 'avg_role_model_mean_pred_loss': 0.00014909935981792798, '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.007587061779486248, 'n_size': 80, 'n_batch': 20, 'duration': 20.21121335029602, 'duration_batch': 1.0105606675148011, 'duration_size': 0.2526401668787003, 'avg_pred_std': 0.05435547353699803}\n", + "Epoch 21\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00025932476952164054, 'avg_role_model_std_loss': 0.007903821782640907, 'avg_role_model_mean_pred_loss': 9.45318477345975e-10, '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.00025932476952164054, 'n_size': 320, 'n_batch': 80, 'duration': 103.72837948799133, 'duration_batch': 1.2966047435998918, 'duration_size': 0.32415118589997294, 'avg_pred_std': 0.18518321572337298}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006430168935912662, 'avg_role_model_std_loss': 1.9212478918598208, 'avg_role_model_mean_pred_loss': 9.073310130256474e-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.006430168935912662, 'n_size': 80, 'n_batch': 20, 'duration': 19.81023097038269, 'duration_batch': 0.9905115485191345, 'duration_size': 0.24762788712978362, 'avg_pred_std': 0.05623150994069874}\n", + "Epoch 22\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00033484522286357786, 'avg_role_model_std_loss': 0.012371280277519502, 'avg_role_model_mean_pred_loss': 1.6720436467560026e-08, '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.00033484522286357786, 'n_size': 320, 'n_batch': 80, 'duration': 102.39797282218933, 'duration_batch': 1.2799746602773667, 'duration_size': 0.3199936650693417, 'avg_pred_std': 0.1927722441148944}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0066237156010174655, 'avg_role_model_std_loss': 1.626585018528567, 'avg_role_model_mean_pred_loss': 9.447487505163111e-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.0066237156010174655, 'n_size': 80, 'n_batch': 20, 'duration': 20.115633487701416, 'duration_batch': 1.0057816743850707, 'duration_size': 0.2514454185962677, 'avg_pred_std': 0.054200840881094337}\n", + "Epoch 23\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00015932412852635026, 'avg_role_model_std_loss': 0.025226200853674642, 'avg_role_model_mean_pred_loss': 3.639718875007858e-08, '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.00015932412852635026, 'n_size': 320, 'n_batch': 80, 'duration': 103.57392120361328, 'duration_batch': 1.294674015045166, 'duration_size': 0.3236685037612915, 'avg_pred_std': 0.1952298643416725}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0065823450138850605, 'avg_role_model_std_loss': 1.5178716897570212, 'avg_role_model_mean_pred_loss': 9.93379512048212e-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.0065823450138850605, 'n_size': 80, 'n_batch': 20, 'duration': 21.15859341621399, 'duration_batch': 1.0579296708106996, 'duration_size': 0.2644824177026749, 'avg_pred_std': 0.0543066727463156}\n", + "Epoch 24\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00012041164002258853, 'avg_role_model_std_loss': 0.006688666018078895, 'avg_role_model_mean_pred_loss': 1.577604157902094e-08, '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.00012041164002258853, 'n_size': 320, 'n_batch': 80, 'duration': 107.04027843475342, 'duration_batch': 1.3380034804344176, 'duration_size': 0.3345008701086044, 'avg_pred_std': 0.18686838666908442}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.007150729962449987, 'avg_role_model_std_loss': 1.6130354540884582, 'avg_role_model_mean_pred_loss': 0.00011762036998774761, '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.007150729962449987, 'n_size': 80, 'n_batch': 20, 'duration': 21.25710916519165, 'duration_batch': 1.0628554582595826, 'duration_size': 0.26571386456489565, 'avg_pred_std': 0.050873439060524106}\n", + "Epoch 25\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 8.769563716697349e-05, 'avg_role_model_std_loss': 0.005887569199180521, 'avg_role_model_mean_pred_loss': 3.494414894220867e-09, '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': 8.769563716697349e-05, 'n_size': 320, 'n_batch': 80, 'duration': 106.57941937446594, 'duration_batch': 1.3322427421808243, 'duration_size': 0.33306068554520607, 'avg_pred_std': 0.18599217470618895}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.00832268671510974, 'avg_role_model_std_loss': 1.4815574481464182, 'avg_role_model_mean_pred_loss': 0.00019259734704257792, '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.00832268671510974, 'n_size': 80, 'n_batch': 20, 'duration': 20.612091302871704, 'duration_batch': 1.0306045651435851, 'duration_size': 0.2576511412858963, 'avg_pred_std': 0.05257055321708322}\n", + "Epoch 26\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 8.882110219019524e-05, 'avg_role_model_std_loss': 0.002085926350794054, 'avg_role_model_mean_pred_loss': 2.3958830939162234e-09, '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': 8.882110219019524e-05, 'n_size': 320, 'n_batch': 80, 'duration': 106.64562821388245, 'duration_batch': 1.3330703526735306, 'duration_size': 0.33326758816838264, 'avg_pred_std': 0.20409600271377712}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006672654673457146, 'avg_role_model_std_loss': 1.4586342717834213, 'avg_role_model_mean_pred_loss': 9.671619951117094e-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.006672654673457146, 'n_size': 80, 'n_batch': 20, 'duration': 20.21643877029419, 'duration_batch': 1.0108219385147095, 'duration_size': 0.25270548462867737, 'avg_pred_std': 0.0529700854793191}\n", + "Epoch 27\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 7.043356762892472e-05, 'avg_role_model_std_loss': 0.005430679229713497, 'avg_role_model_mean_pred_loss': 4.15760022837944e-10, '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': 7.043356762892472e-05, 'n_size': 320, 'n_batch': 80, 'duration': 102.27982902526855, 'duration_batch': 1.278497862815857, 'duration_size': 0.31962446570396424, 'avg_pred_std': 0.2028546938439831}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.006019308035320137, 'avg_role_model_std_loss': 1.3263217964900833, 'avg_role_model_mean_pred_loss': 7.28448786667002e-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.006019308035320137, 'n_size': 80, 'n_batch': 20, 'duration': 20.296292066574097, 'duration_batch': 1.0148146033287049, 'duration_size': 0.2537036508321762, 'avg_pred_std': 0.05590685121715069}\n", + "Epoch 28\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 5.8602433459142846e-05, 'avg_role_model_std_loss': 0.002511359712229444, 'avg_role_model_mean_pred_loss': 2.106261276456074e-09, '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': 5.8602433459142846e-05, 'n_size': 320, 'n_batch': 80, 'duration': 101.94170665740967, 'duration_batch': 1.2742713332176208, 'duration_size': 0.3185678333044052, 'avg_pred_std': 0.18126765387132765}\n", + "Time out: 3605.992097377777/3600\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Eval loss {'role_model': 'lct_gan', 'n_size': 399, 'n_batch': 100, 'role_model_metrics': {'avg_loss': 0.0023591548596047225, 'avg_g_mag_loss': 4.580079086250558e-08, 'avg_g_cos_loss': 0.0, 'pred_duration': 2.3744425773620605, 'grad_duration': 4.456961393356323, 'total_duration': 6.831403970718384, 'pred_std': 0.07008553296327591, 'std_loss': 0.010716128163039684, 'mean_pred_loss': 4.918354079563869e-06, 'pred_rmse': 0.04857112839818001, 'pred_mae': 0.03671034052968025, 'pred_mape': 0.06946056336164474, 'grad_rmse': 0.015458883717656136, 'grad_mae': 0.011746696196496487, 'grad_mape': 0.16063837707042694}, '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.0023591548596047225, 'avg_g_mag_loss': 4.580079086250558e-08, 'avg_g_cos_loss': 0.0, 'avg_pred_duration': 2.3744425773620605, 'avg_grad_duration': 4.456961393356323, 'avg_total_duration': 6.831403970718384, 'avg_pred_std': 0.07008553296327591, 'avg_std_loss': 0.010716128163039684, 'avg_mean_pred_loss': 4.918354079563869e-06}, 'min_metrics': {'avg_loss': 0.0023591548596047225, 'avg_g_mag_loss': 4.580079086250558e-08, 'avg_g_cos_loss': 0.0, 'pred_duration': 2.3744425773620605, 'grad_duration': 4.456961393356323, 'total_duration': 6.831403970718384, 'pred_std': 0.07008553296327591, 'std_loss': 0.010716128163039684, 'mean_pred_loss': 4.918354079563869e-06, 'pred_rmse': 0.04857112839818001, 'pred_mae': 0.03671034052968025, 'pred_mape': 0.06946056336164474, 'grad_rmse': 0.015458883717656136, 'grad_mae': 0.011746696196496487, 'grad_mape': 0.16063837707042694}, 'model_metrics': {'lct_gan': {'avg_loss': 0.0023591548596047225, 'avg_g_mag_loss': 4.580079086250558e-08, 'avg_g_cos_loss': 0.0, 'pred_duration': 2.3744425773620605, 'grad_duration': 4.456961393356323, 'total_duration': 6.831403970718384, 'pred_std': 0.07008553296327591, 'std_loss': 0.010716128163039684, 'mean_pred_loss': 4.918354079563869e-06, 'pred_rmse': 0.04857112839818001, 'pred_mae': 0.03671034052968025, 'pred_mape': 0.06946056336164474, 'grad_rmse': 0.015458883717656136, 'grad_mae': 0.011746696196496487, 'grad_mape': 0.16063837707042694}}}\n" + ] + } + ], + "source": [ + "import torch\n", + "from ml_utility_loss.loss_learning.estimator.pipeline import train, train_2\n", + "from ml_utility_loss.loss_learning.estimator.process_simple import train_epoch, eval as _eval\n", + "from ml_utility_loss.params import GradientPenaltyMode\n", + "from ml_utility_loss.util import clear_memory\n", + "import time\n", + "#torch.autograd.set_detect_anomaly(True)\n", + "\n", + "clear_memory()\n", + "\n", + "opt = params[\"Optim\"](model.parameters())\n", + "loss = train_2(\n", + " [train_set, val_set, test_set],\n", + " preprocessor=preprocessor,\n", + " whole_model=model,\n", + " optim=opt,\n", + " log_dir=\"logs\",\n", + " checkpoint_dir=\"checkpoints\",\n", + " verbose=True,\n", + " allow_same_prediction=allow_same_prediction,\n", + " wandb=wandb if log_wandb else None,\n", + " study_name=study_name,\n", + " **params\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "9b514a07", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T07:59:06.154815Z", + "iopub.status.busy": "2024-03-01T07:59:06.154402Z", + "iopub.status.idle": "2024-03-01T07:59:06.159150Z", + "shell.execute_reply": "2024-03-01T07:59:06.158318Z" + }, + "papermill": { + "duration": 0.027765, + "end_time": "2024-03-01T07:59:06.160986", + "exception": false, + "start_time": "2024-03-01T07:59:06.133221", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "model = loss[\"whole_model\"]\n", + "opt = loss[\"optim\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "331a49e1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T07:59:06.204309Z", + "iopub.status.busy": "2024-03-01T07:59:06.203737Z", + "iopub.status.idle": "2024-03-01T07:59:06.329694Z", + "shell.execute_reply": "2024-03-01T07:59:06.328627Z" + }, + "papermill": { + "duration": 0.149027, + "end_time": "2024-03-01T07:59:06.333013", + "exception": false, + "start_time": "2024-03-01T07:59:06.183986", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import torch\n", + "from copy import deepcopy\n", + "\n", + "torch.save(deepcopy(model.state_dict()), \"model.pt\")\n", + "#torch.save(deepcopy(opt.state_dict()), \"optim.pt\")" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "123b4b17", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T07:59:06.377391Z", + "iopub.status.busy": "2024-03-01T07:59:06.376577Z", + "iopub.status.idle": "2024-03-01T07:59:06.693165Z", + "shell.execute_reply": "2024-03-01T07:59:06.692176Z" + }, + "papermill": { + "duration": 0.340956, + "end_time": "2024-03-01T07:59:06.695412", + "exception": false, + "start_time": "2024-03-01T07:59:06.354456", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "history = loss[\"history\"]\n", + "history.to_csv(\"history.csv\")\n", + "history[[\"avg_loss_train\", \"avg_loss_test\"]].plot()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "2586ba0a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T07:59:06.744179Z", + "iopub.status.busy": "2024-03-01T07:59:06.743845Z", + "iopub.status.idle": "2024-03-01T08:01:04.891031Z", + "shell.execute_reply": "2024-03-01T08:01:04.890005Z" + }, + "papermill": { + "duration": 118.173831, + "end_time": "2024-03-01T08:01:04.893531", + "exception": false, + "start_time": "2024-03-01T07:59:06.719700", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "\n", + "from ml_utility_loss.loss_learning.estimator.pipeline import eval\n", + "#eval_loss = loss[\"eval_loss\"]\n", + "\n", + "batch_size = params[\"batch_size_low\"] if \"batch_size_low\" in params else params[\"batch_size\"]\n", + "\n", + "eval_loss = eval(\n", + " test_set, model,\n", + " batch_size=batch_size,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "187137f6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:01:04.936305Z", + "iopub.status.busy": "2024-03-01T08:01:04.936009Z", + "iopub.status.idle": "2024-03-01T08:01:04.956174Z", + "shell.execute_reply": "2024-03-01T08:01:04.955302Z" + }, + "papermill": { + "duration": 0.043782, + "end_time": "2024-03-01T08:01:04.958202", + "exception": false, + "start_time": "2024-03-01T08:01:04.914420", + "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
lct_gan0.04.330839e-080.0023594.4585950.0117470.1606380.0154590.0000052.3799870.036710.0694610.0485710.0700860.0107166.838582
\n", + "
" + ], + "text/plain": [ + " avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration grad_mae \\\n", + "lct_gan 0.0 4.330839e-08 0.002359 4.458595 0.011747 \n", + "\n", + " grad_mape grad_rmse mean_pred_loss pred_duration pred_mae \\\n", + "lct_gan 0.160638 0.015459 0.000005 2.379987 0.03671 \n", + "\n", + " pred_mape pred_rmse pred_std std_loss total_duration \n", + "lct_gan 0.069461 0.048571 0.070086 0.010716 6.838582 " + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "metrics = pd.DataFrame(eval_loss[\"model_metrics\"]).T\n", + "metrics.to_csv(\"eval.csv\")\n", + "metrics" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "123d305b", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:01:04.999016Z", + "iopub.status.busy": "2024-03-01T08:01:04.998742Z", + "iopub.status.idle": "2024-03-01T08:01:05.590268Z", + "shell.execute_reply": "2024-03-01T08:01:05.589336Z" + }, + "papermill": { + "duration": 0.614328, + "end_time": "2024-03-01T08:01:05.592373", + "exception": false, + "start_time": "2024-03-01T08:01:04.978045", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from ml_utility_loss.util import clear_memory\n", + "clear_memory()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "a3eecc2a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:01:05.635590Z", + "iopub.status.busy": "2024-03-01T08:01:05.635268Z", + "iopub.status.idle": "2024-03-01T08:03:10.580103Z", + "shell.execute_reply": "2024-03-01T08:03:10.579304Z" + }, + "papermill": { + "duration": 124.968914, + "end_time": "2024-03-01T08:03:10.582484", + "exception": false, + "start_time": "2024-03-01T08:01:05.613570", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Caching in ../../../../treatment/_cache_test/lct_gan/all inf False\n" + ] + } + ], + "source": [ + "#\"\"\"\n", + "from ml_utility_loss.loss_learning.estimator.process import pred, pred_2\n", + "from ml_utility_loss.util import stack_samples\n", + "\n", + "#samples = test_set[list(range(len(test_set)))]\n", + "#y = {m: pred(model[m], s) for m, s in samples.items()}\n", + "y = pred_2(model, test_set, batch_size=batch_size)\n", + "#\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "6ab51db8", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:03:10.625502Z", + "iopub.status.busy": "2024-03-01T08:03:10.625187Z", + "iopub.status.idle": "2024-03-01T08:03:10.641540Z", + "shell.execute_reply": "2024-03-01T08:03:10.640870Z" + }, + "papermill": { + "duration": 0.04006, + "end_time": "2024-03-01T08:03:10.643439", + "exception": false, + "start_time": "2024-03-01T08:03:10.603379", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import pandas as pd\n", + "from ml_utility_loss.util import transpose_dict\n", + "\n", + "os.makedirs(\"pred\", exist_ok=True)\n", + "y2 = transpose_dict(y)\n", + "for k, v in y2.items():\n", + " df = pd.DataFrame(v)\n", + " df.to_csv(f\"pred/{k}.csv\")" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "d81a30f1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:03:10.683584Z", + "iopub.status.busy": "2024-03-01T08:03:10.683221Z", + "iopub.status.idle": "2024-03-01T08:03:10.688358Z", + "shell.execute_reply": "2024-03-01T08:03:10.687496Z" + }, + "papermill": { + "duration": 0.027411, + "end_time": "2024-03-01T08:03:10.690288", + "exception": false, + "start_time": "2024-03-01T08:03:10.662877", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'lct_gan': 0.5627981924771664}\n" + ] + } + ], + "source": [ + "print({k: sum(v[\"pred\"])/len(v[\"pred\"]) for k, v in y.items()})" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "id": "3b3ff322", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:03:10.732702Z", + "iopub.status.busy": "2024-03-01T08:03:10.731901Z", + "iopub.status.idle": "2024-03-01T08:03:11.120708Z", + "shell.execute_reply": "2024-03-01T08:03:11.119784Z" + }, + "papermill": { + "duration": 0.412224, + "end_time": "2024-03-01T08:03:11.122843", + "exception": false, + "start_time": "2024-03-01T08:03:10.710619", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from ml_utility_loss.loss_learning.visualization import plot_pred_density_2\n", + "\n", + "_ = plot_pred_density_2(y)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "id": "e79e4b0f", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:03:11.166723Z", + "iopub.status.busy": "2024-03-01T08:03:11.166412Z", + "iopub.status.idle": "2024-03-01T08:03:11.463758Z", + "shell.execute_reply": "2024-03-01T08:03:11.462881Z" + }, + "papermill": { + "duration": 0.321978, + "end_time": "2024-03-01T08:03:11.465833", + "exception": false, + "start_time": "2024-03-01T08:03:11.143855", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from ml_utility_loss.loss_learning.visualization import plot_density_3\n", + "\n", + "_ = plot_density_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "745adde1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:03:11.509477Z", + "iopub.status.busy": "2024-03-01T08:03:11.509173Z", + "iopub.status.idle": "2024-03-01T08:03:11.709396Z", + "shell.execute_reply": "2024-03-01T08:03:11.708588Z" + }, + "papermill": { + "duration": 0.22411, + "end_time": "2024-03-01T08:03:11.711393", + "exception": false, + "start_time": "2024-03-01T08:03:11.487283", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from ml_utility_loss.loss_learning.visualization import plot_box_3\n", + "\n", + "_ = plot_box_3(y2[\"pred\"], next(iter(y2[\"y\"].values())))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "eabe1bab", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-01T08:03:11.755669Z", + "iopub.status.busy": "2024-03-01T08:03:11.755336Z", + "iopub.status.idle": "2024-03-01T08:03:12.047269Z", + "shell.execute_reply": "2024-03-01T08:03:12.046369Z" + }, + "papermill": { + "duration": 0.316437, + "end_time": "2024-03-01T08:03:12.049444", + "exception": false, + "start_time": "2024-03-01T08:03:11.733007", + "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.022292, + "end_time": "2024-03-01T08:03:12.093896", + "exception": false, + "start_time": "2024-03-01T08:03:12.071604", + "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": 5135.39536, + "end_time": "2024-03-01T08:03:14.838135", + "environment_variables": {}, + "exception": null, + "input_path": "eval/treatment/lct_gan/42/mlu-eval.ipynb", + "output_path": "eval/treatment/lct_gan/42/mlu-eval.ipynb", + "parameters": { + "allow_same_prediction": true, + "dataset": "treatment", + "dataset_name": "treatment", + "debug": false, + "folder": "eval", + "gp": false, + "gp_multiply": false, + "log_wandb": false, + "param_index": 0, + "path": "eval/treatment/lct_gan/42", + "path_prefix": "../../../../", + "random_seed": 42, + "single_model": "lct_gan" + }, + "start_time": "2024-03-01T06:37:39.442775", + "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