diff --git a/examples/KANs/README.md b/examples/KANs/README.md
index d15aad66..c37e881f 100644
--- a/examples/KANs/README.md
+++ b/examples/KANs/README.md
@@ -1,14 +1,16 @@
# Kolmogorov-Arnold Networks in Neuromancer
-This directory contains interactive examples that can serve as a step-by-step tutorial
-showcasing the capabilities of Kolmogorov-Arnold Networks (KANs) and finite basis KANs (FBKANs) in Neuromancer.
+This directory contains interactive examples that can serve as a step-by-step tutorial showcasing the capabilities of Kolmogorov-Arnold Networks (KANs), finite basis KANs (FBKANs) and multi-fidelity KANs (MFKANs) in Neuromancer.
Examples of learning from multiscale, noisy data with KANs and FBKANs:
+
Part 1: A comparison of KANs and FBKANs in learning a 1D multiscale function with noise
+
Part 2: A comparison of KANs and FBKANs in learning a 2D multiscale function with noise
+Examples of learning multi-fidelity data with MFKANs:
++
Part 3: A comparison of KANs and MFKANs in learning a 1D jump function with abundant, low-fidelity data and sparse, high-fidelity data
+
## Kolmogorov-Arnold Networks (KANs)
-Based on the Kolmogorov-Arnold representation theorem, KANs offer an alternative architecture: where traditional neural networks utilize fixed activation functions, KANs employ learnable activation functions on the edges of the network, replacing linear weight parameters with parametrized spline functions. This fundamental shift sometimes enhances model interpretability and improves computational efficiency and accuracy [1]. KANs are available on Neuromancer via `blocks.KANBlock`, which leverages the efficient-kan implementation of [2]. Moreover, users can leverage the finite basis KANs (FBKANs), a domain decomposition method for KANs proposed by Howard et al. (2024)[3] by simply setting the `num_domains` argument in `blocks.KANBlock`.
+Based on the Kolmogorov-Arnold representation theorem, KANs offer an alternative architecture: where traditional neural networks utilize fixed activation functions, KANs employ learnable activation functions on the edges of the network, replacing linear weight parameters with parametrized spline functions. This fundamental shift sometimes enhances model interpretability and improves computational efficiency and accuracy [1]. KANs are available on Neuromancer via `blocks.KANBlock`, which leverages the efficient-kan implementation of [2]. Moreover, users can leverage the finite basis KANs (FBKANs), a domain decomposition method for KANs proposed by Howard et al. (2024)[3] by simply setting the `num_domains` argument in `blocks.KANBlock`. Users can also leverage multi-fidelity KANs (MFKANs) via `blocks.MultiFidelityKAN`.
### References
@@ -16,4 +18,6 @@ Based on the Kolmogorov-Arnold representation theorem, KANs offer an alternative
[2] https://github.com/Blealtan/efficient-kan
-[3] Howard, Amanda A., et al. (2024) Finite basis Kolmogorov-Arnold networks: domain decomposition for data-diven and physics-informed problems.
+[3] [Howard, Amanda A., et al. (2024) Finite basis Kolmogorov-Arnold networks: domain decomposition for data-diven and physics-informed problems.](https://arxiv.org/abs/2406.19662)
+
+[4] [Howard, Amanda A., et al. (2024) Multifidelity Kolmogorov-Arnold networks.](https://arxiv.org/abs/2410.14764)
diff --git a/examples/KANs/p1_fbkan_vs_kan_noise_data_1d.ipynb b/examples/KANs/p1_fbkan_vs_kan_noise_data_1d.ipynb
index 96e9aa02..4a147f76 100644
--- a/examples/KANs/p1_fbkan_vs_kan_noise_data_1d.ipynb
+++ b/examples/KANs/p1_fbkan_vs_kan_noise_data_1d.ipynb
@@ -59,18 +59,18 @@
"metadata": {},
"outputs": [],
"source": [
- "# import os\n",
+ "import os\n",
"\n",
- "# # Check if the neuromancer directory already exists\n",
- "# if not os.path.isdir('neuromancer'):\n",
- "# # Clone the specific branch of the repository\n",
- "# !git clone --branch feature/fbkans https://github.com/pnnl/neuromancer.git\n",
+ "# Check if the neuromancer directory already exists\n",
+ "if not os.path.isdir('neuromancer'):\n",
+ " # Clone the specific branch of the repository\n",
+ " !git clone --branch feature/fbkans https://github.com/pnnl/neuromancer.git\n",
"\n",
- "# # Navigate to the repository directory\n",
- "# %cd neuromancer\n",
+ "# Navigate to the repository directory\n",
+ "%cd neuromancer\n",
"\n",
- "# # Install the repository with the required extras\n",
- "# !pip install -e .[docs,tests,examples]\n"
+ "# Install the repository with the required extras\n",
+ "!pip install -e .[docs,tests,examples]\n"
]
},
{
@@ -90,17 +90,21 @@
"source": [
"import torch\n",
"import numpy as np\n",
+ "import torch.nn as nn\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from neuromancer.dataset import DictDataset\n",
"from neuromancer.modules import blocks\n",
- "from neuromancer.system import Node\n",
+ "from neuromancer.system import Node, System\n",
"from neuromancer.constraint import variable\n",
"from neuromancer.loss import PenaltyLoss\n",
"from neuromancer.problem import Problem\n",
"from neuromancer.trainer import Trainer\n",
+ "from neuromancer.callbacks import Callback\n",
"from neuromancer.loggers import LossLogger\n",
"\n",
+ "from torch.utils.data import DataLoader\n",
+ "\n",
"import time\n"
]
},
@@ -351,14 +355,14 @@
"\n",
"- `x`: Input variable, where $x \\in [0, 2]$.\n",
"- `y`: True target values from the function $f(x)$.\n",
- "- `y_hat`: Predicted values produced by either the KAN or FBKAN model.\n",
+ "- `y_hat`: Predicted values produced by either the KAN or FBKAN model, $\\hat{y}$.\n",
"\n",
"**Data Loss for FBKAN:**\n",
"\n",
"The data loss for FBKAN, denoted as `loss_data_fbkan`, measures the mean squared error (MSE) between the FBKAN predictions, `y_hat`, and the true values, `y`:\n",
"\n",
"$$\n",
- "\\ell_{\\text{data, FBKAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( y_i - y_{\\text{hat, FBKAN}} \\right)^2\n",
+ "\\ell_{\\text{data, FBKAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( y_i - \\hat{y}_i \\right)^2\n",
"$$\n",
"\n",
"This loss guides the FBKAN model to approximate the target function values accurately.\n",
@@ -368,7 +372,7 @@
"Similarly, the data loss for KAN, denoted as `loss_data_kan`, is the mean squared error between the KAN predictions, `y_hat`, and the true target values, `y`:\n",
"\n",
"$$\n",
- "\\ell_{\\text{data, KAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( y_i - y_{\\text{hat, KAN}} \\right)^2\n",
+ "\\ell_{\\text{data, KAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( y_i - \\hat{y}_i \\right)^2\n",
"$$\n",
"\n",
"This loss term helps the KAN model learn to approximate the target function.\n",
@@ -415,7 +419,7 @@
"id": "9af5ad88-a719-4da0-b75c-b5fe2ac6b41b",
"metadata": {},
"source": [
- "### Construct the Neuromancer Problem objects and train"
+ "### Construct the Neuromancer `Problem` objects and train"
]
},
{
@@ -447,6 +451,8 @@
"name": "stdout",
"output_type": "stream",
"text": [
+ "None\n",
+ "None\n",
"Number of parameters: 1000\n",
"Number of parameters: 100\n"
]
@@ -509,47 +515,47 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "epoch: 0\ttrain_loss: 2.72812\tdev_loss: 2.43958\teltime: 0.03616\n",
- "epoch: 50\ttrain_loss: 0.69293\tdev_loss: 0.67429\teltime: 0.40859\n",
- "epoch: 100\ttrain_loss: 0.63379\tdev_loss: 0.61552\teltime: 0.73413\n",
- "epoch: 150\ttrain_loss: 0.54580\tdev_loss: 0.51654\teltime: 1.09647\n",
- "epoch: 200\ttrain_loss: 0.47687\tdev_loss: 0.47113\teltime: 1.37962\n",
- "epoch: 250\ttrain_loss: 0.43037\tdev_loss: 0.42795\teltime: 1.67505\n",
- "epoch: 300\ttrain_loss: 0.34899\tdev_loss: 0.35744\teltime: 2.01962\n",
- "epoch: 350\ttrain_loss: 0.25711\tdev_loss: 0.23473\teltime: 2.44207\n",
- "epoch: 400\ttrain_loss: 0.14942\tdev_loss: 0.14594\teltime: 2.91074\n",
- "epoch: 450\ttrain_loss: 0.11961\tdev_loss: 0.12998\teltime: 3.31423\n",
- "epoch: 500\ttrain_loss: 0.09109\tdev_loss: 0.10154\teltime: 3.69886\n",
- "epoch: 550\ttrain_loss: 0.07658\tdev_loss: 0.08560\teltime: 4.06116\n",
- "epoch: 600\ttrain_loss: 0.06664\tdev_loss: 0.07253\teltime: 4.43047\n",
- "epoch: 650\ttrain_loss: 0.05640\tdev_loss: 0.05513\teltime: 4.83353\n",
- "epoch: 700\ttrain_loss: 0.04705\tdev_loss: 0.04137\teltime: 5.31185\n",
- "epoch: 750\ttrain_loss: 0.04238\tdev_loss: 0.03520\teltime: 5.60347\n",
- "epoch: 800\ttrain_loss: 0.03987\tdev_loss: 0.03232\teltime: 5.91383\n",
- "epoch: 850\ttrain_loss: 0.03827\tdev_loss: 0.03111\teltime: 6.18814\n",
- "epoch: 900\ttrain_loss: 0.03728\tdev_loss: 0.02889\teltime: 6.48017\n",
- "epoch: 950\ttrain_loss: 0.03610\tdev_loss: 0.02898\teltime: 6.79754\n",
- "epoch: 1000\ttrain_loss: 0.03513\tdev_loss: 0.02761\teltime: 7.16061\n",
- "epoch: 1050\ttrain_loss: 0.03446\tdev_loss: 0.02677\teltime: 7.50228\n",
- "epoch: 1100\ttrain_loss: 0.03388\tdev_loss: 0.02668\teltime: 7.85855\n",
- "epoch: 1150\ttrain_loss: 0.03337\tdev_loss: 0.02574\teltime: 8.20139\n",
- "epoch: 1200\ttrain_loss: 0.03304\tdev_loss: 0.02603\teltime: 8.50404\n",
- "epoch: 1250\ttrain_loss: 0.03244\tdev_loss: 0.02476\teltime: 8.87676\n",
- "epoch: 1300\ttrain_loss: 0.03218\tdev_loss: 0.02411\teltime: 9.16424\n",
- "epoch: 1350\ttrain_loss: 0.03155\tdev_loss: 0.02389\teltime: 9.51659\n",
- "epoch: 1400\ttrain_loss: 0.03133\tdev_loss: 0.02322\teltime: 9.83396\n",
- "epoch: 1450\ttrain_loss: 0.03073\tdev_loss: 0.02298\teltime: 10.18123\n",
- "epoch: 1500\ttrain_loss: 0.03036\tdev_loss: 0.02269\teltime: 10.56923\n",
- "epoch: 1550\ttrain_loss: 0.03000\tdev_loss: 0.02222\teltime: 10.93289\n",
- "epoch: 1600\ttrain_loss: 0.02968\tdev_loss: 0.02175\teltime: 11.28885\n",
- "epoch: 1650\ttrain_loss: 0.02937\tdev_loss: 0.02159\teltime: 11.67408\n",
- "epoch: 1700\ttrain_loss: 0.02909\tdev_loss: 0.02136\teltime: 12.13591\n",
- "epoch: 1750\ttrain_loss: 0.02882\tdev_loss: 0.02089\teltime: 12.50401\n",
- "epoch: 1800\ttrain_loss: 0.02878\tdev_loss: 0.02110\teltime: 13.05403\n",
- "epoch: 1850\ttrain_loss: 0.02832\tdev_loss: 0.02026\teltime: 13.48750\n",
- "epoch: 1900\ttrain_loss: 0.02810\tdev_loss: 0.02030\teltime: 13.80615\n",
- "epoch: 1950\ttrain_loss: 0.02774\tdev_loss: 0.01975\teltime: 14.09075\n",
- "Elapsed time = 14.472152948379517\n"
+ "epoch: 0\ttrain_loss: 2.72812\tdev_loss: 2.43958\teltime: 0.05157\n",
+ "epoch: 50\ttrain_loss: 0.69293\tdev_loss: 0.67429\teltime: 0.42308\n",
+ "epoch: 100\ttrain_loss: 0.63379\tdev_loss: 0.61552\teltime: 0.73360\n",
+ "epoch: 150\ttrain_loss: 0.54580\tdev_loss: 0.51654\teltime: 1.07527\n",
+ "epoch: 200\ttrain_loss: 0.47687\tdev_loss: 0.47113\teltime: 1.34512\n",
+ "epoch: 250\ttrain_loss: 0.43037\tdev_loss: 0.42795\teltime: 1.61852\n",
+ "epoch: 300\ttrain_loss: 0.34899\tdev_loss: 0.35744\teltime: 1.88319\n",
+ "epoch: 350\ttrain_loss: 0.25711\tdev_loss: 0.23473\teltime: 2.14741\n",
+ "epoch: 400\ttrain_loss: 0.14942\tdev_loss: 0.14594\teltime: 2.44503\n",
+ "epoch: 450\ttrain_loss: 0.11961\tdev_loss: 0.12998\teltime: 2.70329\n",
+ "epoch: 500\ttrain_loss: 0.09109\tdev_loss: 0.10154\teltime: 2.97068\n",
+ "epoch: 550\ttrain_loss: 0.07658\tdev_loss: 0.08560\teltime: 3.22704\n",
+ "epoch: 600\ttrain_loss: 0.06664\tdev_loss: 0.07253\teltime: 3.51260\n",
+ "epoch: 650\ttrain_loss: 0.05640\tdev_loss: 0.05513\teltime: 3.87460\n",
+ "epoch: 700\ttrain_loss: 0.04705\tdev_loss: 0.04137\teltime: 4.19259\n",
+ "epoch: 750\ttrain_loss: 0.04238\tdev_loss: 0.03520\teltime: 4.47007\n",
+ "epoch: 800\ttrain_loss: 0.03987\tdev_loss: 0.03232\teltime: 4.74716\n",
+ "epoch: 850\ttrain_loss: 0.03827\tdev_loss: 0.03111\teltime: 5.02860\n",
+ "epoch: 900\ttrain_loss: 0.03728\tdev_loss: 0.02889\teltime: 5.31432\n",
+ "epoch: 950\ttrain_loss: 0.03610\tdev_loss: 0.02898\teltime: 5.59623\n",
+ "epoch: 1000\ttrain_loss: 0.03513\tdev_loss: 0.02761\teltime: 5.87246\n",
+ "epoch: 1050\ttrain_loss: 0.03446\tdev_loss: 0.02677\teltime: 6.15345\n",
+ "epoch: 1100\ttrain_loss: 0.03388\tdev_loss: 0.02668\teltime: 6.43407\n",
+ "epoch: 1150\ttrain_loss: 0.03337\tdev_loss: 0.02574\teltime: 6.70995\n",
+ "epoch: 1200\ttrain_loss: 0.03304\tdev_loss: 0.02603\teltime: 6.98823\n",
+ "epoch: 1250\ttrain_loss: 0.03244\tdev_loss: 0.02476\teltime: 7.34500\n",
+ "epoch: 1300\ttrain_loss: 0.03218\tdev_loss: 0.02411\teltime: 7.62287\n",
+ "epoch: 1350\ttrain_loss: 0.03155\tdev_loss: 0.02389\teltime: 7.90124\n",
+ "epoch: 1400\ttrain_loss: 0.03133\tdev_loss: 0.02322\teltime: 8.18068\n",
+ "epoch: 1450\ttrain_loss: 0.03073\tdev_loss: 0.02298\teltime: 8.45253\n",
+ "epoch: 1500\ttrain_loss: 0.03036\tdev_loss: 0.02269\teltime: 8.73061\n",
+ "epoch: 1550\ttrain_loss: 0.03000\tdev_loss: 0.02222\teltime: 9.00461\n",
+ "epoch: 1600\ttrain_loss: 0.02968\tdev_loss: 0.02175\teltime: 9.28038\n",
+ "epoch: 1650\ttrain_loss: 0.02937\tdev_loss: 0.02159\teltime: 9.55810\n",
+ "epoch: 1700\ttrain_loss: 0.02909\tdev_loss: 0.02136\teltime: 9.83871\n",
+ "epoch: 1750\ttrain_loss: 0.02882\tdev_loss: 0.02089\teltime: 10.11503\n",
+ "epoch: 1800\ttrain_loss: 0.02878\tdev_loss: 0.02110\teltime: 10.46439\n",
+ "epoch: 1850\ttrain_loss: 0.02832\tdev_loss: 0.02026\teltime: 10.73900\n",
+ "epoch: 1900\ttrain_loss: 0.02810\tdev_loss: 0.02030\teltime: 11.02328\n",
+ "epoch: 1950\ttrain_loss: 0.02774\tdev_loss: 0.01975\teltime: 11.31012\n",
+ "Elapsed time = 11.598954916000366\n"
]
}
],
@@ -577,47 +583,47 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "epoch: 0\ttrain_loss: 2.78375\tdev_loss: 2.51061\teltime: 14.52040\n",
- "epoch: 50\ttrain_loss: 0.59925\tdev_loss: 0.55923\teltime: 16.43538\n",
- "epoch: 100\ttrain_loss: 0.31653\tdev_loss: 0.32432\teltime: 18.50102\n",
- "epoch: 150\ttrain_loss: 0.18461\tdev_loss: 0.19397\teltime: 20.48488\n",
- "epoch: 200\ttrain_loss: 0.05953\tdev_loss: 0.05293\teltime: 22.70340\n",
- "epoch: 250\ttrain_loss: 0.01788\tdev_loss: 0.01243\teltime: 24.50923\n",
- "epoch: 300\ttrain_loss: 0.01205\tdev_loss: 0.00835\teltime: 26.59553\n",
- "epoch: 350\ttrain_loss: 0.01116\tdev_loss: 0.00787\teltime: 28.56603\n",
- "epoch: 400\ttrain_loss: 0.01051\tdev_loss: 0.00744\teltime: 31.14397\n",
- "epoch: 450\ttrain_loss: 0.00984\tdev_loss: 0.00729\teltime: 33.12374\n",
- "epoch: 500\ttrain_loss: 0.00911\tdev_loss: 0.00694\teltime: 35.03787\n",
- "epoch: 550\ttrain_loss: 0.00861\tdev_loss: 0.00687\teltime: 36.63918\n",
- "epoch: 600\ttrain_loss: 0.00827\tdev_loss: 0.00673\teltime: 38.70901\n",
- "epoch: 650\ttrain_loss: 0.00812\tdev_loss: 0.00672\teltime: 40.98340\n",
- "epoch: 700\ttrain_loss: 0.00808\tdev_loss: 0.00694\teltime: 42.67140\n",
- "epoch: 750\ttrain_loss: 0.00803\tdev_loss: 0.00689\teltime: 44.55965\n",
- "epoch: 800\ttrain_loss: 0.00803\tdev_loss: 0.00683\teltime: 46.23075\n",
- "epoch: 850\ttrain_loss: 0.00800\tdev_loss: 0.00683\teltime: 48.70304\n",
- "epoch: 900\ttrain_loss: 0.00802\tdev_loss: 0.00701\teltime: 50.56538\n",
- "epoch: 950\ttrain_loss: 0.00798\tdev_loss: 0.00677\teltime: 52.43107\n",
- "epoch: 1000\ttrain_loss: 0.00797\tdev_loss: 0.00676\teltime: 54.27193\n",
- "epoch: 1050\ttrain_loss: 0.00796\tdev_loss: 0.00670\teltime: 56.22466\n",
- "epoch: 1100\ttrain_loss: 0.00794\tdev_loss: 0.00663\teltime: 58.29921\n",
- "epoch: 1150\ttrain_loss: 0.00793\tdev_loss: 0.00659\teltime: 60.01028\n",
- "epoch: 1200\ttrain_loss: 0.00793\tdev_loss: 0.00665\teltime: 61.88683\n",
- "epoch: 1250\ttrain_loss: 0.00791\tdev_loss: 0.00650\teltime: 63.60480\n",
- "epoch: 1300\ttrain_loss: 0.00790\tdev_loss: 0.00636\teltime: 65.56571\n",
- "epoch: 1350\ttrain_loss: 0.00789\tdev_loss: 0.00636\teltime: 67.53634\n",
- "epoch: 1400\ttrain_loss: 0.00788\tdev_loss: 0.00638\teltime: 69.21801\n",
- "epoch: 1450\ttrain_loss: 0.00800\tdev_loss: 0.00702\teltime: 71.48121\n",
- "epoch: 1500\ttrain_loss: 0.00785\tdev_loss: 0.00636\teltime: 73.39893\n",
- "epoch: 1550\ttrain_loss: 0.00785\tdev_loss: 0.00612\teltime: 75.22867\n",
- "epoch: 1600\ttrain_loss: 0.00790\tdev_loss: 0.00617\teltime: 76.81214\n",
- "epoch: 1650\ttrain_loss: 0.00782\tdev_loss: 0.00627\teltime: 78.50758\n",
- "epoch: 1700\ttrain_loss: 0.00785\tdev_loss: 0.00673\teltime: 80.06937\n",
- "epoch: 1750\ttrain_loss: 0.00780\tdev_loss: 0.00628\teltime: 81.70333\n",
- "epoch: 1800\ttrain_loss: 0.00780\tdev_loss: 0.00614\teltime: 83.57844\n",
- "epoch: 1850\ttrain_loss: 0.00778\tdev_loss: 0.00619\teltime: 85.11012\n",
- "epoch: 1900\ttrain_loss: 0.00777\tdev_loss: 0.00625\teltime: 86.85610\n",
- "epoch: 1950\ttrain_loss: 0.00777\tdev_loss: 0.00625\teltime: 88.32595\n",
- "Elapsed time = 75.69887185096741\n"
+ "epoch: 0\ttrain_loss: 2.78375\tdev_loss: 2.51061\teltime: 11.64286\n",
+ "epoch: 50\ttrain_loss: 0.59925\tdev_loss: 0.55923\teltime: 13.27524\n",
+ "epoch: 100\ttrain_loss: 0.31653\tdev_loss: 0.32432\teltime: 14.93617\n",
+ "epoch: 150\ttrain_loss: 0.18461\tdev_loss: 0.19397\teltime: 16.54737\n",
+ "epoch: 200\ttrain_loss: 0.05953\tdev_loss: 0.05293\teltime: 18.13060\n",
+ "epoch: 250\ttrain_loss: 0.01788\tdev_loss: 0.01243\teltime: 19.72843\n",
+ "epoch: 300\ttrain_loss: 0.01205\tdev_loss: 0.00835\teltime: 21.41892\n",
+ "epoch: 350\ttrain_loss: 0.01116\tdev_loss: 0.00787\teltime: 22.90162\n",
+ "epoch: 400\ttrain_loss: 0.01051\tdev_loss: 0.00744\teltime: 24.45135\n",
+ "epoch: 450\ttrain_loss: 0.00984\tdev_loss: 0.00729\teltime: 26.03485\n",
+ "epoch: 500\ttrain_loss: 0.00911\tdev_loss: 0.00694\teltime: 27.55288\n",
+ "epoch: 550\ttrain_loss: 0.00861\tdev_loss: 0.00687\teltime: 29.07457\n",
+ "epoch: 600\ttrain_loss: 0.00827\tdev_loss: 0.00673\teltime: 30.54862\n",
+ "epoch: 650\ttrain_loss: 0.00812\tdev_loss: 0.00672\teltime: 32.27572\n",
+ "epoch: 700\ttrain_loss: 0.00808\tdev_loss: 0.00694\teltime: 33.77082\n",
+ "epoch: 750\ttrain_loss: 0.00803\tdev_loss: 0.00689\teltime: 35.23642\n",
+ "epoch: 800\ttrain_loss: 0.00803\tdev_loss: 0.00683\teltime: 36.65269\n",
+ "epoch: 850\ttrain_loss: 0.00800\tdev_loss: 0.00683\teltime: 38.12384\n",
+ "epoch: 900\ttrain_loss: 0.00802\tdev_loss: 0.00701\teltime: 39.54441\n",
+ "epoch: 950\ttrain_loss: 0.00798\tdev_loss: 0.00677\teltime: 40.93773\n",
+ "epoch: 1000\ttrain_loss: 0.00797\tdev_loss: 0.00676\teltime: 42.33790\n",
+ "epoch: 1050\ttrain_loss: 0.00796\tdev_loss: 0.00670\teltime: 43.80358\n",
+ "epoch: 1100\ttrain_loss: 0.00794\tdev_loss: 0.00663\teltime: 45.30647\n",
+ "epoch: 1150\ttrain_loss: 0.00793\tdev_loss: 0.00659\teltime: 46.74806\n",
+ "epoch: 1200\ttrain_loss: 0.00793\tdev_loss: 0.00665\teltime: 48.19932\n",
+ "epoch: 1250\ttrain_loss: 0.00791\tdev_loss: 0.00650\teltime: 49.66190\n",
+ "epoch: 1300\ttrain_loss: 0.00790\tdev_loss: 0.00636\teltime: 51.07035\n",
+ "epoch: 1350\ttrain_loss: 0.00789\tdev_loss: 0.00636\teltime: 52.43710\n",
+ "epoch: 1400\ttrain_loss: 0.00788\tdev_loss: 0.00638\teltime: 53.90273\n",
+ "epoch: 1450\ttrain_loss: 0.00800\tdev_loss: 0.00702\teltime: 55.32491\n",
+ "epoch: 1500\ttrain_loss: 0.00785\tdev_loss: 0.00636\teltime: 56.77368\n",
+ "epoch: 1550\ttrain_loss: 0.00785\tdev_loss: 0.00612\teltime: 58.20147\n",
+ "epoch: 1600\ttrain_loss: 0.00790\tdev_loss: 0.00617\teltime: 59.74119\n",
+ "epoch: 1650\ttrain_loss: 0.00782\tdev_loss: 0.00627\teltime: 61.22715\n",
+ "epoch: 1700\ttrain_loss: 0.00785\tdev_loss: 0.00673\teltime: 62.64858\n",
+ "epoch: 1750\ttrain_loss: 0.00780\tdev_loss: 0.00628\teltime: 64.08438\n",
+ "epoch: 1800\ttrain_loss: 0.00780\tdev_loss: 0.00614\teltime: 65.60982\n",
+ "epoch: 1850\ttrain_loss: 0.00778\tdev_loss: 0.00619\teltime: 67.04397\n",
+ "epoch: 1900\ttrain_loss: 0.00777\tdev_loss: 0.00625\teltime: 68.50112\n",
+ "epoch: 1950\ttrain_loss: 0.00777\tdev_loss: 0.00625\teltime: 69.89413\n",
+ "Elapsed time = 59.75298190116882\n"
]
}
],
@@ -642,7 +648,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 12,
"id": "21e0ce18-123f-40eb-bad8-0e72d17fa76b",
"metadata": {},
"outputs": [
diff --git a/examples/KANs/p2_fbkan_vs_kan_noise_data_2d.ipynb b/examples/KANs/p2_fbkan_vs_kan_noise_data_2d.ipynb
index b9df8cf0..6fb83630 100644
--- a/examples/KANs/p2_fbkan_vs_kan_noise_data_2d.ipynb
+++ b/examples/KANs/p2_fbkan_vs_kan_noise_data_2d.ipynb
@@ -89,15 +89,17 @@
"source": [
"import torch\n",
"import numpy as np\n",
+ "import torch.nn as nn\n",
"import matplotlib.pyplot as plt\n",
"\n",
"from neuromancer.dataset import DictDataset\n",
"from neuromancer.modules import blocks\n",
- "from neuromancer.system import Node\n",
+ "from neuromancer.system import Node, System\n",
"from neuromancer.constraint import variable\n",
"from neuromancer.loss import PenaltyLoss\n",
"from neuromancer.problem import Problem\n",
"from neuromancer.trainer import Trainer\n",
+ "from neuromancer.callbacks import Callback\n",
"from neuromancer.loggers import LossLogger\n"
]
},
@@ -344,14 +346,14 @@
"\n",
"- `x`, `y`: Input variables, where $x, y \\in [0, 1]^2$.\n",
"- `z`: True target values from the function $f(x, y)$.\n",
- "- `z_hat`: Predicted values produced by either the KAN or FBKAN model.\n",
+ "- `z_hat`: Predicted values produced by either the KAN or FBKAN model, $\\hat{z}$.\n",
"\n",
"**Data Loss for FBKAN:**\n",
"\n",
"The data loss for FBKAN, denoted as `loss_data_fbkan`, measures the mean squared error (MSE) between the FBKAN predictions, `z_hat`, and the true values, `z`:\n",
"\n",
"$$\n",
- "\\ell_{\\text{data, FBKAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( z_i - z_{\\text{hat, FBKAN}} \\right)^2\n",
+ "\\ell_{\\text{data, FBKAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( z_i - \\hat{z}_i \\right)^2\n",
"$$\n",
"\n",
"This loss guides the FBKAN model to approximate the target function values accurately.\n",
@@ -361,7 +363,7 @@
"Similarly, the data loss for KAN, denoted as `loss_data_kan`, is the mean squared error between the KAN predictions, `z_hat`, and the true target values, `z`:\n",
"\n",
"$$\n",
- "\\ell_{\\text{data, KAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( z_i - z_{\\text{hat, KAN}} \\right)^2\n",
+ "\\ell_{\\text{data, KAN}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{data}}} \\sum_{i=1}^{N_{\\text{data}}} \\left( z_i - \\hat{z}_i \\right)^2\n",
"$$\n",
"\n",
"This loss term helps the KAN model learn to approximate the target function.\n",
@@ -409,7 +411,7 @@
"id": "9af5ad88-a719-4da0-b75c-b5fe2ac6b41b",
"metadata": {},
"source": [
- "### Construct the Neuromancer Problem objects and train"
+ "### Construct the Neuromancer `Problem` objects and train"
]
},
{
@@ -441,6 +443,8 @@
"name": "stdout",
"output_type": "stream",
"text": [
+ "None\n",
+ "None\n",
"Number of parameters: 600\n",
"Number of parameters: 150\n"
]
@@ -502,27 +506,27 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "epoch: 0\ttrain_loss: 0.19858\tdev_loss: 0.18781\teltime: 0.06342\n",
- "epoch: 50\ttrain_loss: 0.12017\tdev_loss: 0.11974\teltime: 1.78908\n",
- "epoch: 100\ttrain_loss: 0.03547\tdev_loss: 0.04448\teltime: 3.25373\n",
- "epoch: 150\ttrain_loss: 0.01443\tdev_loss: 0.01751\teltime: 4.10649\n",
- "epoch: 200\ttrain_loss: 0.01119\tdev_loss: 0.01346\teltime: 5.55846\n",
- "epoch: 250\ttrain_loss: 0.00829\tdev_loss: 0.00942\teltime: 6.65685\n",
- "epoch: 300\ttrain_loss: 0.00721\tdev_loss: 0.00813\teltime: 8.02346\n",
- "epoch: 350\ttrain_loss: 0.00956\tdev_loss: 0.00810\teltime: 9.76293\n",
- "epoch: 400\ttrain_loss: 0.00555\tdev_loss: 0.00580\teltime: 11.26922\n",
- "epoch: 450\ttrain_loss: 0.00501\tdev_loss: 0.00493\teltime: 12.25867\n",
- "epoch: 500\ttrain_loss: 0.00445\tdev_loss: 0.00428\teltime: 13.93477\n",
- "epoch: 550\ttrain_loss: 0.00413\tdev_loss: 0.00444\teltime: 15.11188\n",
- "epoch: 600\ttrain_loss: 0.00534\tdev_loss: 0.00503\teltime: 16.35734\n",
- "epoch: 650\ttrain_loss: 0.00339\tdev_loss: 0.00344\teltime: 18.05322\n",
- "epoch: 700\ttrain_loss: 0.00299\tdev_loss: 0.00280\teltime: 19.55740\n",
- "epoch: 750\ttrain_loss: 0.00307\tdev_loss: 0.00257\teltime: 20.53209\n",
- "epoch: 800\ttrain_loss: 0.00279\tdev_loss: 0.00238\teltime: 22.24692\n",
- "epoch: 850\ttrain_loss: 0.00280\tdev_loss: 0.00239\teltime: 23.44692\n",
- "epoch: 900\ttrain_loss: 0.00482\tdev_loss: 0.00311\teltime: 24.60944\n",
- "epoch: 950\ttrain_loss: 0.00264\tdev_loss: 0.00213\teltime: 26.23807\n",
- "epoch: 1000\ttrain_loss: 0.00259\tdev_loss: 0.00205\teltime: 27.82801\n"
+ "epoch: 0\ttrain_loss: 0.19858\tdev_loss: 0.18781\teltime: 0.04408\n",
+ "epoch: 50\ttrain_loss: 0.12017\tdev_loss: 0.11974\teltime: 0.98760\n",
+ "epoch: 100\ttrain_loss: 0.03547\tdev_loss: 0.04448\teltime: 1.88288\n",
+ "epoch: 150\ttrain_loss: 0.01443\tdev_loss: 0.01751\teltime: 2.69070\n",
+ "epoch: 200\ttrain_loss: 0.01119\tdev_loss: 0.01346\teltime: 3.48212\n",
+ "epoch: 250\ttrain_loss: 0.00829\tdev_loss: 0.00942\teltime: 4.28909\n",
+ "epoch: 300\ttrain_loss: 0.00721\tdev_loss: 0.00813\teltime: 5.13658\n",
+ "epoch: 350\ttrain_loss: 0.00956\tdev_loss: 0.00810\teltime: 5.89438\n",
+ "epoch: 400\ttrain_loss: 0.00555\tdev_loss: 0.00580\teltime: 6.76285\n",
+ "epoch: 450\ttrain_loss: 0.00501\tdev_loss: 0.00493\teltime: 7.56369\n",
+ "epoch: 500\ttrain_loss: 0.00445\tdev_loss: 0.00428\teltime: 8.55607\n",
+ "epoch: 550\ttrain_loss: 0.00413\tdev_loss: 0.00444\teltime: 9.78196\n",
+ "epoch: 600\ttrain_loss: 0.00534\tdev_loss: 0.00503\teltime: 10.75619\n",
+ "epoch: 650\ttrain_loss: 0.00339\tdev_loss: 0.00344\teltime: 11.84819\n",
+ "epoch: 700\ttrain_loss: 0.00299\tdev_loss: 0.00280\teltime: 12.94066\n",
+ "epoch: 750\ttrain_loss: 0.00307\tdev_loss: 0.00257\teltime: 14.01460\n",
+ "epoch: 800\ttrain_loss: 0.00279\tdev_loss: 0.00238\teltime: 15.07571\n",
+ "epoch: 850\ttrain_loss: 0.00280\tdev_loss: 0.00239\teltime: 16.25827\n",
+ "epoch: 900\ttrain_loss: 0.00482\tdev_loss: 0.00311\teltime: 17.41800\n",
+ "epoch: 950\ttrain_loss: 0.00264\tdev_loss: 0.00213\teltime: 18.54224\n",
+ "epoch: 1000\ttrain_loss: 0.00259\tdev_loss: 0.00205\teltime: 19.57284\n"
]
}
],
@@ -546,27 +550,27 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "epoch: 0\ttrain_loss: 0.20121\tdev_loss: 0.19113\teltime: 27.86444\n",
- "epoch: 50\ttrain_loss: 0.16842\tdev_loss: 0.16688\teltime: 28.25043\n",
- "epoch: 100\ttrain_loss: 0.14238\tdev_loss: 0.14534\teltime: 28.72706\n",
- "epoch: 150\ttrain_loss: 0.11018\tdev_loss: 0.11803\teltime: 29.45312\n",
- "epoch: 200\ttrain_loss: 0.07499\tdev_loss: 0.08277\teltime: 30.31180\n",
- "epoch: 250\ttrain_loss: 0.06059\tdev_loss: 0.06680\teltime: 31.02909\n",
- "epoch: 300\ttrain_loss: 0.05511\tdev_loss: 0.06288\teltime: 31.39583\n",
- "epoch: 350\ttrain_loss: 0.05344\tdev_loss: 0.06120\teltime: 31.81557\n",
- "epoch: 400\ttrain_loss: 0.05226\tdev_loss: 0.05941\teltime: 32.31351\n",
- "epoch: 450\ttrain_loss: 0.05113\tdev_loss: 0.05787\teltime: 32.85939\n",
- "epoch: 500\ttrain_loss: 0.04937\tdev_loss: 0.05685\teltime: 33.51572\n",
- "epoch: 550\ttrain_loss: 0.04648\tdev_loss: 0.05583\teltime: 34.15521\n",
- "epoch: 600\ttrain_loss: 0.04318\tdev_loss: 0.04911\teltime: 34.89664\n",
- "epoch: 650\ttrain_loss: 0.04042\tdev_loss: 0.04821\teltime: 35.47894\n",
- "epoch: 700\ttrain_loss: 0.03868\tdev_loss: 0.04386\teltime: 36.02937\n",
- "epoch: 750\ttrain_loss: 0.03666\tdev_loss: 0.04242\teltime: 36.55968\n",
- "epoch: 800\ttrain_loss: 0.03454\tdev_loss: 0.03878\teltime: 37.04607\n",
- "epoch: 850\ttrain_loss: 0.03277\tdev_loss: 0.03831\teltime: 37.70012\n",
- "epoch: 900\ttrain_loss: 0.03190\tdev_loss: 0.03761\teltime: 38.33910\n",
- "epoch: 950\ttrain_loss: 0.03140\tdev_loss: 0.03736\teltime: 38.94758\n",
- "epoch: 1000\ttrain_loss: 0.03165\tdev_loss: 0.03805\teltime: 39.31244\n"
+ "epoch: 0\ttrain_loss: 0.20121\tdev_loss: 0.19113\teltime: 19.64045\n",
+ "epoch: 50\ttrain_loss: 0.16842\tdev_loss: 0.16688\teltime: 20.06003\n",
+ "epoch: 100\ttrain_loss: 0.14238\tdev_loss: 0.14534\teltime: 20.53543\n",
+ "epoch: 150\ttrain_loss: 0.11018\tdev_loss: 0.11803\teltime: 20.97161\n",
+ "epoch: 200\ttrain_loss: 0.07499\tdev_loss: 0.08277\teltime: 21.44121\n",
+ "epoch: 250\ttrain_loss: 0.06059\tdev_loss: 0.06680\teltime: 21.91846\n",
+ "epoch: 300\ttrain_loss: 0.05511\tdev_loss: 0.06288\teltime: 22.31885\n",
+ "epoch: 350\ttrain_loss: 0.05344\tdev_loss: 0.06120\teltime: 22.70428\n",
+ "epoch: 400\ttrain_loss: 0.05226\tdev_loss: 0.05941\teltime: 23.09720\n",
+ "epoch: 450\ttrain_loss: 0.05113\tdev_loss: 0.05787\teltime: 23.51434\n",
+ "epoch: 500\ttrain_loss: 0.04937\tdev_loss: 0.05685\teltime: 24.02329\n",
+ "epoch: 550\ttrain_loss: 0.04648\tdev_loss: 0.05583\teltime: 24.45336\n",
+ "epoch: 600\ttrain_loss: 0.04318\tdev_loss: 0.04911\teltime: 24.96189\n",
+ "epoch: 650\ttrain_loss: 0.04042\tdev_loss: 0.04821\teltime: 25.38162\n",
+ "epoch: 700\ttrain_loss: 0.03868\tdev_loss: 0.04386\teltime: 25.88007\n",
+ "epoch: 750\ttrain_loss: 0.03666\tdev_loss: 0.04242\teltime: 26.37139\n",
+ "epoch: 800\ttrain_loss: 0.03454\tdev_loss: 0.03878\teltime: 26.78114\n",
+ "epoch: 850\ttrain_loss: 0.03277\tdev_loss: 0.03831\teltime: 27.16932\n",
+ "epoch: 900\ttrain_loss: 0.03190\tdev_loss: 0.03761\teltime: 27.55376\n",
+ "epoch: 950\ttrain_loss: 0.03140\tdev_loss: 0.03736\teltime: 28.00943\n",
+ "epoch: 1000\ttrain_loss: 0.03165\tdev_loss: 0.03805\teltime: 28.40723\n"
]
}
],
diff --git a/examples/KANs/p3_mfkan_example_1d.ipynb b/examples/KANs/p3_mfkan_example_1d.ipynb
new file mode 100644
index 00000000..fea8c314
--- /dev/null
+++ b/examples/KANs/p3_mfkan_example_1d.ipynb
@@ -0,0 +1,919 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "zPjMocS6JIUz"
+ },
+ "source": [
+ "# Multi-Fidelity Kolmogorov-Arnold Networks (MFKANs) in Neuromancer\n",
+ "\n",
+ "This tutorial demonstrates the use of Multi-Fidelity Kolmogorov-Arnold Networks (MFKANs) for learning functions from both high and low-fidelity data sources. MFKANs enable efficient training with limited expensive high-fidelity data by leveraging correlations with more abundant low-fidelity data.\n",
+ "\n",
+ "This example is divided into three parts. First, we train a KAN with only low-fidelity data. We then proceed with training a KAN with only high-fidelity data. Finally, we demonstrate how to use an MFKAN to leverage both high-fidelity and low-fidelity data, yielding results that are more accurate.\n",
+ "\n",
+ "\n",
+ "### Kolmogorov-Arnold Networks (KANs)\n",
+ "KANs are neural networks inspired by the Kolmogorov-Arnold theorem, providing an alternative to traditional multilayer perceptrons (MLPs). KANs approximate multivariate functions by decomposing them into sums of nested univariate functions. Specifically, a KAN approximates a function $f(x)$ as:\n",
+ "\n",
+ "$$\n",
+ "f(x) \\approx \\sum_{i_{nl-1}=1}^{m_{nl-1}} \\phi_{nl-1, i_{nl-1}} \\left( \\cdots \\sum_{i_1=1}^{m_1} \\phi_{1, i_2, i_1} \\left( \\sum_{i_0=1}^{m_0} \\phi_{0, i_1, i_0}(x_{i_0}) \\right) \\cdots \\right)\n",
+ "$$\n",
+ "\n",
+ "where $\\phi_{j, i, k}$ are trainable, univariate activation functions represented by splines. This structure enables KANs to locally adjust function behavior with flexible resolution, making them effective for tasks with noisy data or where high interpretability is needed.\n",
+ "\n",
+ "### Multi-Fidelity KANs (MFKANs)\n",
+ "MFKANs extend KANs to efficiently learn from multiple data fidelities through a composite architecture consisting of three main components:\n",
+ "\n",
+ "1. **Low-fidelity KAN** ($\\mathcal{K}_L$): Standard KAN block, with polynomial degree $k>1$. Learns the low-fidelity data behavior.\n",
+ "2. **Linear KAN** ($\\mathcal{K}_l$): A linear KAN block (polynomial degree $k=1$) and two grid points. Captures linear correlations between fidelities.\n",
+ "3. **Nonlinear KAN** ($\\mathcal{K}_{nl}$): Standard KAN block, with polynomial degree $k>1$, but that also takes the outputs of the low-fidelity KAN as input. Models nonlinear corrections.\n",
+ "\n",
+ "The multi-fidelity prediction $\\mathcal{K}_M$ is given by a convex combination:\n",
+ "\n",
+ "$$\n",
+ "\\mathcal{K}_M(x) = \\alpha \\mathcal{K}_{nl}(x) + (1-\\alpha)\\mathcal{K}_l(x)\n",
+ "$$\n",
+ "\n",
+ "where $\\alpha$ is a trainable parameter, and $\\mathcal{K}_{nl}, \\mathcal{K}_l$ take as additional input the predictions of the low-fidelity KAN $\\mathcal{K}_L$. This structure allows MFKANs to:\n",
+ "- Leverage abundant low-fidelity data for basic feature learning\n",
+ "- Use limited high-fidelity data efficiently by separating linear and nonlinear correlations\n",
+ "- Maintain accuracy even with sparse high-fidelity sampling\n",
+ "\n",
+ "
\n",
+ "\n",
+ "### Key Applications\n",
+ "MFKANs are particularly useful for:\n",
+ "- Function fitting with multiple simulation fidelities\n",
+ "- Multi-resolution data fusion\n",
+ "- Efficient surrogate modeling for expensive computations\n",
+ "\n",
+ "### References\n",
+ "\n",
+ "[1] [Liu, Ziming, et al. (2024). KAN: Kolmogorov-Arnold Networks.](https://arxiv.org/abs/2404.19756)\n",
+ "\n",
+ "[2] https://github.com/Blealtan/efficient-kan\n",
+ "\n",
+ "[3] [Howard, Amanda A., et al. (2024) Multifidelity Kolmogorov-Arnold networks.](https://arxiv.org/abs/2410.14764)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "Y61YA90-WIZ1"
+ },
+ "source": [
+ "### Install Neuromancer\n",
+ "(Note: You can skip this step if running locally.)\n",
+ "(Note 2: Colab might ask you to restart your session after installing Neuromancer. Simply restart it when prompted.)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 1000
+ },
+ "id": "WZrPCr9GWEAJ",
+ "outputId": "d0ff6dfe-de2a-4675-a36c-e2a7fce486d9"
+ },
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "\n",
+ "# Check if the neuromancer directory already exists\n",
+ "if not os.path.isdir('neuromancer'):\n",
+ " # Clone the specific branch of the repository\n",
+ " !git clone --branch feature/mfkans https://github.com/pnnl/neuromancer.git\n",
+ "\n",
+ "# Navigate to the repository directory\n",
+ "%cd neuromancer\n",
+ "\n",
+ "# Install the repository with the required extras\n",
+ "!pip install -e .[docs,tests,examples]\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "6k0-63d0JIU1"
+ },
+ "source": [
+ "### Import dependencies"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "OdYMzuSDi7Js"
+ },
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "import numpy as np\n",
+ "import matplotlib.pyplot as plt\n",
+ "\n",
+ "from neuromancer.dataset import DictDataset\n",
+ "from neuromancer.modules import blocks\n",
+ "from neuromancer.system import Node, System\n",
+ "from neuromancer.constraint import variable\n",
+ "from neuromancer.loss import PenaltyLoss\n",
+ "from neuromancer.problem import Problem\n",
+ "from neuromancer.trainer import Trainer\n",
+ "from neuromancer.loggers import LossLogger\n",
+ "\n",
+ "# filter some user warnings from torch broadcast\n",
+ "import warnings\n",
+ "warnings.filterwarnings(\"ignore\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Configure device and RNG seed"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "id": "4-D966haJIU1"
+ },
+ "outputs": [],
+ "source": [
+ "# Set default dtype to float32\n",
+ "torch.set_default_dtype(torch.float)\n",
+ "#PyTorch random number generator\n",
+ "torch.manual_seed(1234)\n",
+ "# Random number generators in other libraries\n",
+ "np.random.seed(1234)\n",
+ "# Device configuration\n",
+ "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Generate and visualize data\n",
+ "\n",
+ "We will use the following jump function with a linear correlation. In this example we have sparse, high-fidelity data, which is not sufficient to capture the jump. \n",
+ "$$\n",
+ " y_L(x) = \\begin{cases} \n",
+ " 0.1\\left[0.5(6x-2)^2 \\sin(12x-4) + 10(x-0.5)-5\\right] & x \\leq 0.5 \\\\\n",
+ " 0.1\\left[0.5(6x-2)^2 \\sin(12x-4) + 10(x-0.5)-2\\right] & x > 0.5 \n",
+ " \\end{cases}\n",
+ "$$\n",
+ "\n",
+ "$$\n",
+ "y_H(x) = 2y_L(x) -2x + 2\n",
+ "$$\n",
+ "\n",
+ "for $ x \\in [0, 1].$ We take $ N_{L}= 51 $ low-fidelity data points evenly distributed in $[0,1]$ and $ N_{H} = 5 $ high-fidelity data points evenly spaced in $[0.1, 0.93]$. \n",
+ "\n",
+ "We also generate $N_\\text{full} = 200$ data points to test low, high and multi-fidelity models.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define the low-fidelity and high-fidelity functions\n",
+ "def yL(x):\n",
+ " y = torch.where(x < 0.5,\n",
+ " 0.5*(6*x-2)**2 * torch.sin(12*x-4) + 10*(x-0.5)-5,\n",
+ " 3 + 0.5*(6*x-2)**2 * torch.sin(12*x-4) + 10*(x-0.5)-5)\n",
+ " return y / 10\n",
+ "\n",
+ "def yH(x):\n",
+ " return 2*(yL(x)) - 2*x + 2\n",
+ "\n",
+ "\n",
+ "# Generate three datasets: low-fidelity \n",
+ "x_data_L = torch.linspace(0, 1, 51).reshape(-1, 1)\n",
+ "y_data_L = yL(x_data_L)\n",
+ "\n",
+ "x_data_H = torch.linspace(.1, .93, 5).reshape(-1, 1)\n",
+ "y_data_H = yH(x_data_H)\n",
+ "\n",
+ "x_data_full = torch.linspace(0, 1, 200).reshape(-1, 1)\n",
+ "y_data_full = yH(x_data_full)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A visualization of the data is shown below. \n",
+ "\n",
+ "The circular markers denote the sampled high-fidelity (green) and low-fidelity points, and the solid lines denote the exact functions defined above."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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HOCpzY9hYzFrxFymD5+Z7JAGvQGfdK9fv77HElbHhoHfddddPProo9TW1lJdXZ14PBwO80//9E8cPnwYn8/HtGnTeP3110+6DFZvMAwD91kM8RYREREREekrf93xLP5gO3mp+Vw3+aZkhzMkDPik+5JLLjlt1exHH320x/2vf/3rfP3rX+/jqERERERERPqX7bVb2HpkEwYmt864A486By8ITbYQEREREREZ5DpDHfxl2zMALB69hBFZI5Mc0dAx4Hu6pfe8f1TAMcePJvigkQUiIiIiItK/2LbNX7b9mUCki6L0YSwZ95FkhzSkqKdbRERERERkENt8eAM767fjMBx8bMYncJrqe72QlHSLiIiIiIgMUu3dbbyw4zkALh37EYozhic5oqFHSbeIiIiIiMggZNs2z259imA0yIjMkVw8um9WbJLTU9ItIiIiIiIyCK2rXs3+pj04TScfm/EJTNOR7JCGJCXdIiIiIiIig0xLoJm/7XoegI+Mv4b8tMIkRzR0KenuI6rw3T/p7yIiIiIig51lWzyz5QnCsTClOeUsLPtwskMa0pR09zKXywVAIBBIciRyMsf+Lsf+TiIiIiIig82qA29T1VKJ2+HmlumfwDSU9iWTasX3MofDQVZWFg0NDQD4fD4Mw0hyVGLbNoFAgIaGBrKysnA4NJ9FRERERAafxs56Xt3zEgBXT7yBHF9ukiMSJd19oKioCCCReEv/kZWVlfj7iIiIiIgMJpYV48+bnyBqRRmTN565IxckOyRBSXefMAyD4uJiCgoKiEQiyQ5HjnK5XOrhFhEREZFB662KN6lpr8br9HLztI9rxG0/oaS7DzkcDiV5IiIiIiLS52r9R3hj36sAXDf5JjJTspIbkCRoRr2IiIiIiMgAFrWiPLP5T8TsGJMKpzBj+OxkhyTHUdItIiIiIiIygL257zVqO47gc/n46NSPaVh5P6OkW0REREREZICqaatmxf43APjo1I+R5klPckTyfkq6RUREREREBqBILMKfN/8JG4tpw2YypXh6skOSk1DSLSIiIiIiMgC9tudvNHY1kOZO5/rJNyc7HDkFJd0iIiIiIiIDTFVzJSsPvAXATdM+js/tS3JEcipKukVERERERAaQUDTEM1uewMZmdsk8JhROSnZIchpKukVERERERAaQV3a9QEt3M1nebK6Z+NFkhyMfQEm3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4uqrr8Z9992HZ555ZrSHRpSVjRs34uGHH8Zvf/tbbN++HX/605/wyiuv4IEHHhjtoRGNKHa6j1JeXg5FUdDS0tLr8ZaWFlRXV/f5nOrq6qyOJ8q3odRxtyeeeAKPPvooXn/9dUybNi2fwyQaULZ1vHfvXjQ1NWH+/PnpxwzDAABYLBbs3r0bkyZNyu+giY4ylN/HNTU1sFqtUBQl/djUqVPR3NyMVCoFm82W1zET9WUotXz//fdj0aJFuOmmmwAAZ555JqLRKG6++Wbcd999kGX2/2js6y/reTyeQXW5AXa6M9hsNpx77rnYsGFD+jHDMLBhwwbMmjWrz+fMmjWr1/EA8Le//a3f44nybSh1DACPP/44HnjgAaxfvx6f//znR2KoRP3Kto6nTJmCnTt3orGxMX376le/ml5ttK6ubiSHTwRgaL+PL7jgAuzZsyf9oREAfPTRR6ipqWHgplEzlFqOxWIZwbr7wyRzDSuisS8nWS/7Nd4K3+rVq4XdbhcrVqwQH3zwgbj55ptFSUmJaG5uFkIIsWjRIrF06dL08W+++aawWCziiSeeELt27RINDQ3CarWKnTt3jtZbIMq6jh999FFhs9nE2rVrxeHDh9O3cDg8Wm+BKOs6PhpXL6exINs6PnjwoHC73eK2224Tu3fvFn/5y19EZWWlePDBB0frLRAJIbKv5YaGBuF2u8WqVavEvn37xF//+lcxadIkcdVVV43WWyAS4XBY7NixQ+zYsUMAEL/4xS/Ejh07xIEDB4QQQixdulQsWrQoffy+ffuEy+USP/jBD8SuXbvEsmXLhKIoYv369YN+TYbufvz6178WJ510krDZbGLGjBnirbfeSv9s9uzZ4vrrr+91/EsvvSQmT54sbDabOP3008Urr7wywiMmypRNHdfX1wsAGbeGhoaRHzhRD9n+Pu6JoZvGimzrePPmzWLmzJnCbreLiRMnioceekhomjbCoybKlE0tq6oqfvKTn4hJkyYJh8Mh6urqxK233ir8fv/ID5yoyxtvvNHnv3m7a/f6668Xs2fPznjOWWedJWw2m5g4caJ47rnnsnpNSQjO7SAiIiIiIiLKB17TTURERERERJQnDN1EREREREREecLQTURERERERJQnDN1EREREREREecLQTURERERERJQnDN1EREREREREecLQTURERERERJQnDN1EREREREREecLQTURERERERJQnDN1EREREREREecLQTURERERERJQnDN1EREREREREecLQTURERGlCCMybNw+SJGHNmjUZP7viiiv6/BkRERH1TRJCiNEeBBEREY0dLS0tmDZtGpLJJN555x3U19cDAH75y19iyZIluOGGG/Dcc8+N8iiJiIjGB4ZuIiIiyrB+/XrMmzcPs2bNwqZNm7Bz507MnDkT9fX12L59O4qLi0d7iEREROMCp5cTERFRhssvvxzf//73sXnzZixduhTXXnsthBBYtWoVAzcREVEW2OkmIiKiPiWTSZx33nlobGwEADz22GO4++67R3dQRERE4ww73URERNQnu92OK664AgDgcDhw0003jfKIiIiIxh+GbiIiIurT1q1b8fOf/xxlZWVIJBK45ZZbRntIRERE4w5DNxEREWUIh8O47rrrYLFYsHHjRixcuBAvvfQS/vCHP4z20IiIiMYVXtNNREREGRYtWoQXXngBv/nNb7B48WL4/X5Mnz4dnZ2d2L59OyZPnjzaQyQiIhoXGLqJiIiolxdeeAGLFi3C/Pnz8fLLL6cf37RpEy699FKcffbZ2LJlC6xW6yiOkoiIaHzg9HIiIiJK279/PxYvXoyampqMqeQXX3wx7rnnHmzbtg333nvvKI2QiIhofGGnm4iIiIiIiChP2OkmIiIiIiIiyhOGbiIiIiIiIqI8YegmIiIiIiIiyhOGbiIiIiIiIqI8YegmIiIiIiIiyhOGbiIiIiIiIqI8YegmIiIiIiIiyhOGbiIiIiIiIqI8YegmIiIiIiIiyhOGbiIiIiIiIqI8YegmIiIiIiIiyhOGbiIiIiIiIqI8YegmIiIiIiIiypP/D9HxjV/bWfssAAAAAElFTkSuQmCC",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Visualize the data\n",
+ "plt.figure(figsize=(10, 4))\n",
+ "\n",
+ "# Plot data points\n",
+ "plt.scatter(x_data_L.numpy(), y_data_L.numpy(), c=\"#4e79a7\", label='LF data', alpha=0.8)\n",
+ "plt.scatter(x_data_H.numpy(), y_data_H.numpy(), c=\"#59a14f\", label='HF data', alpha=0.8)\n",
+ "\n",
+ "# Plot continuous functions\n",
+ "plt.plot(x_data_L.numpy(), yL(x_data_L).numpy(), \"#4e79a7\", label='LF', alpha=0.8)\n",
+ "plt.plot(x_data_L.numpy(), yH(x_data_L).numpy(), \"#59a14f\", label='HF', alpha=0.8)\n",
+ "\n",
+ "# Customize plot\n",
+ "plt.xlim(0, 1)\n",
+ "plt.xlabel('x', fontsize=14)\n",
+ "plt.ylabel('f(x)', fontsize=14)\n",
+ "plt.legend(fontsize=10)\n",
+ "plt.grid(True, alpha=0.3)\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# We will leverage Neuromancer's DictDataset to wrap the different datasets, giving them names\n",
+ "train_data_L = DictDataset({'x': x_data_L.to(device), 'y': y_data_L.to(device)}, name='train_L')\n",
+ "train_data_H = DictDataset({'x': x_data_H.to(device), 'y': y_data_H.to(device)}, name='train_H')\n",
+ "data_full = DictDataset({'x': x_data_full.to(device), 'y': y_data_full.to(device)}, name='data_full')\n",
+ "\n",
+ "# Here we leverage Torch's DataLoader class, that can use Neuromancer's DictDataset directly\n",
+ "batch_size_L = train_data_L.datadict['x'].shape[0]\n",
+ "batch_size_H = train_data_H.datadict['x'].shape[0]\n",
+ "batch_size_full = data_full.datadict['x'].shape[0]\n",
+ "\n",
+ "train_loader_L = torch.utils.data.DataLoader(train_data_L, batch_size=batch_size_L,\n",
+ " collate_fn=train_data_L.collate_fn,\n",
+ " shuffle=False)\n",
+ "\n",
+ "train_loader_H = torch.utils.data.DataLoader(train_data_H, batch_size=batch_size_H,\n",
+ " collate_fn=train_data_H.collate_fn,\n",
+ " shuffle=False)\n",
+ "\n",
+ "\n",
+ "data_loader_full = torch.utils.data.DataLoader(data_full, batch_size=batch_size_full,\n",
+ " collate_fn=data_full.collate_fn,\n",
+ " shuffle=False)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Part 1: Create a single-fidelity KAN and train on low-fidelity data\n",
+ "\n",
+ "We begin by creating the low-fidelity KAN block, which will learn from the low-fidelity data. The `KANBlock` in Neuromancer provides a flexible implementation of Kolmogorov-Arnold Networks.\n",
+ "\n",
+ "- **`insize`**: *(int)* – Dimensionality of the input space. Set to 1 for our univariate function.\n",
+ "\n",
+ "- **`outsize`**: *(int)* – Dimensionality of the output space. Set to 1 as we're predicting a scalar value.\n",
+ "\n",
+ "- **`hsizes`**: *(list[int])* – Architecture of hidden layers. Here we use a single hidden layer with 5 nodes.\n",
+ "\n",
+ "- **`grid_sizes`**: *(list[int])* – Number of grid points for B-spline evaluation. Controls the resolution of our function approximation.\n",
+ "\n",
+ "- **`spline_order`**: *(int)* – Order of B-spline basis functions.\n",
+ "\n",
+ "- **`base_activation`**: *(callable)* – Base activation function.\n",
+ "\n",
+ "The low-fidelity KAN is wrapped in a Neuromancer `Node`. This node maps input 'x' to predicted output 'y_hat'.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define the low-fidelity KAN model\n",
+ "kan_L = blocks.KANBlock(\n",
+ " insize=1, # Input size\n",
+ " outsize=1, # Output size\n",
+ " hsizes=[5], # KAN shape is [insize, hsizes, outsize]\n",
+ " grid_sizes=[5], # Grid size. Note: Neuromancer currently only support single-grid\n",
+ " spline_order=3, # 3rd order splines\n",
+ " base_activation=torch.nn.Sigmoid, # Nonlinear base activation function\n",
+ ").to(device)\n",
+ "\n",
+ "\n",
+ "# Symbolic wrapper of the LF KAN\n",
+ "kan_wrapper_L = Node(kan_L, ['x'], ['y_hat'], name='wrapper_L')\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Define symbolic variables and losses for low-fidelity model\n",
+ "\n",
+ "In the next cell, we construct a loss function for the low-fidelity model. The goal is to minimize the error between the predicted values, $\\hat{f}(x) = $ `y_hat`, and the true target values, $f(x) = $ `y`, across the dataset.\n",
+ "\n",
+ "**Symbolic Variables:**\n",
+ "\n",
+ "- `x`: Input variables, where $x \\in [0, 1]$.\n",
+ "- `y`: True target values from the function $f(x)$.\n",
+ "- `y_hat`: Predicted values produced by KAN model, $\\hat{y}$.\n",
+ "\n",
+ "\n",
+ "**Data Loss for KAN:**\n",
+ "\n",
+ "The data loss for the low-fidelity KAN, denoted as `loss_data_L`, is the mean squared error between the KAN predictions, `y_hat`, and the true target values, `y`:\n",
+ "\n",
+ "$$\n",
+ "\\ell_{\\text{L}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{L}}} \\sum_{i=1}^{N_{\\text{L}}} \\left( y_i - \\hat{y}_i \\right)^2\n",
+ "$$\n",
+ "\n",
+ "where $N_{\\text{L}}$ denotes the number of points in the low-fidelity dataset. This loss term guides the KAN model to learn the target function.\n",
+ "\n",
+ "**Loss Function:**\n",
+ "\n",
+ "The loss function is then constructed using Neuromancer's `PenaltyLoss`:\n",
+ "\n",
+ "- **`loss_L`**: Defined for the KAN model, using `loss_data_L`.\n",
+ "\n",
+ "In this case, we have left the problem unconstrainted. However, constraints can be added via the `constraints` argument."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define symbolic variables for low-fidelity model\n",
+ "x_L = variable('x')\n",
+ "y_L = variable('y')\n",
+ "y_hat_L = variable('y_hat')\n",
+ "\n",
+ "# Define losses\n",
+ "loss_data_L = (y_L == y_hat_L)^2\n",
+ "loss_data_L.name = \"ref_loss_L\"\n",
+ "\n",
+ "# Create loss function\n",
+ "loss_L = PenaltyLoss(objectives=[loss_data_L], constraints=[])\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Construct Neuromancer `Problem` object and train low-fidelity model\n",
+ "\n",
+ "Here we train a single-fidelity KAN with low-fidelity data."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of parameters: 100\n",
+ "epoch: 0\ttrain_L_loss: 0.28872\teltime: 0.03216\n",
+ "epoch: 1000\ttrain_L_loss: 0.00097\teltime: 1.33816\n",
+ "epoch: 2000\ttrain_L_loss: 0.00070\teltime: 2.64144\n",
+ "epoch: 3000\ttrain_L_loss: 0.00060\teltime: 3.92178\n",
+ "epoch: 4000\ttrain_L_loss: 0.00054\teltime: 5.23791\n",
+ "epoch: 5000\ttrain_L_loss: 0.00042\teltime: 6.52041\n",
+ "epoch: 6000\ttrain_L_loss: 0.00033\teltime: 7.82992\n",
+ "epoch: 7000\ttrain_L_loss: 0.00013\teltime: 9.15595\n",
+ "epoch: 8000\ttrain_L_loss: 0.00003\teltime: 10.45523\n",
+ "epoch: 9000\ttrain_L_loss: 0.00000\teltime: 11.71683\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Construct the optimization problem\n",
+ "problem_L = Problem(nodes=[kan_wrapper_L], loss=loss_L, grad_inference=True)\n",
+ "\n",
+ "# Create trainer for LF model\n",
+ "init_lr =0.005\n",
+ "epoch_verbose_L = 1000\n",
+ "num_epochs_L=10000\n",
+ "logger_L = LossLogger(args=None, savedir='test_L', verbosity=epoch_verbose_L, stdout=['train_L_loss'])\n",
+ "\n",
+ "\n",
+ "trainer_L = Trainer(\n",
+ " problem_L.to(device),\n",
+ " train_data=train_loader_L,\n",
+ " dev_data=train_loader_L,\n",
+ " optimizer= torch.optim.Adam(problem_L.parameters(), lr=init_lr),\n",
+ " epoch_verbose=epoch_verbose_L,\n",
+ " logger=logger_L,\n",
+ " epochs=num_epochs_L,\n",
+ " train_metric='train_L_loss',\n",
+ " eval_metric='train_L_loss',\n",
+ " dev_metric='train_L_loss',\n",
+ " warmup=num_epochs_L,\n",
+ " device=device\n",
+ ")\n",
+ "\n",
+ "\n",
+ "# Train LF model\n",
+ "best_model_L = trainer_L.train()\n",
+ "problem_L.load_state_dict(best_model_L)\n",
+ "trained_model_L = problem_L.nodes[0]\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Part 2: Create a single-fidelity KAN and train on high-fidelity data\n",
+ "\n",
+ "Next, we construct a loss function for the high-fidelity model. \n",
+ "\n",
+ "The idea is the same as before: we will minimize the error between the predicted values, $\\hat{f}(x) = $ `y_hat`, and the true target values, $f(x) = $ `y`, across the high-fidelity dataset.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define the high-fidelity KAN model\n",
+ "kan_H = blocks.KANBlock(\n",
+ " insize=1, # Input size\n",
+ " outsize=1, # Output size\n",
+ " hsizes=[5], # KAN shape is [insize, hsizes, outsize]\n",
+ " grid_sizes=[5], # Grid size. Note: Neuromancer currently only support single-grid\n",
+ " spline_order=3, # 3rd order splines\n",
+ " base_activation=torch.nn.Sigmoid, # Nonlinear base activation function\n",
+ ").to(device)\n",
+ "\n",
+ "# Symbolic wrapper of the HF KAN\n",
+ "kan_wrapper_H = Node(kan_H, ['x'], ['y_hat'], name='wrapper_H')\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Define symbolic variables and losses for high-fidelity KAN\n",
+ "\n",
+ "The data loss for the high-fidelity KAN, denoted as `loss_data_H`, is the mean squared error between the KAN predictions, `y_hat`, and the true target values, `y`:\n",
+ "\n",
+ "$$\n",
+ "\\ell_{\\text{H}} = \\text{scaling} \\cdot \\frac{1}{N_{\\text{H}}} \\sum_{i=1}^{N_{\\text{H}}} \\left( y_i - \\hat{y}_i \\right)^2\n",
+ "$$\n",
+ "\n",
+ "where $N_{\\text{H}}$ denotes the number of points in the high-fidelity dataset. Similarly to the low-fidelity case, we construct the loss function using Neuromancer's `PenaltyLoss`."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define symbolic variables for HF model\n",
+ "x_H = variable('x')\n",
+ "y_H = variable('y')\n",
+ "y_hat_H = variable('y_hat')\n",
+ "\n",
+ "# Define losses\n",
+ "loss_data_H = (y_H == y_hat_H)^2\n",
+ "loss_data_H.name = \"ref_loss_H\"\n",
+ "\n",
+ "# Create loss function\n",
+ "loss_H = PenaltyLoss(objectives=[loss_data_H], constraints=[])\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Construct Neuromancer `Problem` object and train high-fidelity model\n",
+ "\n",
+ "Here we train a KAN with the high-fidelity data alone."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of parameters: 100\n",
+ "epoch: 0\ttrain_H_loss: 0.62511\teltime: 0.00242\n",
+ "epoch: 1000\ttrain_H_loss: 0.00000\teltime: 1.00987\n",
+ "epoch: 2000\ttrain_H_loss: 0.00000\teltime: 1.98075\n",
+ "epoch: 3000\ttrain_H_loss: 0.00000\teltime: 2.96927\n",
+ "epoch: 4000\ttrain_H_loss: 0.00000\teltime: 3.93970\n",
+ "epoch: 5000\ttrain_H_loss: 0.00000\teltime: 4.90751\n",
+ "epoch: 6000\ttrain_H_loss: 0.00000\teltime: 5.88304\n",
+ "epoch: 7000\ttrain_H_loss: 0.00000\teltime: 6.87024\n",
+ "epoch: 8000\ttrain_H_loss: 0.00000\teltime: 7.88022\n",
+ "epoch: 9000\ttrain_H_loss: 0.00000\teltime: 8.85284\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Construct the high-fidelity optimization problem\n",
+ "problem_H = Problem(nodes=[kan_wrapper_H], loss=loss_H, grad_inference=True)\n",
+ "\n",
+ "# Create trainer for high-fidelity model\n",
+ "init_lr =0.005\n",
+ "epoch_verbose_H = 1000\n",
+ "num_epochs_H=10000\n",
+ "logger_H = LossLogger(args=None, savedir='test_HF', verbosity=epoch_verbose_H, stdout=['train_H_loss'])\n",
+ "\n",
+ "trainer_H = Trainer(\n",
+ " problem_H.to(device),\n",
+ " train_data=train_loader_H,\n",
+ " dev_data=train_loader_H,\n",
+ " optimizer= torch.optim.Adam(problem_H.parameters(), lr=init_lr),\n",
+ " epoch_verbose=epoch_verbose_H,\n",
+ " logger=logger_H,\n",
+ " epochs=num_epochs_H,\n",
+ " train_metric='train_H_loss',\n",
+ " eval_metric='train_H_loss',\n",
+ " dev_metric='train_H_loss',\n",
+ " warmup=num_epochs_H,\n",
+ " device=device\n",
+ ")\n",
+ "\n",
+ "# Train HF model\n",
+ "best_model_H = trainer_H.train()\n",
+ "problem_H.load_state_dict(best_model_H)\n",
+ "trained_model_H = problem_H.nodes[0]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Part 3: Create a multi-fidelity KAN and train\n",
+ "\n",
+ "The `MultiFidelityKAN` block in Neuromancer enables learning from both low and high-fidelity data sources. The architecture **uses a pre-trained, low-fidelity model, along with high-fidelity data to capture correlations between fidelities**.\n",
+ "\n",
+ "\n",
+ "- **`sfkan`**: *(KANBlock)* – Pre-trained low-fidelity KAN model that provides base predictions.\n",
+ "\n",
+ "- **`insize=1`**: *(int)* – Dimensionality of the input space. Set to 1 for our univariate function.\n",
+ "\n",
+ "- **`outsize=1`**: *(int)* – Dimensionality of the output space. Set to 1 as we're predicting a scalar value.\n",
+ "\n",
+ "- **`hsizes=[5]`**: *(list[int])* – Architecture of nonlinear KAN's hidden layers. The linear KAN is automatically configured as [insize, outsize].\n",
+ "\n",
+ "- **`grid_sizes=[4]`**: *(list[int])* – Number of grid points for B-spline evaluation in the nonlinear KAN.\n",
+ "\n",
+ "- **`spline_order=2`**: *(int)* – Order of B-spline basis functions.\n",
+ "\n",
+ "- **`alpha_init=0.1`**: *(float)* – Initial value for the learnable weight $\\alpha$ that controls the convex combination of linear and nonlinear networks.\n",
+ "\n",
+ "- **`base_activation`**: *(callable)* – Base activation function.\n",
+ "\n",
+ "The multi-fidelity KAN is wrapped in a Neuromancer `Node`. This node maps input 'x' to the high-fidelity prediction 'y_hat'.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define the multi-fidelity KAN model\n",
+ "\n",
+ "# Here we use Neuromancer's MultiFidelityKAN block. The syntax is very similar to KANBlock!\n",
+ "kan_M = blocks.MultiFidelityKAN(\n",
+ " sfkan=kan_L, # A trained, low-fidelity model\n",
+ " insize=1, # Input size\n",
+ " outsize=1, # Output size\n",
+ " hsizes=[5], # Nonlinear KAN shape: [insize, hsizes, outsize]. Shape of linear KAN is always [insize, outsize].\n",
+ " grid_sizes=[4], # Grid size. Note: Neuromancer currently only support single-grid\n",
+ " spline_order=2, # 2nd order splines\n",
+ " alpha_init=0.1, # Initial value of learnable weight alpha, used in the convex combination of linear and nonlinear nets.\n",
+ " base_activation=torch.nn.Sigmoid, # Nonlinear base activation function\n",
+ ").to(device)\n",
+ "\n",
+ "# Symbolic wrapper of the MF KAN\n",
+ "kan_wrapper_M = Node(kan_M, ['x'], ['y_hat'], name='kan_wrapper_M')\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Define symbolic variables and losses for multi-fidelity KAN\n",
+ "\n",
+ "The complete multi-fidelity KAN loss function consists of three components:\n",
+ "\n",
+ "1. **Data Loss** - Mean squared error between the MFKAN predictions, `y_hat`, and the true target values, `y` on the high-fidelity data:\n",
+ "$$\n",
+ "\\ell_{\\text{data}} = \\frac{1}{N_{\\text{H}}} \\sum_{i=1}^{N_{\\text{H}}} \\left( y_i - \\hat{y}_i \\right)^2\n",
+ "$$\n",
+ "\n",
+ "2. **Alpha Loss** - Penalizes the magnitude of $\\alpha$ to maximize linear correlations:\n",
+ "$$\n",
+ "\\ell_{\\text{alpha}} = \\alpha^n\n",
+ "$$\n",
+ "\n",
+ "3. **Regularization Loss** - Prevents overfitting by penalizing B-spline coefficients on each layer $L$ of each KAN:\n",
+ "$$\n",
+ "\\ell_{\\text{reg}} = w \\sum_{l=0}^{L-1} \\|\\Phi_{nl}\\|\n",
+ "$$ \n",
+ "$$\n",
+ "\\|\\Phi_{nl}\\| = \\frac{1}{n_{\\text{in}}n_{\\text{out}}} \\sum_{i=1}^{n_{\\text{in}}} \\sum_{j=1}^{n_{\\text{out}}} |\\phi_{i,j}^{nl}|^2\n",
+ "$$\n",
+ "\n",
+ "The complete loss function combines these terms:\n",
+ "$$\n",
+ "\\ell_{\\text{total}} = \\ell_{\\text{data}} + \\ell_{\\text{alpha}} + \\ell_{\\text{reg}}\n",
+ "$$\n",
+ "\n",
+ "***Note: In Neuromancer, the alpha and regularization losses are automatically handled internally, so that the user only need to set up the data loss!***\n",
+ "\n",
+ "\n",
+ "Finally, create a `PenaltyLoss` and use the `loss_data_MF` as our objective function. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Define symbolic variables for MF model\n",
+ "x_M = variable('x')\n",
+ "y_M = variable('y')\n",
+ "y_hat_M = variable('y_hat')\n",
+ "\n",
+ "# Define losses\n",
+ "loss_data_M = (y_M == y_hat_M)^2\n",
+ "loss_data_M.name = \"ref_loss_M\"\n",
+ "\n",
+ "# Create loss function\n",
+ "loss_M = PenaltyLoss(objectives=[loss_data_M], constraints=[])\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Construct Neuromancer `Problem` object and train multi-fidelity model\n",
+ "\n",
+ "In this section, we create and train the complete Multi-Fidelity KAN (MFKAN) architecture. We achieve multi-fidelity learning by using the low-fidelity, pre-trained model obtained in Part 1 with high-fidelity data.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of parameters: 131\n",
+ "epoch: 0\ttrain_H_loss: 0.50882\teltime: 0.00930\n",
+ "epoch: 2000\ttrain_H_loss: 0.01870\teltime: 3.63984\n",
+ "epoch: 4000\ttrain_H_loss: 0.00249\teltime: 7.14588\n",
+ "epoch: 6000\ttrain_H_loss: 0.00095\teltime: 10.51406\n",
+ "epoch: 8000\ttrain_H_loss: 0.00089\teltime: 13.85415\n",
+ "epoch: 10000\ttrain_H_loss: 0.00056\teltime: 17.26906\n",
+ "epoch: 12000\ttrain_H_loss: 0.00027\teltime: 20.61776\n",
+ "epoch: 14000\ttrain_H_loss: 0.00035\teltime: 23.99374\n",
+ "epoch: 16000\ttrain_H_loss: 0.00022\teltime: 27.38162\n",
+ "epoch: 18000\ttrain_H_loss: 0.00024\teltime: 30.81050\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Construct the MF optimization problem\n",
+ "problem_M = Problem(nodes=[kan_wrapper_M], loss=loss_M, grad_inference=True)\n",
+ "\n",
+ "# Create trainer for MF model\n",
+ "num_epochs_M = 20000\n",
+ "epoch_verbose_M = 2000\n",
+ "logger_M = LossLogger(args=None, savedir='test_H', verbosity=epoch_verbose_M, stdout=['train_H_loss'])\n",
+ "\n",
+ "\n",
+ "trainer_M = Trainer(\n",
+ " problem_M.to(device),\n",
+ " train_data=train_loader_H,\n",
+ " dev_data=train_loader_H,\n",
+ " optimizer=torch.optim.Adam(problem_M.parameters(), lr=init_lr),\n",
+ " epoch_verbose=epoch_verbose_M,\n",
+ " logger=logger_M,\n",
+ " epochs=num_epochs_M,\n",
+ " train_metric='train_H_loss',\n",
+ " eval_metric='train_H_loss',\n",
+ " dev_metric='train_H_loss',\n",
+ " warmup=num_epochs_M,\n",
+ " multi_fidelity=True,\n",
+ " device=device\n",
+ ")\n",
+ "\n",
+ "# Train MF model\n",
+ "best_model_M = trainer_M.train()\n",
+ "problem_M.load_state_dict(best_model_M)\n",
+ "trained_model_M = problem_M.nodes[0]\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Print $\\alpha$ to verify\n",
+ "\n",
+ "The value of $\\alpha$, initially set as 0.1, changed during training. It should, however, remain small, as the model is penalized with $\\alpha^4$ to force the method to learn the maximum linear correlation. We can verify the value of $\\alpha$ by printing its value:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "alpha_0 = Parameter containing:\n",
+ "tensor(0.0167, requires_grad=True)\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Print value of final parameter alpha\n",
+ "for idx,alpha in enumerate(kan_M.alpha):\n",
+ " print(f\"alpha_{idx} = {alpha}\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Plot results\n",
+ "\n",
+ "In this section, we compare the predictions of the three models. To recap, we have:\n",
+ "\n",
+ "- A low-fidelity model $\\mathcal{K}_L$, trained on abundant, shifted low-fidelity data, $x_L$\n",
+ "- A high-fidelity model $\\mathcal{K}_H$, trained on sparse, high-fidelity data, $x_H$\n",
+ "- A multi-fidelity model, that is trained with high-fidelity data $x_H$ and predictions of the low-fidelity model on the high-fidelity data, i.e., $\\mathcal{K}_L(x_H)$\n",
+ "\n",
+ "Figures (a) and (b) show a comparison between low and high-fidelity data and the losses versus epochs, respectively.\n",
+ "\n",
+ "Figure (c) shows the predictions of the low-fidelity model versus the low-fidelity data, demonstrating that the low-fidelity KAN was able to learn the function.\n",
+ "\n",
+ "In Figure (d), we compare the high-fidelity and multi-fidelity model predictions. The red dotted line shows that even though the high-fidelity model was able to interpolate the sparse data (green dots), it severely missed the jump at $x = 0.5$. On the other hand, the multi-fidelity model was able to capture the jump and tracked the high-fidelity data with impressive accuracy. \n",
+ "\n",
+ "**Note: the multi-fidelity model only learned from the 5 high-fidelity points plus the predictions of the low-fidelity model on these high-fidelity points to achieve that level of accuracy!**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAABjUAAAMWCAYAAAC5gwQ2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3xW5f3/8de5Z/YEkkDYYUSQLYiDoSiiYB1t7VLEUetPWr/FUWmtirXSlmodValapbZarXVURRFFA4oMGRFB9h5JSCDJnXmvc35/JNwQ2ZDkZLyfj0ce933Ouc4575sg3ud8znVdhmVZFiIiIiIiIiIiIiIiIk2cw+4AIiIiIiIiIiIiIiIiJ0JFDRERERERERERERERaRZU1BARERERERERERERkWZBRQ0REREREREREREREWkWVNQQEREREREREREREZFmQUUNERERERERERERERFpFlTUEBERERERERERERGRZkFFDRERERERERERERERaRZU1BARERERERERERERkWZBRY1GMmPGDAzDIDk5mYqKipPa17IsevXqhWEY3HbbbQ2UUEREREREmoNvX1ts27YNwzAwDINRo0Ydd//t27fjcrkwDIPXX3+94QOLiIiIiNQjFTUaQXl5OX/6058AuOmmm4iNjT2p/Q3D4Pbbbwfg+eefZ+fOnfWeUUREREREmr7TvbYA6Ny5M1dddRUA06ZNwzTNes0oIiIiItKQVNRoBLNmzaKoqAioufA4Fddeey1er5dAIMDjjz9en/FERERERKSZqI9ri0P3XbNmDe+//369ZBMRERERaQwqajSCF198EYA+ffrQq1evUzpGfHw8Y8aMAeDll18mFArVWz4REREREWke6uPaAmD06NEkJycDNYUSEREREZHmQkWNBrZjxw5WrFgBwMUXX1xn2x133ME555xDRkYGXq+XuLg4Bg0axJ///OcjFi0uuugiAPLz81m0aFHDhxcRERERkSbjWNcWh8rNzWX06NHExMTQvn17fvvb3x52feF2uxk5ciQAs2fPJhAINFxwEREREZF6pKJGA1u4cGHk/aBBg+pse+qpp1i0aBH5+fkEAgEqKipYuXIld911Fz/96U8PO9ah+x96XBERERERafmOdW1xwLZt2xg5ciQ5OTlUVVWRl5fHQw89xOTJkw9re+AY1dXVkWKJiIiIiEhTp6JGA1u7dm3kfVZWVp1tv/nNb/j3v//NnDlzyMnJ4c0332TYsGFATRfwXbt21Wl/6P7ffPNNA6YWEREREZGm5ljXFgds376ds88+m3fffZff/e53OJ1OAP72t7+xatWqOm11fSEiIiIizZHL7gAt3YFJ/IDImLUHXHDBBcyYMYMlS5ZQVFRUp0u4ZVmsWLGCzMzMI+5/6HFFRERERKTlO9a1xQExMTH85z//ITExkfHjx7Nu3TpefvllAP73v//Rr1+/Ix5D1xciIiIi0lyoqNGILMuKvF+6dCmjR48mGAwetX1JSclR9xcRERERkdbraNcGvXv3JjExMbI8dOjQSFFjy5YtJ3QMEREREZGmTMNPNbA2bdpE3hcXF0fez5w5M1LQGD9+PO+//z6fffYZ1113XaSNaZp1jnXo/oceV0REREREWr6jXVsci2EYR92m6wsRERERaY5U1Ghg2dnZkfebNm2KvN+9e3fk/fTp0xk3bhznnXceBQUFRz3WofufccYZ9ZxURERERESasqNdWxxq/fr1+Hy+yPKSJUsi77t161anra4vRERERKQ5UlGjgZ177rmR9ytWrIi879y5c+T99OnTmTt3Lr/85S/58MMPj3qslStXHvG4IiIiIiLS8h3t2uJQFRUVXHPNNcyePZuHH36YV199NbLtO9/5Tp22B64voqKiGDRoUAMkFhERERGpfypqNLBOnToxePBgAD7++OPI+ptuuinSFfyVV15h7NixPP744wwfPvyox/roo48ASE9P55xzzmnA1CIiIiIi0tQc7driUB06dGD+/PmMHz+e3/zmN4TDYaDm+uPQScKDwSDz588HaobD9Xg8DZxeRERERKR+qKjRCCZNmgTA6tWr2bhxI1AzYd9bb73FmWeeSVRUFH369OH111/n4osvPuIxysrKIhcuP/nJT3A6nY0TXkREREREmowjXVscKisri08++YRzzz2XqKgo0tPT+fWvf80zzzxTp92nn34amVPj+uuvb/DcIiIiIiL1xbAsy7I7REtXXl5O165dKSoq4u677+aPf/zjSR/j6aef5rbbbsPr9bJx40Y6duzYAElFRERERKQpq49rC4Dvf//7vP766/Tp04dVq1bhcOh5NxERERFpHvTNtRHExcVx9913A/Dss89SUVFxUvtblsXjjz8O1HQbV0FDRERERKR1Ot1rC4Dt27fz5ptvAvDAAw+ooCEiIiIizYp6aoiIiIiIiIiIiIiISLOgR3JERERERERERERERKRZUFFDRERERERERERERESaBRU1RERERERERERERESkWVBRQ0REREREREREREREmgWX3QFaKtM02bNnD/Hx8RiGYXccEREREZETZlkWZWVltG/fHodDz0HZTdcWIiIiItJcNcS1hYoaDWTPnj107NjR7hgiIiIiIqds586dZGZm2h2j1dO1hYiIiIg0d/V5baGiRgOJj48Han5ZCQkJNqcRERERETlxPp+Pjh07Rr7Tir10bSEiIiIizVVDXFuoqNFADnQLT0hI0IWHiIiIiDRLGuqoadC1hYiIiIg0d/V5baEBckVERERERBrYe++9R69evejRowfPP/+83XFERERERJot9dQQERERERFpQKFQiClTpvDpp5+SmJjI4MGDufLKK0lNTbU7moiIiIhIs6OeGiIiIiIiIg1o6dKl9OnThw4dOhAXF8e4ceOYO3eu3bFERERERJol9dSwkWmaBAIBu2PIIdxuN06n0+4YIiIiItKELFiwgBkzZrB8+XLy8vJ46623uOKKK+q0eeqpp5gxYwb5+fn079+fJ598kqFDhwKwZ88eOnToEGnboUMHdu/e3ZgfQURERETqWTgcJhgM2h3DdnbcT1VRwyaBQICtW7dimqbdUeRbkpKSSE9P18SYIiIiIgJARUUF/fv354YbbuCqq646bPtrr73GlClTmDlzJsOGDeOxxx5j7NixrF+/nnbt2tmQWEREREQaimVZ5OfnU1JSYneUJqOx76eqqGEDy7LIy8vD6XTSsWNHHA6NAtYUWJZFZWUle/fuBSAjI8PmRCIiIiLSFIwbN45x48Yddfujjz7KzTffzKRJkwCYOXMms2fP5oUXXuCee+6hffv2dXpm7N69O9KL40j8fj9+vz+y7PP56uFTiIiIiEh9OFDQaNeuHTExMa36wWi77qeqqGGDUChEZWUl7du3JyYmxu44cojo6GgA9u7dS7t27TQUlYiIiIgcUyAQYPny5UydOjWyzuFwMGbMGBYtWgTA0KFDWb16Nbt37yYxMZEPPviA3/72t0c95vTp05k2bVqDZxcRERGRkxMOhyMFjdTUVLvjNAl23E9VFwEbhMNhADwej81J5EgOFJo0Jp6IiIiIHE9RURHhcJi0tLQ6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t24VBw8eFEIIcf/994vrrrsuNH9paamwWCziF7/4hdizZ4945plnhKIoYtWqVZF6CRQmp3pPISFuu+02ERsbK9asWdPq/N3lcgkhhCguLhaPPPKI2Lx5sygrKxP//ve/RX5+vpg5c2ZoHYFAQIwaNUqce+65oqioSKxatUokJyeLpUuXhubpj7+H99xzj1izZo0oKysTX331lSgsLBRJSUmipqZGCCHErbfeKnJycsRnn30mNm/eLKZNmyamTZsWWp779dRUVRU5OTnivvvuazWdx23HnOpz9bHHHhNxcXHi3//+t9i+fbu46KKLxIABA4Tb7Q6tY/78+WL8+PFi48aN4ssvvxSDBw8WV199dej5pqYmkZqaKq677jqxc+dO8frrrwuLxSL+/Oc/h+bpi9edTrZvfT6fuPDCC0VWVpYoKipq9R7s9XqFEEKsX79ePPnkk6KoqEiUlJSIV199VSQnJ4vrr78+tA3u27b7trm5Wdx7771iw4YNoqysTHz66adiwoQJYvDgwcLj8YTWweP2xE71viCEEDabTVgsFvHcc8+1WZ7H7qkxqXEGnn76aZGTkyMMBoOYMmWK+Prrr0PPzZo1SyxevLjV/P/617/EkCFDhMFgECNHjhQffPBBmCOmSOjIcZKbmysAtPl66KGHwh84hVVH30+Ox6RG/9HR42T9+vWioKBAGI1GkZ+fL37729+KQCAQ5qgp3DpynPj9fvHrX/9aDBw4UJhMJpGdnS1uv/120djYGP7AKWw+//zzds83Wo6NxYsXi1mzZrVZZty4ccJgMIj8/Hzx8ssvhz1uioyTvaeQaPd3CUDod+TQoUNi5syZIiEhQRiNRjFo0CDxi1/8QthstlbrKS8vFwsWLBBms1kkJSWJe+65R/j9/lbz9LffwyuvvFKkp6cLg8EgMjMzxZVXXimKi4tDz7vdbnH77beL+Ph4YbFYxMUXXywqKytbrYP79eQ++ugjAUDs27ev1XQetx1zqs9VTdPEAw88IFJTU4XRaBRz585ts8/r6+vF1VdfLaKjo4XVahU33nhjm5sbt23bJs466yxhNBpFZmameOyxx9rE0teuO51s35aVlZ3wPfjzzz8XQgixZcsWUVBQIGJjY4XJZBLDhw8Xjz76aKsL80Jw335/37pcLnHuueeK5ORkodfrRW5urrj55pvb3NTA4/bETvW+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Fi2iRo0atGvXDjg3RdR//vMfUlJSePTRR/NNCZWSkkJ6evoVZU5ISCAhISHf/vOjSLy9va/ouiIi5ZHB8c//BxARESmlvv76a+6++2569uyZ5ymmP/74g86dO9O0aVNWrlyJp6enC1OKiIiIiMjlSEhIIDY2lmuuuYa77rqrwHZPP/003t7eGAwGGjVqRHJyMuHh4XTp0oWTJ08yc+ZMsrKy+OGHH+jTp4/zvJMnT9K6dWv279/P9ddfT6tWrUhISGDWrFl4eXmxaNEi2rdv72yfnZ3NTTfdxLJly6hZsybdu3fHbDazf/9+Fi5cyPLly50jO6pVq+a8h3/r1KkTS5cudRZe5syZQ9++fWnZsiX16tUjMjKSo0ePMmfOHNLT05k9eza9evW66p+niEh5oKKGiIiUegcOHKBJkyb4+fmxZcsWKlSokOf4M888w8svv8wTTzzBG2+84aKUIiIiIiJyuc4XNS7l7NmzBAcHYzAY6NixI19//TVPPPEES5YsITMzk6ZNmzJ+/HhuvPHGfOeeOnWKF198kblz53Ls2DGCgoLo1KkT48aNo0GDBvnaWywWPvjgA77++mt27dqFyWSiSpUqdO/enWeeeca59sblFDWOHDnChx9+SHx8PPv37yc5OZnIyEhatGjBk08+SevWrQv/QxMRKedU1BAREREREREREbdwvqhxfj0MEREpf7SmhoiIiIiIiIiIiIiIuAUVNURERERERERERERExC2oqCEiIiIiIiIiIiIiIm7Bw9UBRERERERERERECkNLw4qIiEZqiIiIiIiIiIiIiIiIW1BRQ0RERERERERERERE3IKKGiIiIiIiIiIiIiIi4hZU1BAREREREREREREREbegooaIiIiIiIiIiIiIiLgFFTVERERERERERERERMQtqKghIiIiIiIiIiIiIiJuQUUNERERERERERERERFxCypqiIiIiIiIiIiIiIiIW1BRQ0RERERERERERERE3IKKGiIiIiIiIiIiIiIi4hZU1BAREREREREREREREbegooaIiIiIiIiIiIiIiLgFFTVKyBtvvIHBYCAkJISMjIxCn3fw4EE8PDwwGAzMmjWrGBOKiIiIiIg7uJy+RbVq1TAYDBgMBuc+9TFERERExJ2pqFEC0tPTef311wEYPnw4fn5+hT63atWq9O3bF4Dx48djt9uLJaOIiIiIiJR+V9O3OE99DBERERFxZypqlIBp06Zx6tQp4FzH43KdP+evv/5iwYIFRZpNRERERETcx9X2Lc5TH0NERERE3JWKGiVg6tSpANSvX5/atWtf9vmdO3cmJCQEONeJERERERGR8ulq+xbnqY8hIiIiIu5KRY1idujQITZs2ADATTfdlO/4woULufnmmwkPD8fLy4tKlSpx++23c/DgQWcbT09POnbsCMD8+fPJyckpmfAiIiIiIlJqXKxvkZmZySOPPEJ4eDj+/v706tWLhISEAq+lPoaIiIiIuCsVNYrZihUrnO+bNWuW59gLL7xA9+7d+eWXXzh16hRWq5Vjx47xww8/cODAgTxtz5+bnZ3t7MiIiIiIiEj5cbG+Rf/+/Xn//fc5deoUGRkZ/Pzzz1x33XWkpaUVeD31MURERETEHamoUcx27NjhfF+jRg3n+3Xr1jFu3Djn9r333svPP//Mt99+S79+/TAa8/5q/nnu9u3bizGxiIiIiIiURgX1LRYtWsT8+fMB8PHxYeLEicyZM4fIyEjOnDlT4PXUxxARERERd+Th6gBl3flF/ADnnLUAX3/9tfP9oEGD+Oyzz5zbAwcOzHedf577z2uKiIiIiEj5UFDfYu7cuc73I0eO5NFHHwWgXr161KpVq8DrqY8hIiIiIu5IIzVKkMPhcL7fvXu38/0tt9xyWeeKiIiIiEj59s/+wf79+53vr732Wuf7mjVr5ilcXOwaIiIiIiLuQkWNYlahQgXn+7Nnz17xdf557j+vKSIiIiIi5cOV9C0MBkOBx9THEBERERF3pKJGMatbt67z/d69e53v/zkM/Pz8txfzz3Pr1atXROlERERERMRdFNS3qF69uvP9unXr8rS52Joa6mOIiIiIiDtSUaOYtWvXzvl+w4YNzvd33nmn8/306dO57777mD9/Pt999x133nknf/zxR57rbNy4EQBvb2+aNWtWzKlFRERERKS0Kahv0atXL+f7Dz74gPfff5+ffvopT5/jQtTHEBERERF3ZHBoItVi16JFC9avX0+DBg3YunWrc/+4ceN44YUXLnjO77//TqdOnQCwWq1ERERw9uxZbr/9dmbNmlUSsUVEREREpJQpqG9x880388svv+RpGx4eTk5ODikpKUDeNTTUxxARERERd6WRGiVg6NChAGzbto09e/Y4948fP5758+fTrVs3wsLC8PT0JDo6mr59+xIbG+ts9/vvvzvnux0yZEiJZhcRERERkdKjoL7FrFmzeOihhwgLC8PX15euXbvyxx9/EBwcfMHrqI8hIiIiIu5KIzVKQHp6OrGxsZw6dYoxY8bw2muvXdb5/fv3Z9asWdSvX58tW7ZgNKoWJSIiIiJSHl1t3+I89TFERERExF3pm2sJ8Pf3Z8yYMQBMnjyZjIyMQp978OBBfvzxRwCef/55dTZERERERMqxq+lbnKc+hoiIiIi4M43UEBERERERERERERERt6BHckRERERERERERERExC2oqCEiIiIiIiIiIiIiIm5BRQ0REREREREREREREXELKmqIiIiIiIiIiIiIiIhbUFFDRERERERERERERETcgoerA5RVdrudY8eOERAQgMFgcHUcEREREZFCczgcpKWlER0djdGo56BcTX0LEREREXFXxdG3UFGjmBw7doyYmBhXxxARERERuWKHDx+mcuXKro5R7qlvISIiIiLurij7FipqFJOAgADg3C8rMDDQxWlERERERAovNTWVmJgY53dacS31LURERETEXRVH30JFjWJyflh4YGCgOh4iIiIi4pY01VHpoL6FiIiIiLi7ouxbaIJcERERERERERERERFxCypqiIiIiIiIiIiIiIiIW1BRQ0RERERERERERERE3ILW1HAhu91OTk6Oq2PIBXh6emIymVwdQ0RERESk0Gw2G1ar1dUx5H/UpxAREREpHipquEhOTg4HDhzAbre7OooUIDg4mMjISC2QKSIiIiKlmsPhIDExkeTkZFdHkX9Rn0JERESk6Kmo4QIOh4Pjx49jMpmIiYnBaNQsYKWJw+EgMzOTEydOABAVFeXiRCIiIiIiBTtf0KhYsSK+vr76A3opoD6FiIiISPFRUcMFcnNzyczMJDo6Gl9fX1fHkQvw8fEB4MSJE1SsWFHDxkVERESkVLLZbM6CRlhYmKvjyD+oTyEiIiJSPDREwAVsNhsAXl5eLk4iF3O+4KR5iUVERESktDr/XVUPS5VO6lOIiIiIFD0VNVxIw8JLN/1+RERERMRd6Ltr6aTfi4iIiEjRU1FD3NLzzz9PREQEBoOBOXPmuDqOiIiISJmSkp7t6ggiRUr9BhEREZGSl5qdym+7Fxf5dVXUkEIbMmQIffr0KfB4tWrVMBgMeV6VK1cu8hw7duxg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dqzzuNFopEuXLqxcubIko4qIiIiIFNq/CxpGo4n3J76lp8PloppUak64X0XWHlrFlmMbsdpzMZvMXBvTmmurtFZBQ0RERKQcs+Ra+GrdFDJyzq32fU1YTW5rPBCjwUhAAEycCCYTRESUbK5yV9RITEwk4l8/5YiICFJTU8nKyuLs2bPYbLYLttm5c2eB17VYLFgsFud2ampq0QYXERERESmAzWajR5/+LJr3IwAmkwczZnzL7bff7uJk4g4qBcdQKTiGW+r3wWKzYDaZ3WYNDREREREpHnaHne82fkNS2nEATBnVuaXNPZiMJmeb6GjXZNM49CIyYcIEgoKCnK+Y4l4NRUREREQEyM3N5ebe/fIUNGbOnKGChlw2D5Mnfl7+KmiIiIiICHG7F7HzxF8AWFMqsvzT4YwZ7Ut6uouDUQ6LGpGRkSQlJeXZl5SURGBgID4+PlSoUAGTyXTBNpGRkQVed+zYsaSkpDhfhw8fLpb8IiIiIiLnnSto3M7i+bOBcwWNWbO+47bbbnNxMhERERERcVd7T+1m6d44AHIyfdg640FSz5rZtu3c+hmuVu6KGm3atCEuLi7PviVLltCmTRsAvLy8aN68eZ42druduLg4Z5sLMZvNBAYG5nmJiIiIiBQXm83Gzb1uY8mCuQCYPDz4/vvvufXWW12cTERERERE3FW6JY1ZG6fjwIEt18ju2Q9w8lgAAFWrwiOPuDggZaCokZ6ezqZNm9i0aRMABw4cYNOmTRw6dAg4N4Linnvucba///772b9/P2PGjGHnzp189NFHfPfddzz22GPONqNHj+bTTz/liy++YMeOHTzwwANkZGQwdOjQEr03EREREZGCrNt1nMSsc9MEeXh48uMPP9KnT28XpxIREREREXdld9j5YfMM0nPScDhgx88DObr73MIZISHw3nsQFOTikJSBhcLXrVtH586dndujR48GYPDgwUybNo3jx487CxwAsbGxzJ8/n8cee4x3332XypUr89lnn9G1a1dnmwEDBnDy5Emee+45EhMTadKkCQsXLsy3eLiIiIiIiCus23mMT35eT9Mb7yQmIpj77+xDz563uDqWiIiIiIi4sT8PLGP3yZ0A7Pr9Og5vbILRYMDLC95+GypVcnHA/3H7okanTp1wOBwFHp82bdoFz9m4ceNFrzty5EhGjhx5tfFERERERIrU+l3H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hx9+SLVq1fD29qZVq1asWbOmwLaffvop1113HSEhIYSEhNClS5d87YcMGYLBYMjz6tatW3HfhoiIiIgUQnJyMoOHDHVuv/7GG1SvXt2FiUREREREpLwqqKBhtVn57ocsbLkmDBjo39cPb+8SDldGuX1RY+bMmYwePZpx48axYcMGGjduTNeuXTlx4sQF28fHxzNo0CB+//13Vq5cSUxMDDfddBNHjx7N065bt24cP37c+fr2229L4nZERERE5BKGDL+fs6fPfddr274jDz/0oIsTiYiIiIhIeeCw27ElJxeq7aYjG9n6R10AfDx9GDTgwmtuyOVz+6LG22+/zYgRIxg6dCj16tVj0qRJ+Pr6MmXKlAu2/+abb3jwwQdp0qQJderU4bPPPsNutxMXF5enndlsJjIy0vkKCQkpidsRERERkYvIzLbiEdUUv+BwfHz9mTH9qwvOXSsiIiIiIlLUMlev4eRb75D+axwOq/WibVftW0P1FjvwCcikfTtPqlQpoZDlgFsXNXJycli/fj1dunRx7jMajXTp0oWVK1cW6hqZmZlYrVZCQ0Pz7I+Pj6dixYrUrl2bBx54gNOnTxdpdhERERG5fNPjtuIfXZt7n5vM/PnziImJcXUkEREREREpB+xZWaT/+ivYckn/7Tesx48X2PZYylESsw7Q/OaVPPrmAl5/KaAEk5Z9br1Q+KlTp7DZbEREROTZHxERwc6dOwt1jaeeeoro6Og8hZFu3brRt29fYmNj2bdvH//973/p3r07K1euxFTAHGkWiwWLxeLcTk1NvYI7EhEREZGCbNqTyPIthzAYDDx0e3tqxYS5OpKIiIiIiJQXBgM+zZqSuXI13g0b4HWRoRdrDv3pfN/mmlZERGh0eVFy66LG1Xr11VeZMWMG8fHxeP9jlZaBAwc63zds2JBGjRpxzTXXEB8fzw033HDBa02YMIHx48cXe2YRERGR8mjztu1MjUsAoOu116igISIiIiIiJcro7U1gjx74tm6NwaPgP6tnW7PZfHQDAGaTmcaVmpdUxHLDraefqlChAiaTiaSkpDz7k5KSiIyMvOi5b775Jq+++iqLFy+mUaNGF21bvXp1KlSowN69ewtsM3bsWFJSUpyvw4cPF/5GRERERKRASUlJtGvblu/eexpfMunboa6rI4mIiIiISDnlERaGKSiowONrD2xgzYKm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ztomIyOjTsdOSkoCIDs7m+Tk5Or12dnZdO/evbpNTk5Ojf08Hg8FBQXV+5/Oww8/zL333lv9vKSkRIkNEREREREREREREZF61OiSGvHx8cTHx5+XY7ds2ZKkpCSWLFlSncQoKSlh1apV3H777QAMGDCAoqIi1q1bR69evQBYunQpPp+Pfv36nfHYDocDh8NxXuIWEREREREREREREZFGOP3UuTh48CAbNmzg4MGDeL1eNmzYwIYNGygrK6tu0759e+bMmQOAyWTi7rvv5v/+7/+YO3cumzdv5rrrriMlJYWpU6cC0KFDB8aNG8ctt9zC6tWrWb58OXfddRdXXXUVKSkpgXibIiIiIiIiIiIiIiJCIxypcS4effRRXn311ernPXr0AOCzzz5j2LBhAOzYsYPi4uLqNr/4xS8oLy/n1ltvpaioiMGDB7Nw4UKCgoKq27zxxhvcddddjBw5ErPZzPTp03n66afPKTbDMAAVDBcRERGRpuf4Z9jjn2klsNS3EBEREZGm6nz0LUyGeirnxd69e2nVqlWgwxARERERqbM9e/bUuZ6d1B/1LURERESkqavPvkWTHqnRmMXExAD+KbIiIyMDHI00VscLyh86dIiIiIhAhyONlM4TqQ2dJ1JbOlekNoqLi2nevHn1Z1oJLPUtpDb0911qQ+eJ1JbOFakNnSdSG+ejb6GkxnliNvvLlURGRuqXWr5XRESEzhP5XjpPpDZ0nkht6VyR2jj+mVYCS30LORf6+y61ofNEakvnitSGzhOpjfrsW6iXIiIiIiIiIiIiIiIiTYKSGiIiIiIiIiIiIiIi0iQoqXGeOBwOHnvsMRwOR6BDkUZM54nUhs4TqQ2dJ1JbOlekNnSeNC76eUht6DyR2tB5IrWlc0VqQ+eJ1Mb5OE9MhmEY9XY0ERERERERERERERGR80QjNUREREREREREREREpElQUkNERERERERERERERJoEJTVERERERERERERERKRJUFLjB3j22WdJT08nKCiIfv36sXr16rO2nz17Nu3btycoKIguXbrw0UcfNVCkEkjncp48//zzXHLJJURHRxMdHc2oUaO+97ySC8O5/j057u2338ZkMjF16tTzG6A0Cud6nhQVFXHnnXeSnJyMw+Ggbdu2+t9zETjX8+Spp56iXbt2BAcHk5aWxj333ENVVVUDRSuBsGzZMiZN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HLU0tHM5T9xut/Gb3/zGaNWqlREUFGSkpaUZd9xxh1FYWNjwgUuD+eyzz077eeP4uXH99dcbQ4cOPWWf7t27G3a73cjIyDBefvnlBo/7Qqe+hdSG+hZSG+pbSG2obyG1pf6FfJ9A9C9MhqGxPyIiIiIiIiIiIiIi0vippoaIiIiIiIiIiIiIiDQJSmqIiIiIiIiIiIiIiEiToKSGiIiIiIiIiIiIiIg0CUpqiIiIiIiIiIiIiIhIk6CkhoiIiIiIiIiIiIiINAlKaoiIiIiIiIiIiIiISJOgpIaIiIiIiIiIiIiIiDQJSmqIiIiIiIiIiIiIiEiToKSGiIiIiIiIiIiIiIg0CUpqiIiIiIiIiIiIiIhIk6CkhoiIiIiIiIiIiIiINAlKaoiIiIiIiIiIiIiISJOgpIaIiDR6hmEwfvx4TCYT77zzzinbLr300tNuExEREREROZn6FiIiTZ/JMAwj0EGIiIh8n+zsbLp27YrT6WTjxo20aNECgL///e/ce++93HDDDbz88ssBjlJERERERBo79S1ERJo2JTVERKTJWLhwIePHj2fAgAEsW7aMzZs3069fP1q0aMH69esJCwsLdIgiIiIiItIEqG8hItJ0afopERFpMsaNG8fPf/5zVqxYwUMPPcTVV1+NYRi89dZb6nSIiIiIiEitqW8hItJ0aaSGiIg0KU6nk/79+7NhwwYA/vSnP/GLX/wisEGJiIiIiEiTo76FiEjTpJEaIiLSpDgcDi699FIAgoKCuPnmmwMckYiIiIiINEXqW4iINE1KaoiISJOyatUq/vznPxMbG0tVVRW33357oEMSEREREZEmSH0LEZGmSUkNERFpMkpLS7nmmmuwWq18/vnnTJ8+nXfffZeXXnop0KGJiIiIiEgTor6FiEjTpZoaIiLSZMycOZPXX3+df/7zn9x5550UFhbSrVs3CgoKWL9+PW3btg10iCIiIiIi0gSobyEi0nQpqSEiIk3C66+/zsyZM5k0aRJz586tXr9s2TKGDx9Ojx49WLlyJTabLYBRioiIiIhIY6e+hYhI06bpp0REpNHbt28fd955J8nJyacMBx8yZAgPP/ww69at45e//GWAIhQRERERkaZAfQsRkaZPIzVERERERERERERERKRJ0EgNERERERERERERERFpEpTUEBERERERERERERGRJkFJDRERERERERERERERaRKU1BARERERERERERERkSZBSQ0REREREREREREREWkSlNQQEREREREREREREZEmQUkNERERERERERERERFpEpTUEBERERERERERERGRJkFJDRERERERERERERERaRKU1BARERERERERERERkSZBSQ0REREREREREREREWkSlNQQEREREREREREREZEmQUkNERERERERERERERFpEv4f5CqDZ6FW50wAAAAASUVORK5CYII=",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Make predictions\n",
+ "preds_H = trained_model_H(data_full.datadict)['y_hat'].cpu().detach().numpy() # high-fidelity predictions of full data\n",
+ "preds_L = trained_model_L(train_data_L.datadict)['y_hat'].cpu().detach().numpy() # low-fidelity predictions of low-fidelity data\n",
+ "preds_M = trained_model_M(data_full.datadict)['y_hat'].cpu().detach().numpy() # multi-fidelity predictions of full data\n",
+ "\n",
+ "# Create subplots\n",
+ "fig, axs = plt.subplots(2, 2, figsize=(16, 8), constrained_layout=True)\n",
+ "\n",
+ "# Plot a): Sampled data and reference functions\n",
+ "axs[0, 0].scatter(x_data_L.numpy(), y_data_L.numpy(), c=\"#4e79a7\", label='LF data', alpha=0.8)\n",
+ "axs[0, 0].scatter(x_data_H.numpy(), y_data_H.numpy(), c=\"#59a14f\", label='HF data', alpha=0.8)\n",
+ "axs[0, 0].plot(x_data_L.numpy(), yL(x_data_L).numpy(), \"#4e79a7\", label='LF', alpha=0.8)\n",
+ "axs[0, 0].plot(x_data_L.numpy(), yH(x_data_L).numpy(), \"#59a14f\", label='HF', alpha=0.8)\n",
+ "axs[0, 0].set_xlim(0,1)\n",
+ "axs[0, 0].set_xlabel('x', fontsize=14)\n",
+ "axs[0, 0].set_ylabel('f(x)', fontsize=14)\n",
+ "axs[0, 0].legend(fontsize=10)\n",
+ "axs[0, 0].set_title('(a)', loc='left', fontweight='bold')\n",
+ "\n",
+ "# Plot b): Evolution of losses vs epochs\n",
+ "losses_L = trainer_L.logger.get_losses()\n",
+ "losses_H = trainer_H.logger.get_losses()\n",
+ "losses_M = trainer_M.logger.get_losses()\n",
+ "epoch_losses_L = range(1, len(losses_L['train'])*epoch_verbose_L+1, epoch_verbose_L)\n",
+ "epoch_losses_H = range(1, len(losses_H['train'])*epoch_verbose_H+1, epoch_verbose_H)\n",
+ "epoch_losses_M = range(1, len(losses_M['train'])*epoch_verbose_M+1, epoch_verbose_M)\n",
+ "\n",
+ "axs[0, 1].plot(epoch_losses_L,losses_L['train'], label='LF', color='#59a14f')\n",
+ "axs[0, 1].plot(epoch_losses_H,losses_H['train'], label='HF', linestyle='dotted', color='#4e79a7')\n",
+ "axs[0, 1].plot(epoch_losses_M,losses_M['train'], label='MF', color='#e15759') \n",
+ "axs[0, 1].set_xlabel('Epochs', fontsize=14)\n",
+ "axs[0, 1].set_ylabel('Loss', fontsize=14)\n",
+ "axs[0, 1].set_yscale('log')\n",
+ "axs[0, 1].set_ylim(1e-16)\n",
+ "axs[0, 1].legend(fontsize=10)\n",
+ "axs[0, 1].set_title('(b)', loc='left', fontweight='bold')\n",
+ "\n",
+ "# Plot c): LF predictions vs reference data\n",
+ "axs[1, 0].plot(x_data_L.numpy(), yL(x_data_L).numpy(), '#4e79a7', label='LF ref.', alpha=0.9)\n",
+ "axs[1, 0].plot(x_data_L.numpy(), preds_L, 'k--', label='LF pred.', linewidth=2)\n",
+ "axs[1, 0].set_xlim(0,1)\n",
+ "axs[1, 0].set_xlabel('x', fontsize=14)\n",
+ "axs[1, 0].set_ylabel('f(x)', fontsize=14)\n",
+ "axs[1, 0].legend(fontsize=10)\n",
+ "axs[1, 0].set_title('(c)', loc='left', fontweight='bold')\n",
+ "\n",
+ "# Plot d): MF vs HF predictions and reference\n",
+ "axs[1,1].scatter(x_data_H.numpy(), y_data_H.numpy(), c=\"#59a14f\", label='HF data', alpha=0.7, s=50)\n",
+ "axs[1,1].plot(x_data_full.numpy(), y_data_full.numpy(), '#59a14f', label='HF ref.', alpha=0.8, linewidth=2) # HF ref.\n",
+ "axs[1,1].plot(x_data_full.numpy(), preds_M, '--b', label='MF', alpha=0.8, linewidth=2) # Predictions of MF model on full data\n",
+ "axs[1,1].plot(x_data_full.numpy(), preds_H, '#e15759', linestyle='dotted', label='HF only', alpha=0.8, linewidth=2) # Predictions of HF model on full data\n",
+ "axs[1, 1].set_xlim(0,1)\n",
+ "axs[1, 1].set_xlabel('x', fontsize=14)\n",
+ "axs[1, 1].set_ylabel('f(x)', fontsize=14)\n",
+ "axs[1, 1].legend(fontsize=10)\n",
+ "axs[1, 1].set_title('(d)', loc='left', fontweight='bold')\n",
+ "\n",
+ "plt.tight_layout()\n",
+ "plt.show()\n",
+ "\n",
+ "# Optional: save your plot\n",
+ "# plt.savefig('MF_LF_Results_Inference_Neuromancer.png', dpi=300, bbox_inches='tight')\n",
+ "\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "accelerator": "GPU",
+ "colab": {
+ "collapsed_sections": [
+ "Y61YA90-WIZ1",
+ "UoqCzgLSp61M",
+ "i0j73GoH86-m",
+ "pOe9yRvxjakj"
+ ],
+ "machine_shape": "hm",
+ "name": "p3_mfkan_example_1d.ipynb",
+ "provenance": []
+ },
+ "kernelspec": {
+ "display_name": ".venv",
+ "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.0"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}
diff --git a/examples/figs/mfkan_diagram.png b/examples/figs/mfkan_diagram.png
new file mode 100644
index 00000000..d054993c
Binary files /dev/null and b/examples/figs/mfkan_diagram.png differ
diff --git a/src/neuromancer/loggers.py b/src/neuromancer/loggers.py
index 51949e66..e02d8fb1 100644
--- a/src/neuromancer/loggers.py
+++ b/src/neuromancer/loggers.py
@@ -29,7 +29,6 @@ def __init__(self, args=None, savedir='test', verbosity=10,
self.start_time = time.time()
self.step = 0
self.args = args
- self.log_parameters()
def log_parameters(self):
"""
@@ -130,6 +129,51 @@ def get_losses(self):
return {k: v for k, v in self.losses.items() if v}
+class LossLogger(BasicLogger):
+ def __init__(self, args=None, savedir='test', verbosity=10,
+ stdout=('nstep_dev_loss', 'loop_dev_loss', 'best_loop_dev_loss',
+ 'nstep_dev_ref_loss', 'loop_dev_ref_loss')):
+ super().__init__(args, savedir, verbosity, stdout)
+ self.losses = {'train': [], 'dev': [], 'test': []} # Initialize losses dictionary
+
+ def log_metrics(self, output, step=None):
+ """
+ Print metrics to stdout and store loss values.
+
+ :param output: (dict {str: tensor}) Will only record 0d tensors (scalars)
+ :param step: (int) Epoch of training
+ """
+ if step is None:
+ step = self.step
+ else:
+ self.step = step
+ if step % self.verbosity == 0:
+ elapsed_time = time.time() - self.start_time
+ entries = [f'epoch: {step}']
+ for k, v in output.items():
+ try:
+ if k in self.stdout:
+ entries.append(f'{k}: {v.item():.5f}')
+ # Collect the loss values based on type
+ if 'loss' in k.lower():
+ if 'train' in k.lower():
+ self.losses['train'].append(v.item())
+ elif 'dev' in k.lower():
+ self.losses['dev'].append(v.item())
+ elif 'test' in k.lower():
+ self.losses['test'].append(v.item())
+ except (ValueError, AttributeError) as e:
+ pass
+ entries.append(f'eltime: {elapsed_time: .5f}')
+ print('\t'.join([e for e in entries if 'reg_error' not in e]))
+
+ def get_losses(self):
+ """
+ Returns a dictionary of recorded loss values for train, dev, and test.
+ """
+ return {k: v for k, v in self.losses.items() if v}
+
+
class MLFlowLogger(BasicLogger):
def __init__(self, args=None, savedir='test', verbosity=1, id=None,
stdout=('nstep_dev_loss', 'loop_dev_loss', 'best_loop_dev_loss',
diff --git a/src/neuromancer/modules/blocks.py b/src/neuromancer/modules/blocks.py
index 26395987..ccf67b49 100644
--- a/src/neuromancer/modules/blocks.py
+++ b/src/neuromancer/modules/blocks.py
@@ -552,6 +552,124 @@ def update_epoch(self, epoch, x):
layer.update_grid(x) # Update the grid with the current batch
self.current_grid_index += 1
+
+
+class MultiFidelityKAN(Block):
+ """
+ Multi-Fidelity Kolmogorov-Arnold Network (KAN) with KANBlock.
+ Takes a pre-trained single-fidelity KAN as input.
+ """
+ def __init__(
+ self,
+ sfkan,
+ insize,
+ outsize,
+ hsizes=[64],
+ num_stacked_blocks=1,
+ num_domains=1,
+ grid_sizes=[5],
+ spline_order=3,
+ scale_noise=0.1,
+ scale_base=1.0,
+ scale_spline=1.0,
+ enable_standalone_scale_spline=True,
+ base_activation=torch.nn.SiLU,
+ grid_eps=0.02,
+ grid_range=[-1, 1],
+ grid_updates=None,
+ alpha_init=0.1,
+ verbose=False
+ ):
+ super().__init__()
+ self.sfkan = sfkan # Pre-trained single-fidelity KAN
+ # Freeze the parameters of the low-fidelity model
+ for param in self.sfkan.parameters():
+ param.requires_grad = False
+
+ self.in_features = insize
+ self.out_features = outsize
+ self.num_stacked_blocks = num_stacked_blocks
+ self.num_domains = num_domains
+ self.verbose = verbose
+
+ self.alpha = nn.ParameterList([nn.Parameter(torch.tensor(alpha_init)) for _ in range(num_stacked_blocks)])
+
+ # Multi-fidelity layers
+ self.linear_layers = nn.ModuleList()
+ self.nonlinear_layers = nn.ModuleList()
+
+ for _ in range(num_stacked_blocks):
+ self.linear_layers.append(
+ KANBlock(
+ insize=insize + outsize,
+ outsize=outsize,
+ hsizes=[],
+ num_domains=num_domains,
+ grid_sizes=[2],
+ spline_order=1,
+ scale_noise=scale_noise,
+ scale_base=0.,
+ scale_spline=scale_spline,
+ enable_standalone_scale_spline=enable_standalone_scale_spline,
+ base_activation=nn.Identity,
+ grid_eps=1.0,
+ grid_range=grid_range,
+ grid_updates=grid_updates,
+ verbose=verbose
+ )
+ )
+ self.nonlinear_layers.append(
+ KANBlock(
+ insize=insize + outsize,
+ outsize=outsize,
+ hsizes=hsizes,
+ num_domains=num_domains,
+ grid_sizes=grid_sizes,
+ spline_order=spline_order,
+ scale_noise=scale_noise,
+ scale_base=scale_base,
+ scale_spline=scale_spline,
+ enable_standalone_scale_spline=enable_standalone_scale_spline,
+ base_activation=base_activation,
+ grid_eps=grid_eps,
+ grid_range=grid_range,
+ grid_updates=grid_updates,
+ verbose=verbose
+ )
+ )
+
+ self.grid_sizes = grid_sizes
+ self.grid_updates = grid_updates or []
+ self.current_grid_index = 0
+ self.verbose = verbose
+
+ def block_eval(self, x):
+ # First layer (pre-trained single-fidelity KAN)
+ out = self.sfkan.block_eval(x).detach()
+
+ # Subsequent layers (multi-fidelity)
+ for i in range(self.num_stacked_blocks):
+ linear_out = self.linear_layers[i].block_eval(torch.cat([x, out], dim=1))
+ nonlinear_out = self.nonlinear_layers[i].block_eval(torch.cat([x, out], dim=1))
+ out = torch.abs(self.alpha[i]) * nonlinear_out + (1 - torch.abs(self.alpha[i])) * linear_out
+ return out
+
+ def regularization_loss(self, regularize_activation=1.0, regularize_entropy=0.0):
+ loss = 0.0
+ for linear_layer, nonlinear_layer in zip(self.linear_layers, self.nonlinear_layers):
+ loss += linear_layer.regularization_loss(regularize_activation, regularize_entropy)
+ loss += nonlinear_layer.regularization_loss(regularize_activation, regularize_entropy)
+ return loss
+
+ def update_grid(self, x, margin=0.01):
+ for linear_layer, nonlinear_layer in zip(self.linear_layers, self.nonlinear_layers):
+ linear_layer.update_grid(x, margin=margin)
+ nonlinear_layer.update_grid(torch.cat([x, self.sfkan.block_eval(x)], dim=1), margin=margin)
+
+ def get_alpha_loss(self):
+ return sum(10.*torch.pow(alpha, 2) for alpha in self.alpha)
+
+
class MLP_bounds(MLP):
"""
Multi-Layer Perceptron consistent with blocks interface
@@ -1308,7 +1426,7 @@ def block_eval(self, src):
"icnn": InputConvexNN,
"pos_def": PosDef,
"kan": KANBlock,
+ "multifidelity_kan": MultiFidelityKAN,
"stacked_mlp": StackedMLP,
"transformer": Transformer
}
-
diff --git a/src/neuromancer/modules/functions.py b/src/neuromancer/modules/functions.py
index 26385577..1b61aebc 100644
--- a/src/neuromancer/modules/functions.py
+++ b/src/neuromancer/modules/functions.py
@@ -103,4 +103,4 @@ def w_jl_i(x_i, n_domains, x_min, x_max):
print(torch.all(out_scale['x_new'] <= data['xmax']))
print(torch.all(out_scale['x_new'] >= data['xmin']))
print(torch.all(out_clamp['x_new'] <= data['xmax']))
- print(torch.all(out_clamp['x_new'] >= data['xmin']))
+ print(torch.all(out_clamp['x_new'] >= data['xmin']))
\ No newline at end of file
diff --git a/src/neuromancer/trainer.py b/src/neuromancer/trainer.py
index de81d081..959e6257 100644
--- a/src/neuromancer/trainer.py
+++ b/src/neuromancer/trainer.py
@@ -16,6 +16,8 @@
from neuromancer.callbacks import Callback
from neuromancer.problem import LitProblem
from neuromancer.dataset import LitDataModule
+from neuromancer.modules.blocks import MultiFidelityKAN
+from neuromancer.system import Node
from lightning.pytorch.callbacks import ModelCheckpoint
from lightning.pytorch.callbacks.early_stopping import EarlyStopping
@@ -250,6 +252,11 @@ def train(self):
alpha_loss = node.callable.get_alpha_loss()
output[self.train_metric] += alpha_loss
+ for node in self.model.nodes:
+ if isinstance(node, Node) and isinstance(node.callable, MultiFidelityKAN):
+ kan_reg_loss = node.callable.regularization_loss()
+ output[self.train_metric] += kan_reg_loss
+
self.optimizer.zero_grad()
output[self.train_metric].backward()
torch.nn.utils.clip_grad_norm_(self.model.parameters(), self.clip)