diff --git "a/insurance/lct_gan/mlu-eval.ipynb" "b/insurance/lct_gan/mlu-eval.ipynb" new file mode 100644--- /dev/null +++ "b/insurance/lct_gan/mlu-eval.ipynb" @@ -0,0 +1,2441 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "982e76f5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-26T15:11:27.386652Z", + "iopub.status.busy": "2024-03-26T15:11:27.385797Z", + "iopub.status.idle": "2024-03-26T15:11:27.419554Z", + "shell.execute_reply": "2024-03-26T15:11:27.418692Z" + }, + "papermill": { + "duration": 0.048996, + "end_time": "2024-03-26T15:11:27.421555", + "exception": false, + "start_time": "2024-03-26T15:11:27.372559", + "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-26T15:11:27.446341Z", + "iopub.status.busy": "2024-03-26T15:11:27.445996Z", + "iopub.status.idle": "2024-03-26T15:11:27.452563Z", + "shell.execute_reply": "2024-03-26T15:11:27.451772Z" + }, + "papermill": { + "duration": 0.021004, + "end_time": "2024-03-26T15:11:27.454322", + "exception": false, + "start_time": "2024-03-26T15:11:27.433318", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n%cd /kaggle/working\\n#!git clone https://github.com/R-N/ml-utility-loss --depth=1 --single-branch --branch=main\\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 --depth=1 --single-branch --branch=main\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-26T15:11:27.477463Z", + "iopub.status.busy": "2024-03-26T15:11:27.477188Z", + "iopub.status.idle": "2024-03-26T15:11:27.481080Z", + "shell.execute_reply": "2024-03-26T15:11:27.480283Z" + }, + "papermill": { + "duration": 0.017728, + "end_time": "2024-03-26T15:11:27.483003", + "exception": false, + "start_time": "2024-03-26T15:11:27.465275", + "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-26T15:11:27.506237Z", + "iopub.status.busy": "2024-03-26T15:11:27.505987Z", + "iopub.status.idle": "2024-03-26T15:11:27.509940Z", + "shell.execute_reply": "2024-03-26T15:11:27.509134Z" + }, + "executionInfo": { + "elapsed": 678, + "status": "ok", + "timestamp": 1696841022168, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "ns5hFcVL2yvs", + "papermill": { + "duration": 0.017873, + "end_time": "2024-03-26T15:11:27.511897", + "exception": false, + "start_time": "2024-03-26T15:11:27.494024", + "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-26T15:11:27.535719Z", + "iopub.status.busy": "2024-03-26T15:11:27.535395Z", + "iopub.status.idle": "2024-03-26T15:11:27.541003Z", + "shell.execute_reply": "2024-03-26T15:11:27.540149Z" + }, + "papermill": { + "duration": 0.019808, + "end_time": "2024-03-26T15:11:27.542897", + "exception": false, + "start_time": "2024-03-26T15:11:27.523089", + "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": "39e26bbe", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-26T15:11:27.567995Z", + "iopub.status.busy": "2024-03-26T15:11:27.567704Z", + "iopub.status.idle": "2024-03-26T15:11:27.572458Z", + "shell.execute_reply": "2024-03-26T15:11:27.571649Z" + }, + "papermill": { + "duration": 0.019417, + "end_time": "2024-03-26T15:11:27.574274", + "exception": false, + "start_time": "2024-03-26T15:11:27.554857", + "status": "completed" + }, + "tags": [ + "injected-parameters" + ] + }, + "outputs": [], + "source": [ + "# Parameters\n", + "dataset = \"insurance\"\n", + "dataset_name = \"insurance\"\n", + "single_model = \"lct_gan\"\n", + "gp = True\n", + "gp_multiply = True\n", + "random_seed = 3\n", + "debug = False\n", + "folder = \"eval\"\n", + "path_prefix = \"../../../../\"\n", + "path = \"eval/insurance/lct_gan/3\"\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.011037, + "end_time": "2024-03-26T15:11:27.596218", + "exception": false, + "start_time": "2024-03-26T15:11:27.585181", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5f45b1d0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-26T15:11:27.619868Z", + "iopub.status.busy": "2024-03-26T15:11:27.619570Z", + "iopub.status.idle": "2024-03-26T15:11:27.628448Z", + "shell.execute_reply": "2024-03-26T15:11:27.627690Z" + }, + "executionInfo": { + "elapsed": 7, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "UdvXYv3c3LXy", + "papermill": { + "duration": 0.023014, + "end_time": "2024-03-26T15:11:27.630351", + "exception": false, + "start_time": "2024-03-26T15:11:27.607337", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/kaggle/working\n", + "/kaggle/working/eval/insurance/lct_gan/3\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-26T15:11:27.653930Z", + "iopub.status.busy": "2024-03-26T15:11:27.653657Z", + "iopub.status.idle": "2024-03-26T15:11:29.608562Z", + "shell.execute_reply": "2024-03-26T15:11:29.607578Z" + }, + "papermill": { + "duration": 1.969006, + "end_time": "2024-03-26T15:11:29.610577", + "exception": false, + "start_time": "2024-03-26T15:11:27.641571", + "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-26T15:11:29.636448Z", + "iopub.status.busy": "2024-03-26T15:11:29.636020Z", + "iopub.status.idle": "2024-03-26T15:11:29.648363Z", + "shell.execute_reply": "2024-03-26T15:11:29.647447Z" + }, + "papermill": { + "duration": 0.027471, + "end_time": "2024-03-26T15:11:29.650335", + "exception": false, + "start_time": "2024-03-26T15:11:29.622864", + "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-26T15:11:29.674921Z", + "iopub.status.busy": "2024-03-26T15:11:29.674227Z", + "iopub.status.idle": "2024-03-26T15:11:29.681025Z", + "shell.execute_reply": "2024-03-26T15:11:29.680255Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "Vrl2QkoV3o_8", + "papermill": { + "duration": 0.020903, + "end_time": "2024-03-26T15:11:29.682921", + "exception": false, + "start_time": "2024-03-26T15:11:29.662018", + "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-26T15:11:29.706777Z", + "iopub.status.busy": "2024-03-26T15:11:29.706506Z", + "iopub.status.idle": "2024-03-26T15:11:29.800272Z", + "shell.execute_reply": "2024-03-26T15:11:29.799447Z" + }, + "executionInfo": { + "elapsed": 6, + "status": "ok", + "timestamp": 1696841022169, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "TilUuFk9vqMb", + "papermill": { + "duration": 0.108394, + "end_time": "2024-03-26T15:11:29.802588", + "exception": false, + "start_time": "2024-03-26T15:11:29.694194", + "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-26T15:11:29.829803Z", + "iopub.status.busy": "2024-03-26T15:11:29.829512Z", + "iopub.status.idle": "2024-03-26T15:11:34.481606Z", + "shell.execute_reply": "2024-03-26T15:11:34.480800Z" + }, + "executionInfo": { + "elapsed": 3113, + "status": "ok", + "timestamp": 1696841025277, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "7Abt8nStvr9Z", + "papermill": { + "duration": 4.668801, + "end_time": "2024-03-26T15:11:34.483976", + "exception": false, + "start_time": "2024-03-26T15:11:29.815175", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-03-26 15:11:32.116367: 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-26 15:11:32.116434: 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-26 15:11:32.118072: 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-26T15:11:34.508965Z", + "iopub.status.busy": "2024-03-26T15:11:34.508378Z", + "iopub.status.idle": "2024-03-26T15:11:34.515802Z", + "shell.execute_reply": "2024-03-26T15:11:34.515104Z" + }, + "papermill": { + "duration": 0.02189, + "end_time": "2024-03-26T15:11:34.517618", + "exception": false, + "start_time": "2024-03-26T15:11:34.495728", + "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-26T15:11:34.543039Z", + "iopub.status.busy": "2024-03-26T15:11:34.542763Z", + "iopub.status.idle": "2024-03-26T15:11:43.009224Z", + "shell.execute_reply": "2024-03-26T15:11:43.008182Z" + }, + "executionInfo": { + "elapsed": 20137, + "status": "ok", + "timestamp": 1696841045408, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "tbaguWxAvtPi", + "papermill": { + "duration": 8.481876, + "end_time": "2024-03-26T15:11:43.011682", + "exception": false, + "start_time": "2024-03-26T15:11:34.529806", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", + " warnings.warn(\n", + "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:119: ConvergenceWarning: Number of distinct clusters (6) found smaller than n_clusters (10). Possibly due to duplicate points in X.\n", + " .fit(X)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/sklearn/mixture/_base.py:274: ConvergenceWarning: Initialization 1 did not converge. Try different init parameters, or increase max_iter, tol or check for degenerate data.\n", + " warnings.warn(\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/sklearn/preprocessing/_encoders.py:868: FutureWarning: `sparse` was renamed to `sparse_output` in version 1.2 and will be removed in 1.4. `sparse_output` is ignored unless you leave `sparse` to its default value.\n", + " warnings.warn(\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.preprocessing import DataPreprocessor\n", + "\n", + "preprocessor = DataPreprocessor(\n", + " task,\n", + " target=target,\n", + " cat_features=cat_features,\n", + " mixed_features=mixed_features,\n", + " longtail_features=longtail_features,\n", + " integer_features=integer_features,\n", + " lct_ae_embedding_size=lct_ae_embedding_size,\n", + " lct_ae_params=lct_ae_params,\n", + " lct_ae=lct_ae,\n", + " tab_ddpm_normalization=tab_ddpm_normalization,\n", + " tab_ddpm_cat_encoding=tab_ddpm_cat_encoding,\n", + " tab_ddpm_y_policy=tab_ddpm_y_policy,\n", + " tab_ddpm_is_y_cond=tab_ddpm_is_y_cond,\n", + " realtabformer_embedding=rtf_embed,\n", + " realtabformer_params=rtf_params,\n", + ")\n", + "preprocessor.fit(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a9c9b110", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "execution": { + "iopub.execute_input": "2024-03-26T15:11:43.039872Z", + "iopub.status.busy": "2024-03-26T15:11:43.039463Z", + "iopub.status.idle": "2024-03-26T15:11:43.046117Z", + "shell.execute_reply": "2024-03-26T15:11:43.045279Z" + }, + "executionInfo": { + "elapsed": 13, + "status": "ok", + "timestamp": 1696841045411, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "OxUH_GBEv2qK", + "outputId": "76464c90-3baf-4bdc-a955-6f4fddc16b9c", + "papermill": { + "duration": 0.023643, + "end_time": "2024-03-26T15:11:43.048107", + "exception": false, + "start_time": "2024-03-26T15:11:43.024464", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'tvae': 36,\n", + " 'realtabformer': (19, 551, Embedding(551, 800), True),\n", + " 'lct_gan': 29,\n", + " 'tab_ddpm_concat': 12}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "preprocessor.adapter_sizes" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "3cb9ed90", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-26T15:11:43.073075Z", + "iopub.status.busy": "2024-03-26T15:11:43.072825Z", + "iopub.status.idle": "2024-03-26T15:11:43.077485Z", + "shell.execute_reply": "2024-03-26T15:11:43.076731Z" + }, + "papermill": { + "duration": 0.019439, + "end_time": "2024-03-26T15:11:43.079481", + "exception": false, + "start_time": "2024-03-26T15:11:43.060042", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_dataset_3_factory\n", + "\n", + "datasetsn = load_dataset_3_factory(\n", + " dataset_dir=os.path.join(path_prefix, \"ml-utility-loss/\"),\n", + " dataset_name=dataset_name,\n", + " preprocessor=preprocessor,\n", + " cache_dir=path_prefix,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "ad1eb833", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-26T15:11:43.104939Z", + "iopub.status.busy": "2024-03-26T15:11:43.104696Z", + "iopub.status.idle": "2024-03-26T15:11:43.168541Z", + "shell.execute_reply": "2024-03-26T15:11:43.167600Z" + }, + "papermill": { + "duration": 0.078936, + "end_time": "2024-03-26T15:11:43.170495", + "exception": false, + "start_time": "2024-03-26T15:11:43.091559", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Caching in ../../../../insurance/_cache_aug_test/lct_gan/all inf False\n", + "../../../../ml-utility-loss/aug_test/insurance 0\n", + "Caching in ../../../../insurance/_cache_bs_test/lct_gan/all inf False\n", + "../../../../ml-utility-loss/bs_test/insurance 0\n", + "Caching in ../../../../insurance/_cache_synth_test/lct_gan/all inf False\n", + "../../../../ml-utility-loss/synthetics/insurance 600\n", + "600\n" + ] + } + ], + "source": [ + "from ml_utility_loss.loss_learning.estimator.pipeline import load_dataset_4\n", + "\n", + "test_set = load_dataset_4(\n", + " dataset_dir=os.path.join(path_prefix, \"ml-utility-loss/\"),\n", + " dataset_name=dataset_name,\n", + " preprocessor=preprocessor,\n", + " model=single_model,\n", + " cache_dir=path_prefix,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "14ff8b40", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-26T15:11:43.197320Z", + "iopub.status.busy": "2024-03-26T15:11:43.197043Z", + "iopub.status.idle": "2024-03-26T15:11:43.517226Z", + "shell.execute_reply": "2024-03-26T15:11:43.516318Z" + }, + "executionInfo": { + "elapsed": 588, + "status": "ok", + "timestamp": 1696841049215, + "user": { + "displayName": "Rizqi Nur", + "userId": "09644007964068789560" + }, + "user_tz": -420 + }, + "id": "NgahtU1q9uLO", + "papermill": { + "duration": 0.335995, + "end_time": "2024-03-26T15:11:43.519210", + "exception": false, + "start_time": "2024-03-26T15:11:43.183215", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Body': 'twin_encoder',\n", + " 'loss_balancer_meta': True,\n", + " 'loss_balancer_log': False,\n", + " 'loss_balancer_lbtw': False,\n", + " 'pma_skip_small': False,\n", + " 'isab_skip_small': False,\n", + " 'layer_norm': False,\n", + " 'pma_layer_norm': False,\n", + " 'attn_residual': True,\n", + " 'tf_n_layers_dec': False,\n", + " 'tf_isab_rank': 0,\n", + " 'tf_layer_norm': False,\n", + " 'tf_pma_start': -1,\n", + " 'head_n_seeds': 0,\n", + " 'tf_pma_low': 16,\n", + " 'dropout': 0,\n", + " 'combine_mode': 'diff_left',\n", + " 'tf_isab_mode': 'separate',\n", + " 'grad_loss_fn': torch.Tensor>,\n", + " 'single_model': True,\n", + " 'bias': True,\n", + " 'bias_final': True,\n", + " 'pma_ffn_mode': 'none',\n", + " 'patience': 10,\n", + " 'inds_init_mode': 'fixnorm',\n", + " 'grad_clip': 0.7,\n", + " 'head_final_mul': 'identity',\n", + " 'gradient_penalty_mode': {'gradient_penalty': True,\n", + " 'forward_once': 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", + " 'bias_lr_mul': 1.0,\n", + " 'bias_weight_decay': 0.05,\n", + " 'loss_balancer_beta': 0.79,\n", + " 'loss_balancer_r': 0.95,\n", + " 'dataset_size': 2048,\n", + " 'batch_size': 8,\n", + " 'epochs': 100,\n", + " 'n_warmup_steps': 100,\n", + " 'Optim': torch_optimizer.diffgrad.DiffGrad,\n", + " 'fixed_role_model': 'lct_gan',\n", + " 'd_model': 256,\n", + " 'attn_activation': torch.nn.modules.activation.LeakyReLU,\n", + " 'tf_d_inner': 512,\n", + " 'tf_n_layers_enc': 4,\n", + " 'tf_n_head': 64,\n", + " 'tf_activation': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'tf_activation_final': ml_utility_loss.activations.LeakyHardsigmoid,\n", + " 'ada_d_hid': 1024,\n", + " 'ada_n_layers': 7,\n", + " 'ada_activation': torch.nn.modules.activation.ReLU,\n", + " 'ada_activation_final': torch.nn.modules.activation.Softsign,\n", + " 'head_d_hid': 128,\n", + " 'head_n_layers': 9,\n", + " 'head_n_head': 64,\n", + " 'head_activation': torch.nn.modules.activation.PReLU,\n", + " 'head_activation_final': torch.nn.modules.activation.Softsign,\n", + " 'models': ['lct_gan'],\n", + " 'max_seconds': 3600,\n", + " 'tf_lora': False,\n", + " 'tf_num_inds': 32,\n", + " 'ada_n_seeds': 0,\n", + " 'gradient_penalty_kwargs': {'mag_loss': True,\n", + " 'mse_mag': True,\n", + " 'mag_corr': False,\n", + " 'seq_mag': False,\n", + " 'cos_loss': False,\n", + " 'mag_corr_kwargs': {'only_sign': False},\n", + " 'cos_loss_kwargs': {'only_sign': True, 'cos_matrix': False},\n", + " 'mse_mag_kwargs': {'target': 0.1, 'multiply': True, 'forgive_over': True}}}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import ml_utility_loss.loss_learning.estimator.params2 as PARAMS\n", + "from ml_utility_loss.tuning import map_parameters\n", + "from ml_utility_loss.loss_learning.estimator.params.default import update_param_space, update_param_space_2\n", + "import wandb\n", + "\n", + "#\"\"\"\n", + "param_space = {\n", + " **getattr(PARAMS, dataset_name).PARAM_SPACE,\n", + "}\n", + "# params = {\n", + "# **getattr(PARAMS, dataset_name).BESTS[param_index],\n", + "# }\n", + "params = getattr(PARAMS, dataset_name).BEST_DICT[gp][gp_multiply][single_model]\n", + "params = {\n", + " **getattr(PARAMS, dataset_name).DEFAULTS,\n", + " **params,\n", + "}\n", + "if isinstance(params, (list, tuple)):\n", + " params = params[param_index]\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-26T15:11:43.545198Z", + "iopub.status.busy": "2024-03-26T15:11:43.544912Z", + "iopub.status.idle": "2024-03-26T15:11:43.646358Z", + "shell.execute_reply": "2024-03-26T15:11:43.645446Z" + }, + "papermill": { + "duration": 0.116761, + "end_time": "2024-03-26T15:11:43.648456", + "exception": false, + "start_time": "2024-03-26T15:11:43.531695", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Caching in ../../../../insurance/_cache_aug_train/lct_gan/all inf False\n", + "split df ratio is 0\n", + "../../../../ml-utility-loss/aug_train/insurance [400, 0]\n", + "Caching in ../../../../insurance/_cache_aug_val/lct_gan/all inf False\n", + "split df ratio is 1\n", + "../../../../ml-utility-loss/aug_val/insurance [0, 200]\n", + "Caching in ../../../../insurance/_cache_bs_train/lct_gan/all inf False\n", + "split df ratio is 0\n", + "../../../../ml-utility-loss/bs_train/insurance [100, 0]\n", + "Caching in ../../../../insurance/_cache_bs_val/lct_gan/all inf False\n", + "split df ratio is 1\n", + "../../../../ml-utility-loss/bs_val/insurance [0, 50]\n", + "Caching in ../../../../insurance/_cache_synth/lct_gan/all inf False\n", + "Splitting without random!\n", + "Split with reverse index!\n", + "../../../../ml-utility-loss/synthetics/insurance [400, 200]\n", + "[900, 450]\n", + "[900, 450]\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-26T15:11:43.675708Z", + "iopub.status.busy": "2024-03-26T15:11:43.675364Z", + "iopub.status.idle": "2024-03-26T15:11:44.094325Z", + "shell.execute_reply": "2024-03-26T15:11:44.093448Z" + }, + "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.434814, + "end_time": "2024-03-26T15:11:44.096306", + "exception": false, + "start_time": "2024-03-26T15:11:43.661492", + "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", + "['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-26T15:11:44.124295Z", + "iopub.status.busy": "2024-03-26T15:11:44.123994Z", + "iopub.status.idle": "2024-03-26T15:11:44.128047Z", + "shell.execute_reply": "2024-03-26T15:11:44.127274Z" + }, + "papermill": { + "duration": 0.020133, + "end_time": "2024-03-26T15:11:44.129857", + "exception": false, + "start_time": "2024-03-26T15:11:44.109724", + "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-26T15:11:44.155930Z", + "iopub.status.busy": "2024-03-26T15:11:44.155651Z", + "iopub.status.idle": "2024-03-26T15:11:44.162412Z", + "shell.execute_reply": "2024-03-26T15:11:44.161630Z" + }, + "papermill": { + "duration": 0.022141, + "end_time": "2024-03-26T15:11:44.164306", + "exception": false, + "start_time": "2024-03-26T15:11:44.142165", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "9631369" + ] + }, + "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-26T15:11:44.190208Z", + "iopub.status.busy": "2024-03-26T15:11:44.189948Z", + "iopub.status.idle": "2024-03-26T15:11:44.277547Z", + "shell.execute_reply": "2024-03-26T15:11:44.276663Z" + }, + "papermill": { + "duration": 0.102872, + "end_time": "2024-03-26T15:11:44.279505", + "exception": false, + "start_time": "2024-03-26T15:11:44.176633", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "========================================================================================================================\n", + "Layer (type:depth-idx) Output Shape Param #\n", + "========================================================================================================================\n", + "MLUtilitySingle [2, 1071, 29] --\n", + "├─Adapter: 1-1 [2, 1071, 29] --\n", + "│ └─Sequential: 2-1 [2, 1071, 256] --\n", + "│ │ └─FeedForward: 3-1 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-1 [2, 1071, 1024] 30,720\n", + "│ │ │ └─ReLU: 4-2 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-2 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-3 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-4 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-3 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-5 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-6 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-4 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-7 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-8 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-5 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-9 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-10 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-6 [2, 1071, 1024] --\n", + "│ │ │ └─Linear: 4-11 [2, 1071, 1024] 1,049,600\n", + "│ │ │ └─ReLU: 4-12 [2, 1071, 1024] --\n", + "│ │ └─FeedForward: 3-7 [2, 1071, 256] --\n", + "│ │ │ └─Linear: 4-13 [2, 1071, 256] 262,400\n", + "│ │ │ └─Softsign: 4-14 [2, 1071, 256] --\n", + "├─Adapter: 1-2 [2, 267, 29] (recursive)\n", + "│ └─Sequential: 2-2 [2, 267, 256] (recursive)\n", + "│ │ └─FeedForward: 3-8 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-15 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-16 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-9 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-17 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-18 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-10 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-19 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-20 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-11 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-21 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-22 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-12 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-23 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-24 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-13 [2, 267, 1024] (recursive)\n", + "│ │ │ └─Linear: 4-25 [2, 267, 1024] (recursive)\n", + "│ │ │ └─ReLU: 4-26 [2, 267, 1024] --\n", + "│ │ └─FeedForward: 3-14 [2, 267, 256] (recursive)\n", + "│ │ │ └─Linear: 4-27 [2, 267, 256] (recursive)\n", + "│ │ │ └─Softsign: 4-28 [2, 267, 256] --\n", + "├─TwinEncoder: 1-3 [2, 4096] --\n", + "│ └─Encoder: 2-3 [2, 16, 256] --\n", + "│ │ └─ModuleList: 3-16 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-29 [2, 1071, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-1 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-1 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-2 [2, 32, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-1 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-2 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-3 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-4 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-1 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-5 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-6 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-3 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-7 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-8 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-9 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-10 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-2 [2, 64, 1071, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-11 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-12 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-2 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-4 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-5 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-6 [2, 1071, 256] 131,328\n", + "│ │ │ └─EncoderLayer: 4-30 [2, 1071, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-3 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-7 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-8 [2, 32, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-13 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-14 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-15 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-16 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-3 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-17 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-18 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-9 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-19 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-20 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-21 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-22 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-4 [2, 64, 1071, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-23 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-24 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-4 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-10 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-11 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-12 [2, 1071, 256] 131,328\n", + "│ │ │ └─EncoderLayer: 4-31 [2, 1071, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-5 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-13 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-14 [2, 32, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-25 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-26 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-27 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-28 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-5 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-29 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-30 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-15 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-31 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-32 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-33 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-34 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-6 [2, 64, 1071, 32] --\n", + "�� │ │ │ │ │ └─Linear: 7-35 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-36 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-6 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-16 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-17 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-18 [2, 1071, 256] 131,328\n", + "│ │ │ └─EncoderLayer: 4-32 [2, 16, 256] --\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-7 [2, 1071, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-19 [2, 32, 256] 8,192\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-20 [2, 32, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-37 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-38 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-39 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-40 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-7 [2, 64, 32, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-41 [2, 32, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-42 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-21 [2, 1071, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-43 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-44 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-45 [2, 32, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-46 [2, 64, 1071, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-8 [2, 64, 1071, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-47 [2, 1071, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-48 [2, 1071, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-8 [2, 1071, 256] --\n", + "│ │ │ │ │ └─Linear: 6-22 [2, 1071, 512] 131,584\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-23 [2, 1071, 512] --\n", + "│ │ │ │ │ └─Linear: 6-24 [2, 1071, 256] 131,328\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-9 [2, 16, 256] --\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-25 [2, 16, 256] 4,096\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-26 [2, 16, 256] --\n", + "│ │ │ │ │ │ └─Linear: 7-49 [2, 16, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-50 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─Linear: 7-51 [2, 1071, 256] 65,536\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-52 [2, 64, 16, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-9 [2, 64, 16, 1071] --\n", + "│ │ │ │ │ │ └─Linear: 7-53 [2, 16, 256] 65,792\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-54 [2, 16, 256] --\n", + "│ └─Encoder: 2-4 [2, 16, 256] (recursive)\n", + "│ │ └─ModuleList: 3-16 -- (recursive)\n", + "│ │ │ └─EncoderLayer: 4-33 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-10 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-27 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-28 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-55 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-56 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-57 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-58 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-10 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-59 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-60 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-29 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-61 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-62 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-63 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-64 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-11 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-65 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-66 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-11 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-30 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-31 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-32 [2, 267, 256] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-34 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-12 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-33 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-34 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-67 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-68 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-69 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-70 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-12 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-71 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-72 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-35 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-73 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-74 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-75 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-76 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-13 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-77 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-78 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-13 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-36 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-37 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-38 [2, 267, 256] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-35 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-14 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-39 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-40 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-79 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-80 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-81 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-82 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-14 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-83 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-84 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-41 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-85 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-86 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-87 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-88 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-15 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-89 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-90 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-15 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-42 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-43 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-44 [2, 267, 256] (recursive)\n", + "│ │ │ └─EncoderLayer: 4-36 [2, 16, 256] (recursive)\n", + "│ │ │ │ └─SimpleInducedSetAttention: 5-16 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-45 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-46 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-91 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-92 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-93 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-94 [2, 64, 32, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-16 [2, 64, 32, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-95 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-96 [2, 32, 256] --\n", + "│ │ │ │ │ └─MultiHeadAttention: 6-47 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-97 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-98 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-99 [2, 32, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-100 [2, 64, 267, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-17 [2, 64, 267, 32] --\n", + "│ │ │ │ │ │ └─Linear: 7-101 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-102 [2, 267, 256] --\n", + "│ │ │ │ └─DoubleFeedForward: 5-17 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ └─Linear: 6-48 [2, 267, 512] (recursive)\n", + "│ │ │ │ │ └─LeakyHardsigmoid: 6-49 [2, 267, 512] --\n", + "│ │ │ │ │ └─Linear: 6-50 [2, 267, 256] (recursive)\n", + "│ │ │ │ └─PoolingByMultiheadAttention: 5-18 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ └─TensorInductionPoint: 6-51 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ └─SimpleMultiHeadAttention: 6-52 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-103 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-104 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─Linear: 7-105 [2, 267, 256] (recursive)\n", + "│ │ │ │ │ │ └─ScaledDotProductAttention: 7-106 [2, 64, 16, 4] --\n", + "│ │ │ │ │ │ │ └─Softmax: 8-18 [2, 64, 16, 267] --\n", + "│ │ │ │ │ │ └─Linear: 7-107 [2, 16, 256] (recursive)\n", + "│ │ │ │ │ │ └─LeakyReLU: 7-108 [2, 16, 256] --\n", + "├─Head: 1-4 [2] --\n", + "│ └─Sequential: 2-5 [2, 1] --\n", + "│ │ └─FeedForward: 3-17 [2, 128] --\n", + "│ │ │ └─Linear: 4-37 [2, 128] 524,416\n", + "│ │ │ └─PReLU: 4-38 [2, 128] 1\n", + "│ │ └─FeedForward: 3-18 [2, 128] --\n", + "│ │ │ └─Linear: 4-39 [2, 128] 16,512\n", + "│ │ │ └─PReLU: 4-40 [2, 128] 1\n", + "│ │ └─FeedForward: 3-19 [2, 128] --\n", + "│ │ │ └─Linear: 4-41 [2, 128] 16,512\n", + "│ │ │ └─PReLU: 4-42 [2, 128] 1\n", + "│ │ └─FeedForward: 3-20 [2, 128] --\n", + "│ │ │ └─Linear: 4-43 [2, 128] 16,512\n", + "│ │ │ └─PReLU: 4-44 [2, 128] 1\n", + "│ │ └─FeedForward: 3-21 [2, 128] --\n", + "│ │ │ └─Linear: 4-45 [2, 128] 16,512\n", + "│ │ │ └─PReLU: 4-46 [2, 128] 1\n", + "│ │ └─FeedForward: 3-22 [2, 128] --\n", + "│ │ │ └─Linear: 4-47 [2, 128] 16,512\n", + "│ │ │ └─PReLU: 4-48 [2, 128] 1\n", + "│ │ └─FeedForward: 3-23 [2, 128] --\n", + "│ │ │ └─Linear: 4-49 [2, 128] 16,512\n", + "│ │ │ └─PReLU: 4-50 [2, 128] 1\n", + "│ │ └─FeedForward: 3-24 [2, 128] --\n", + "│ │ │ └─Linear: 4-51 [2, 128] 16,512\n", + "│ │ │ └─PReLU: 4-52 [2, 128] 1\n", + "│ │ └─FeedForward: 3-25 [2, 1] --\n", + "│ │ │ └─Linear: 4-53 [2, 1] 129\n", + "│ │ │ └─Softsign: 4-54 [2, 1] --\n", + "========================================================================================================================\n", + "Total params: 9,631,369\n", + "Trainable params: 9,631,369\n", + "Non-trainable params: 0\n", + "Total mult-adds (M): 37.10\n", + "========================================================================================================================\n", + "Input size (MB): 0.31\n", + "Forward/backward pass size (MB): 307.09\n", + "Params size (MB): 38.53\n", + "Estimated Total Size (MB): 345.93\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-26T15:11:44.310299Z", + "iopub.status.busy": "2024-03-26T15:11:44.309495Z", + "iopub.status.idle": "2024-03-26T16:12:56.494119Z", + "shell.execute_reply": "2024-03-26T16:12:56.493098Z" + }, + "papermill": { + "duration": 3672.218682, + "end_time": "2024-03-26T16:12:56.512737", + "exception": false, + "start_time": "2024-03-26T15:11:44.294055", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3 datasets [900, 450, 600]\n", + "Creating model of type \n", + "[*] Embedding False True\n", + "g_loss_mul 0.1\n", + "Epoch 0\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.04117060134704742, 'avg_role_model_std_loss': 0.8109188975505845, 'avg_role_model_mean_pred_loss': 0.012500455402668946, 'avg_role_model_g_mag_loss': 0.4644619934923119, '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.041821396528846685, 'n_size': 900, 'n_batch': 113, 'duration': 145.03757858276367, 'duration_batch': 1.2835183945377315, 'duration_size': 0.16115286509195964, 'avg_pred_std': 0.14025535803716793}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.017303582032004165, 'avg_role_model_std_loss': 2.386988934791206, 'avg_role_model_mean_pred_loss': 0.0012482430997963294, '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.017303582032004165, 'n_size': 450, 'n_batch': 57, 'duration': 47.186697244644165, 'duration_batch': 0.8278367937656871, 'duration_size': 0.10485932721032036, 'avg_pred_std': 0.04331476881838681}\n", + "Epoch 1\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00788458850596928, 'avg_role_model_std_loss': 1.4652959933179, 'avg_role_model_mean_pred_loss': 0.0002524864735020014, 'avg_role_model_g_mag_loss': 0.07177837291939392, '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.007992250232620993, 'n_size': 900, 'n_batch': 113, 'duration': 145.16301083564758, 'duration_batch': 1.2846284144747573, 'duration_size': 0.16129223426183065, 'avg_pred_std': 0.08565499742342307}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.005107812441161109, 'avg_role_model_std_loss': 0.07783917244306761, 'avg_role_model_mean_pred_loss': 0.00024728326528121317, '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.005107812441161109, 'n_size': 450, 'n_batch': 57, 'duration': 47.019214153289795, 'duration_batch': 0.8248984939173648, 'duration_size': 0.10448714256286622, 'avg_pred_std': 0.08467314502616462}\n", + "Epoch 2\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00557574656041753, 'avg_role_model_std_loss': 0.7293474927610862, 'avg_role_model_mean_pred_loss': 0.00022519498775718153, 'avg_role_model_g_mag_loss': 0.041499399857388604, '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.005658741251487906, 'n_size': 900, 'n_batch': 113, 'duration': 145.352201461792, 'duration_batch': 1.286302667803469, 'duration_size': 0.16150244606865777, 'avg_pred_std': 0.0888019731532024}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.005094906620474325, 'avg_role_model_std_loss': 0.33239709677336415, 'avg_role_model_mean_pred_loss': 1.4148092069338326e-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.005094906620474325, 'n_size': 450, 'n_batch': 57, 'duration': 47.298946142196655, 'duration_batch': 0.8298060726701167, 'duration_size': 0.10510876920488145, 'avg_pred_std': 0.0653855954051802}\n", + "Epoch 3\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004928552754507917, 'avg_role_model_std_loss': 0.590203044300799, 'avg_role_model_mean_pred_loss': 7.935110965993373e-05, 'avg_role_model_g_mag_loss': 0.03116383927563826, '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.005009777373375578, 'n_size': 900, 'n_batch': 113, 'duration': 145.0207061767578, 'duration_batch': 1.283369081210246, 'duration_size': 0.16113411797417534, 'avg_pred_std': 0.09011044628522565}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.005199750801224986, 'avg_role_model_std_loss': 0.648273554320065, 'avg_role_model_mean_pred_loss': 2.5179529602438558e-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.005199750801224986, 'n_size': 450, 'n_batch': 57, 'duration': 47.28320384025574, 'duration_batch': 0.8295298919343111, 'duration_size': 0.10507378631167942, 'avg_pred_std': 0.051663709136559384}\n", + "Epoch 4\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.004318670859793201, 'avg_role_model_std_loss': 0.4876711248132525, 'avg_role_model_mean_pred_loss': 4.46604487823629e-05, 'avg_role_model_g_mag_loss': 0.029432983928256565, '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.004396132711424596, 'n_size': 900, 'n_batch': 113, 'duration': 145.67448663711548, 'duration_batch': 1.289154749001022, 'duration_size': 0.1618605407079061, 'avg_pred_std': 0.08900898528507853}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0041498291804115675, 'avg_role_model_std_loss': 0.44782343388953705, 'avg_role_model_mean_pred_loss': 3.687838003341986e-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.0041498291804115675, 'n_size': 450, 'n_batch': 57, 'duration': 47.23726558685303, 'duration_batch': 0.8287239576640882, 'duration_size': 0.10497170130411784, 'avg_pred_std': 0.057800088480131274}\n", + "Epoch 5\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.003727001822941626, 'avg_role_model_std_loss': 0.4257845432669564, 'avg_role_model_mean_pred_loss': 5.2791223793633036e-05, 'avg_role_model_g_mag_loss': 0.027504234943124983, '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.0037818589322139613, 'n_size': 900, 'n_batch': 113, 'duration': 145.0672550201416, 'duration_batch': 1.2837810178773592, 'duration_size': 0.16118583891126845, 'avg_pred_std': 0.09003757454652701}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.003250846434198643, 'avg_role_model_std_loss': 0.4149662161665363, 'avg_role_model_mean_pred_loss': 8.010250678769003e-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.003250846434198643, 'n_size': 450, 'n_batch': 57, 'duration': 47.08042764663696, 'duration_batch': 0.8259724148532801, 'duration_size': 0.10462317254808214, 'avg_pred_std': 0.06960962812228356}\n", + "Epoch 6\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.003335649493189218, 'avg_role_model_std_loss': 0.29143936353892297, 'avg_role_model_mean_pred_loss': 0.00010225355728581073, 'avg_role_model_g_mag_loss': 0.03192889101389382, '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.0033789488727537296, 'n_size': 900, 'n_batch': 113, 'duration': 144.45740246772766, 'duration_batch': 1.278384092634758, 'duration_size': 0.16050822496414185, 'avg_pred_std': 0.08855825027994878}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.003431849268866548, 'avg_role_model_std_loss': 0.27368448856224714, 'avg_role_model_mean_pred_loss': 3.499706230363269e-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.003431849268866548, 'n_size': 450, 'n_batch': 57, 'duration': 47.77770447731018, 'duration_batch': 0.8382053417071962, 'duration_size': 0.10617267661624484, 'avg_pred_std': 0.06641790176856152}\n", + "Epoch 7\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.002982409707296433, 'avg_role_model_std_loss': 0.37030739115790007, 'avg_role_model_mean_pred_loss': 3.9599444266533356e-05, 'avg_role_model_g_mag_loss': 0.03103297157213092, '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.0030181357321432895, 'n_size': 900, 'n_batch': 113, 'duration': 144.7265179157257, 'duration_batch': 1.280765645271909, 'duration_size': 0.16080724212858413, 'avg_pred_std': 0.0891251541443367}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.003124318533429889, 'avg_role_model_std_loss': 0.24963311337495198, 'avg_role_model_mean_pred_loss': 7.335967463523267e-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.003124318533429889, 'n_size': 450, 'n_batch': 57, 'duration': 47.88541555404663, 'duration_batch': 0.8400950097201163, 'duration_size': 0.10641203456454806, 'avg_pred_std': 0.07890400658933479}\n", + "Epoch 8\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0020741428555467994, 'avg_role_model_std_loss': 0.2619519646582818, 'avg_role_model_mean_pred_loss': 1.8381270814843714e-05, 'avg_role_model_g_mag_loss': 0.031121474682456917, '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.002098895235814982, 'n_size': 900, 'n_batch': 113, 'duration': 145.16141033172607, 'duration_batch': 1.2846142507232396, 'duration_size': 0.16129045592414007, 'avg_pred_std': 0.09325064248116934}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.004463403613384192, 'avg_role_model_std_loss': 0.8222081985106039, 'avg_role_model_mean_pred_loss': 7.022714163104686e-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.004463403613384192, 'n_size': 450, 'n_batch': 57, 'duration': 47.134621143341064, 'duration_batch': 0.826923177953352, 'duration_size': 0.10474360254075792, 'avg_pred_std': 0.05030834952598078}\n", + "Epoch 9\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0023060996746709053, 'avg_role_model_std_loss': 0.2621581708226265, 'avg_role_model_mean_pred_loss': 4.253982956825255e-05, 'avg_role_model_g_mag_loss': 0.029572723129143316, '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.002331820259375187, 'n_size': 900, 'n_batch': 113, 'duration': 143.75192093849182, 'duration_batch': 1.2721408932609897, 'duration_size': 0.15972435659832424, 'avg_pred_std': 0.09426238097712002}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0023851372594233707, 'avg_role_model_std_loss': 0.25001330026493196, 'avg_role_model_mean_pred_loss': 9.203486099863416e-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.0023851372594233707, 'n_size': 450, 'n_batch': 57, 'duration': 46.45239043235779, 'duration_batch': 0.8149542181115401, 'duration_size': 0.10322753429412841, 'avg_pred_std': 0.06987214349046872}\n", + "Epoch 10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0013159852624004189, 'avg_role_model_std_loss': 0.218279704756602, 'avg_role_model_mean_pred_loss': 7.74645728111526e-06, 'avg_role_model_g_mag_loss': 0.024696054148177306, '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.0013293167201401147, 'n_size': 900, 'n_batch': 113, 'duration': 143.5770845413208, 'duration_batch': 1.2705936685072636, 'duration_size': 0.1595300939348009, 'avg_pred_std': 0.09105278838392908}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.00223359671033298, 'avg_role_model_std_loss': 0.03436504584376627, 'avg_role_model_mean_pred_loss': 1.4256753953578257e-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.00223359671033298, 'n_size': 450, 'n_batch': 57, 'duration': 46.45383548736572, 'duration_batch': 0.8149795699537846, 'duration_size': 0.10323074552747938, 'avg_pred_std': 0.07930388350627925}\n", + "Epoch 11\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.002150901930160924, 'avg_role_model_std_loss': 0.22495316012830485, 'avg_role_model_mean_pred_loss': 3.4149523725070684e-05, 'avg_role_model_g_mag_loss': 0.03553776060955392, '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.0021734700896518513, 'n_size': 900, 'n_batch': 113, 'duration': 143.75677585601807, 'duration_batch': 1.2721838571329032, 'duration_size': 0.15972975095113118, 'avg_pred_std': 0.09556485827913326}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.003228269326912899, 'avg_role_model_std_loss': 0.28536299721485003, 'avg_role_model_mean_pred_loss': 1.6670719938160433e-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.003228269326912899, 'n_size': 450, 'n_batch': 57, 'duration': 46.40282607078552, 'duration_batch': 0.814084667908518, 'duration_size': 0.10311739126841227, 'avg_pred_std': 0.07249125089136917}\n", + "Epoch 12\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0019467951555270703, 'avg_role_model_std_loss': 0.23753629187743283, 'avg_role_model_mean_pred_loss': 3.624726925012959e-05, 'avg_role_model_g_mag_loss': 0.03207059481077724, '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.0019664278747707916, 'n_size': 900, 'n_batch': 113, 'duration': 143.81293630599976, 'duration_batch': 1.2726808522654847, 'duration_size': 0.15979215145111084, 'avg_pred_std': 0.09223815666890778}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.003769443849644934, 'avg_role_model_std_loss': 0.12684818327569333, 'avg_role_model_mean_pred_loss': 0.0005272575768817463, '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.003769443849644934, 'n_size': 450, 'n_batch': 57, 'duration': 46.357746601104736, 'duration_batch': 0.8132938000193813, 'duration_size': 0.10301721466912164, 'avg_pred_std': 0.08174848222386158}\n", + "Epoch 13\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0011665212795681631, 'avg_role_model_std_loss': 0.09113499079847809, 'avg_role_model_mean_pred_loss': 2.4942857778784166e-05, 'avg_role_model_g_mag_loss': 0.02439475072444313, '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.001178674958355259, 'n_size': 900, 'n_batch': 113, 'duration': 143.67677998542786, 'duration_batch': 1.2714759290745827, 'duration_size': 0.1596408666504754, 'avg_pred_std': 0.09811776785789865}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0026310520773727654, 'avg_role_model_std_loss': 0.5994252953760104, 'avg_role_model_mean_pred_loss': 0.0001863106027298025, '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.0026310520773727654, 'n_size': 450, 'n_batch': 57, 'duration': 46.223793745040894, 'duration_batch': 0.8109437499129981, 'duration_size': 0.10271954165564642, 'avg_pred_std': 0.06012566037590436}\n", + "Epoch 14\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0007886418905885269, 'avg_role_model_std_loss': 0.1318949167653181, 'avg_role_model_mean_pred_loss': 1.084472590072184e-06, 'avg_role_model_g_mag_loss': 0.019767768517550494, '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.0007973033490513141, 'n_size': 900, 'n_batch': 113, 'duration': 142.2467658519745, 'duration_batch': 1.258820936743137, 'duration_size': 0.15805196205774943, 'avg_pred_std': 0.09370011994532779}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0024774786025712576, 'avg_role_model_std_loss': 0.23988299155125448, 'avg_role_model_mean_pred_loss': 0.0003575192506448812, '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.0024774786025712576, 'n_size': 450, 'n_batch': 57, 'duration': 45.4305682182312, 'duration_batch': 0.7970275126005474, 'duration_size': 0.100956818262736, 'avg_pred_std': 0.07729252947396353}\n", + "Epoch 15\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0007920145899212609, 'avg_role_model_std_loss': 0.07880277095880331, 'avg_role_model_mean_pred_loss': 1.3125071642120135e-06, 'avg_role_model_g_mag_loss': 0.022073325576881568, '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.0007999837701855641, 'n_size': 900, 'n_batch': 113, 'duration': 142.16578197479248, 'duration_batch': 1.2581042652636503, 'duration_size': 0.15796197997199166, 'avg_pred_std': 0.09601840465865304}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0018119772487261798, 'avg_role_model_std_loss': 0.28852804994411196, 'avg_role_model_mean_pred_loss': 0.0001659401577897141, '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.0018119772487261798, 'n_size': 450, 'n_batch': 57, 'duration': 45.49597787857056, 'duration_batch': 0.7981750505012378, 'duration_size': 0.10110217306349012, 'avg_pred_std': 0.07632629704465599}\n", + "Epoch 16\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0005196595300286491, 'avg_role_model_std_loss': 0.0565358007824824, 'avg_role_model_mean_pred_loss': 5.911478473423242e-07, 'avg_role_model_g_mag_loss': 0.015494050164189603, '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.0005250095642016579, 'n_size': 900, 'n_batch': 113, 'duration': 143.4526925086975, 'duration_batch': 1.26949285405927, 'duration_size': 0.15939188056521947, 'avg_pred_std': 0.09898689962857593}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0018605626394532413, 'avg_role_model_std_loss': 0.42602644269920564, 'avg_role_model_mean_pred_loss': 0.00010228292684815276, '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.0018605626394532413, 'n_size': 450, 'n_batch': 57, 'duration': 46.52276873588562, 'duration_batch': 0.8161889251909757, 'duration_size': 0.10338393052419027, 'avg_pred_std': 0.07228483269889757}\n", + "Epoch 17\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.0003834019511123188, 'avg_role_model_std_loss': 0.05582865150848945, 'avg_role_model_mean_pred_loss': 1.0770429865198301e-07, 'avg_role_model_g_mag_loss': 0.013134720898750755, '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.00038761303258878695, 'n_size': 900, 'n_batch': 113, 'duration': 144.13887667655945, 'duration_batch': 1.275565280323535, 'duration_size': 0.1601543074183994, 'avg_pred_std': 0.09740801119303281}\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Val loss {'avg_role_model_loss': 0.0022972054127603767, 'avg_role_model_std_loss': 0.26383435410354306, 'avg_role_model_mean_pred_loss': 0.0004230380179690739, '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.0022972054127603767, 'n_size': 450, 'n_batch': 57, 'duration': 47.14963889122009, 'duration_batch': 0.8271866472143876, 'duration_size': 0.10477697531382243, 'avg_pred_std': 0.0769950772080113}\n", + "Epoch 18\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train loss {'avg_role_model_loss': 0.00036346292850794273, 'avg_role_model_std_loss': 0.047643846057415055, 'avg_role_model_mean_pred_loss': 2.4050790815127115e-07, 'avg_role_model_g_mag_loss': 0.013326084169869622, '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.00036746932837154923, 'n_size': 900, 'n_batch': 113, 'duration': 144.99755716323853, 'duration_batch': 1.2831642226835267, 'duration_size': 0.16110839684804282, 'avg_pred_std': 0.09879991837439284}\n", + "Time out: 3602.547290802002/3600\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Eval loss {'role_model': 'lct_gan', 'n_size': 600, 'n_batch': 75, 'role_model_metrics': {'avg_loss': 0.0007886611748836003, 'avg_g_mag_loss': 0.008810463138737153, 'avg_g_cos_loss': 0.0036491415455626943, 'pred_duration': 1.261091709136963, 'grad_duration': 3.734239101409912, 'total_duration': 4.995330810546875, 'pred_std': 0.1561143845319748, 'std_loss': 0.0019985174294561148, 'mean_pred_loss': 8.764879453337926e-07, 'pred_rmse': 0.028083112090826035, 'pred_mae': 0.018356479704380035, 'pred_mape': 0.5159444212913513, 'grad_rmse': 0.047635164111852646, 'grad_mae': 0.015319733880460262, 'grad_mape': 0.531665027141571}, '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.0007886611748836003, 'avg_g_mag_loss': 0.008810463138737153, 'avg_g_cos_loss': 0.0036491415455626943, 'avg_pred_duration': 1.261091709136963, 'avg_grad_duration': 3.734239101409912, 'avg_total_duration': 4.995330810546875, 'avg_pred_std': 0.1561143845319748, 'avg_std_loss': 0.0019985174294561148, 'avg_mean_pred_loss': 8.764879453337926e-07}, 'min_metrics': {'avg_loss': 0.0007886611748836003, 'avg_g_mag_loss': 0.008810463138737153, 'avg_g_cos_loss': 0.0036491415455626943, 'pred_duration': 1.261091709136963, 'grad_duration': 3.734239101409912, 'total_duration': 4.995330810546875, 'pred_std': 0.1561143845319748, 'std_loss': 0.0019985174294561148, 'mean_pred_loss': 8.764879453337926e-07, 'pred_rmse': 0.028083112090826035, 'pred_mae': 0.018356479704380035, 'pred_mape': 0.5159444212913513, 'grad_rmse': 0.047635164111852646, 'grad_mae': 0.015319733880460262, 'grad_mape': 0.531665027141571}, 'model_metrics': {'lct_gan': {'avg_loss': 0.0007886611748836003, 'avg_g_mag_loss': 0.008810463138737153, 'avg_g_cos_loss': 0.0036491415455626943, 'pred_duration': 1.261091709136963, 'grad_duration': 3.734239101409912, 'total_duration': 4.995330810546875, 'pred_std': 0.1561143845319748, 'std_loss': 0.0019985174294561148, 'mean_pred_loss': 8.764879453337926e-07, 'pred_rmse': 0.028083112090826035, 'pred_mae': 0.018356479704380035, 'pred_mape': 0.5159444212913513, 'grad_rmse': 0.047635164111852646, 'grad_mae': 0.015319733880460262, 'grad_mape': 0.531665027141571}}}\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", + "del model\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-26T16:12:56.549761Z", + "iopub.status.busy": "2024-03-26T16:12:56.549467Z", + "iopub.status.idle": "2024-03-26T16:12:56.553324Z", + "shell.execute_reply": "2024-03-26T16:12:56.552597Z" + }, + "papermill": { + "duration": 0.024866, + "end_time": "2024-03-26T16:12:56.555175", + "exception": false, + "start_time": "2024-03-26T16:12:56.530309", + "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-26T16:12:56.588832Z", + "iopub.status.busy": "2024-03-26T16:12:56.588556Z", + "iopub.status.idle": "2024-03-26T16:12:56.667436Z", + "shell.execute_reply": "2024-03-26T16:12:56.666643Z" + }, + "papermill": { + "duration": 0.098493, + "end_time": "2024-03-26T16:12:56.669788", + "exception": false, + "start_time": "2024-03-26T16:12:56.571295", + "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-26T16:12:56.706930Z", + "iopub.status.busy": "2024-03-26T16:12:56.706615Z", + "iopub.status.idle": "2024-03-26T16:12:56.972561Z", + "shell.execute_reply": "2024-03-26T16:12:56.971642Z" + }, + "papermill": { + "duration": 0.287381, + "end_time": "2024-03-26T16:12:56.974641", + "exception": false, + "start_time": "2024-03-26T16:12:56.687260", + "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-26T16:12:57.011228Z", + "iopub.status.busy": "2024-03-26T16:12:57.010431Z", + "iopub.status.idle": "2024-03-26T16:14:07.425494Z", + "shell.execute_reply": "2024-03-26T16:14:07.424662Z" + }, + "papermill": { + "duration": 70.436218, + "end_time": "2024-03-26T16:14:07.428007", + "exception": false, + "start_time": "2024-03-26T16:12:56.991789", + "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-26T16:14:07.466107Z", + "iopub.status.busy": "2024-03-26T16:14:07.465789Z", + "iopub.status.idle": "2024-03-26T16:14:07.486809Z", + "shell.execute_reply": "2024-03-26T16:14:07.485894Z" + }, + "papermill": { + "duration": 0.042464, + "end_time": "2024-03-26T16:14:07.488829", + "exception": false, + "start_time": "2024-03-26T16:14:07.446365", + "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.0014910.0100010.0007893.7191520.015320.5316650.0476358.764879e-071.2892180.0183560.5159440.0280830.1561140.0019995.00837
\n", + "
" + ], + "text/plain": [ + " avg_g_cos_loss avg_g_mag_loss avg_loss grad_duration grad_mae \\\n", + "lct_gan 0.001491 0.010001 0.000789 3.719152 0.01532 \n", + "\n", + " grad_mape grad_rmse mean_pred_loss pred_duration pred_mae \\\n", + "lct_gan 0.531665 0.047635 8.764879e-07 1.289218 0.018356 \n", + "\n", + " pred_mape pred_rmse pred_std std_loss total_duration \n", + "lct_gan 0.515944 0.028083 0.156114 0.001999 5.00837 " + ] + }, + "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-26T16:14:07.524962Z", + "iopub.status.busy": "2024-03-26T16:14:07.524666Z", + "iopub.status.idle": "2024-03-26T16:14:07.979077Z", + "shell.execute_reply": "2024-03-26T16:14:07.978106Z" + }, + "papermill": { + "duration": 0.47451, + "end_time": "2024-03-26T16:14:07.981174", + "exception": false, + "start_time": "2024-03-26T16:14:07.506664", + "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-26T16:14:08.020165Z", + "iopub.status.busy": "2024-03-26T16:14:08.019765Z", + "iopub.status.idle": "2024-03-26T16:15:22.391668Z", + "shell.execute_reply": "2024-03-26T16:15:22.390855Z" + }, + "papermill": { + "duration": 74.394834, + "end_time": "2024-03-26T16:15:22.394155", + "exception": false, + "start_time": "2024-03-26T16:14:07.999321", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Caching in ../../../../insurance/_cache_aug_test/lct_gan/all inf False\n", + "Caching in ../../../../insurance/_cache_bs_test/lct_gan/all inf False\n", + "Caching in ../../../../insurance/_cache_synth_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-26T16:15:22.433392Z", + "iopub.status.busy": "2024-03-26T16:15:22.433072Z", + "iopub.status.idle": "2024-03-26T16:15:22.452838Z", + "shell.execute_reply": "2024-03-26T16:15:22.452120Z" + }, + "papermill": { + "duration": 0.041998, + "end_time": "2024-03-26T16:15:22.454820", + "exception": false, + "start_time": "2024-03-26T16:15:22.412822", + "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-26T16:15:22.490669Z", + "iopub.status.busy": "2024-03-26T16:15:22.490377Z", + "iopub.status.idle": "2024-03-26T16:15:22.495611Z", + "shell.execute_reply": "2024-03-26T16:15:22.494812Z" + }, + "papermill": { + "duration": 0.025648, + "end_time": "2024-03-26T16:15:22.497503", + "exception": false, + "start_time": "2024-03-26T16:15:22.471855", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'lct_gan': 0.037697755648017243}\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-26T16:15:22.534825Z", + "iopub.status.busy": "2024-03-26T16:15:22.534103Z", + "iopub.status.idle": "2024-03-26T16:15:22.948433Z", + "shell.execute_reply": "2024-03-26T16:15:22.947449Z" + }, + "papermill": { + "duration": 0.435297, + "end_time": "2024-03-26T16:15:22.950481", + "exception": false, + "start_time": "2024-03-26T16:15:22.515184", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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tLQUoNXdb5teM1tpaSmDB8fuHavrOhkZGW3GeNVVVzFs2DDy8vLYvHkzd955J9u3b2fNmjU9HXKrOrvTMESuvS//30Bi1zVmzBgef/xxJkyYQHV1NQ899BBnnnkmW7du7ZWJ5VIjSsBdd93VomPvxEe8//C+rKev64YbbuCCCy5g/PjxLFiwgCeffJIXX3yR3bt3d+NViETMmDGDq6++mtNPP51Zs2axZs0asrKy+P3vf98rny81ogT85Cc/YdGiRW2WGT58eELnbtrh9siRI+Tm5kaPHzlyhNNPPz2hc3ZUR68rJyeHsrKymOOhUIiKiopWd+iNZ/r06QDs2rWLESNGdDrerursTsMQ+f/pTHkzJHJdJ7LZbEyaNIldu3b1RIgtSCJKQFZWFllZWT1y7qKiInJycli3bl008dTU1LBhwwZuvvnmHvnMJh29rhkzZlBVVcUnn3zC5MmTAXjzzTcxDCOaXDpi48aNADEJtzc132l4/vz5wPGdhm+99dZW3zNjxgzWrVvHHXfcET32xhtv9KmdiRO5rhOFw2G2bNnCvHnzejDSZkzrJj9J7Nu3T3322Wfq3nvvVampqeqzzz5Tn332maqtrY2WGTNmjFqzZk30+QMPPKDS0tLUyy+/rDZv3qwuu+yyPjl8P2nSJLVhwwb17rvvqlGjRsUM3x84cECNGTNGbdiwQSml1K5du9R9992nPv74Y7Vnzx718ssvq+HDh6tzzjnHrEtQSkWGuR0OhyouLlbbtm1TN9xwg0pLS4sOXf/gBz9Qd911V7T8e++9p3RdVw899JD64osv1N13391nh+87c1333nuveu2119Tu3bvVJ598or73ve+ppKQktXXr1l6JVxJRD1u4cKECWjzeeuutaBlArV69OvrcMAz105/+VGVnZyuHw6HOO+88tX379t4Pvg3Hjh1TV155pUpNTVVut1tdc801Mcl1z549Mde5f/9+dc4556iMjAzlcDjUyJEj1b/927+Zfh+RUkr95je/UQUFBcput6tp06apDz74IPrarFmz1MKFC2PKP//882r06NHKbrersWPHqldeeaWXI+6YzlzXHXfcES2bnZ2t5s2bpz799NNei1WWARFCmE5GzYQQppNEJIQwnSQiIYTpJBEJIUwniUgIYTpJREII00kiEkKYThKREMJ0kohEv1JcXByz5O4999wTMxl40aJF0flVov+QRCRatWjRorhrSt9yyy1omhYzU78nEkBhYSErV66MOfbd736XHTt2xH3PY489RnFxcfT57NmzYyaoir5JEpGIKz8/n2effRav1xs95vP5ePrppykoKDAlJqfT2WJRtuY8Hk+HNykQfYckIhHXGWecQX5+fswKimvWrKGgoIBJkyZ16dyt1VTmz58frWXNnj2bffv28eMf/zi6KBu0bJqdqHnNbNGiRbz99ts89thj0XPs2bOHkSNH8tBDD8W8b+PGjWia1mvr74hYkohEmxYvXszq1aujzx9//HGuueaaHv/cNWvWMHToUO677z4OHz7M4cOHO32Oxx57jBkzZnD99ddHz1FQUNDimgBWr17NOeecw8iRI7vrEkQnSCISbfr+97/Pu+++y759+9i3bx/vvfce3//+93v8czMyMrBarbhcLnJychJaAdHj8WC320lOTo6ew2q1smjRIrZv3x7d5ysYDPL000+zePHi7r4M0UGyQqNoU1ZWFhdffDHFxcUopbj44ovJzMw0O6wuycvL4+KLL+bxxx9n2rRp/O1vf8Pv93PFFVeYHdpJS2pEol2LFy+muLiYJ554ottqDRaLhROXwgoGg91y7o647rrroh3xq1ev5rvf/S7Jycm99vkiliQi0a4LL7yQQCBAMBjkggsu6JZzZmVlxfT7hMNhPv/885gydrudcDjcpc+Jd4558+aRkpLCqlWrePXVV6VZZjJpmol2Wa1Wvvjii+jX8VRXV0cXxG8yaNAg8vPzW5Q999xzWbJkCa+88gojRozgkUceoaqqKqZMYWEh77zzDt/73vdwOBwJNQkLCwvZsGEDe/fuJTU1lYyMDCwWS7SvaNmyZYwaNapPLX5/MpIakegQt9uN2+1us8z69euZNGlSzOPee+9ttezixYtZuHAhV199NbNmzWL48OHMmTMnpsx9993H3r17GTFiRMK7pixduhSr1cppp51GVlYW+/fvj7527bXXEggEemUUULRN1qwWJ61//vOfnHfeeZSUlLTYFVX0LklE4qTj9/spLy9n4cKF5OTk8NRTT5kd0klPmmbipPPMM88wbNgwqqqqePDBB80ORyA1IiFEHyA1IiGE6SQRCSFMJ4lICGE6SURCCNNJIhJCmE4SkRDCdJKIhBCmk0QkhDDd/wf31p/0gYRQ7QAAAABJRU5ErkJggg==", + "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-26T16:15:22.988556Z", + "iopub.status.busy": "2024-03-26T16:15:22.987881Z", + "iopub.status.idle": "2024-03-26T16:15:23.313508Z", + "shell.execute_reply": "2024-03-26T16:15:23.312571Z" + }, + "papermill": { + "duration": 0.346653, + "end_time": "2024-03-26T16:15:23.315453", + "exception": false, + "start_time": "2024-03-26T16:15:22.968800", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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5hoefPBBMjMzw1UX3333XaZNm4bD4WDGjBm89NJLaJrWbAb2p59+yuWXX058fDxpaWl885vf5NSpU63GU1hY2OUfxUCi65DjNEiJs4HRmIgKKnwUlNVSVinF0doT9TEii8VCenp677xYwAdvP9o7r9XURf8NFluHDl29ejUHDhxg0qRJ4QWpycnJjBgxgueff54hQ4bw7rvvctddd5GRkcH1118ffu6mTZtITExk48aNQHDl81VXXcXChQt55plnOHLkyFldrMrKSi699FLuuOMOfv3rX+Nyubjvvvu4/vrreeONN1qMJzU1tRu+KQNHgsPKeSPiwJYAlsZEVFKr0Gs8aAl1yHesbVFPRJ9//jmZmZk4HA5mz57NqlWrWq157PF48Hgam7nV1QPvP43T6cRmsxEbG9ssQa9cuTL8eW5uLu+99x7PPfdcs0QUFxfHn//853Dlxt///vdomsaf/vQnHA4HEyZM4Pjx49x5Z2NZit/97ndMnz6dX/ziF+H71q5dS1ZWFgcOHGDcuHEtxiPOEBoHMhrL5xp2BwowfdI1a09UE9GsWbPIz88nLy+P4uJiVq5cyUUXXcSnn35KQkLCWcevWrWq2R9kpxnWYOuktzX55YzUE088wdq1azl69Cgulwuv19tsCyAIlpYNJSGA/fv3M2XKlGb1f5oWzgfYtWsXb775ZrPdOUIKCgoYN65r2yENBgFTofncwXGOJl0zi82BD1AyRtSuqCaiyy+/PPz5lClTmDVrFiNHjuS5555rsUjX8uXLWbZsWfjr6upqsrKyzjquVZrW4S5SX/Lss89y77338uijjzJ79mwSEhL41a9+xbZt25odFxfX+YWVtbW1XHXVVTz88MNnPRbamUO07bPiak7uOcYIWy15Uxt/vxoTkTs4Tnjmti8iLOpds6aSkpIYN24cBw+2vAGi3W7Hbre3+NhAYrPZmhXE37p1KxdccAHf/e53w/cVFBS0e568vDz++te/4vF4wt+3poXzAc4991xeeOEFcnJysFha/nU4Mx7RnMdvYihvcCuqJi0iq82BCzADATD93dIyHqiiftWsqdraWgoKCgb9f+KcnBy2bdtGYWEhp06dYuzYsXz44Yds2LCBAwcO8JOf/OSshNKSm2++GdM0ueuuu/jss8/YsGFDuP50qFj+0qVLKS8v56abbmL79u0UFBSwYcMG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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-26T16:15:23.355932Z", + "iopub.status.busy": "2024-03-26T16:15:23.355325Z", + "iopub.status.idle": "2024-03-26T16:15:23.576390Z", + "shell.execute_reply": "2024-03-26T16:15:23.575455Z" + }, + "papermill": { + "duration": 0.243939, + "end_time": "2024-03-26T16:15:23.578338", + "exception": false, + "start_time": "2024-03-26T16:15:23.334399", + "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-26T16:15:23.618757Z", + "iopub.status.busy": "2024-03-26T16:15:23.618455Z", + "iopub.status.idle": "2024-03-26T16:15:23.890191Z", + "shell.execute_reply": "2024-03-26T16:15:23.889351Z" + }, + "papermill": { + "duration": 0.294565, + "end_time": "2024-03-26T16:15:23.892255", + "exception": false, + "start_time": "2024-03-26T16:15:23.597690", + "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.019504, + "end_time": "2024-03-26T16:15:23.931535", + "exception": false, + "start_time": "2024-03-26T16:15:23.912031", + "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": 3840.688081, + "end_time": "2024-03-26T16:15:26.675164", + "environment_variables": {}, + "exception": null, + "input_path": "eval/insurance/lct_gan/3/mlu-eval.ipynb", + "output_path": "eval/insurance/lct_gan/3/mlu-eval.ipynb", + "parameters": { + "allow_same_prediction": true, + "dataset": "insurance", + "dataset_name": "insurance", + "debug": false, + "folder": "eval", + "gp": true, + "gp_multiply": true, + "log_wandb": false, + "param_index": 0, + "path": "eval/insurance/lct_gan/3", + "path_prefix": "../../../../", + "random_seed": 3, + "single_model": "lct_gan" + }, + "start_time": "2024-03-26T15:11:25.987083", + "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