304 lines
387 KiB
Plaintext
304 lines
387 KiB
Plaintext
![]() |
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "c982abca",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"# Interpretation 3: KAN Compiler"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "6b9ec6c4",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"We have shown in many examples how to extract symbolic formulas from KANs. Now we want to consider the reverse task: compiling a symbolic formula into KANs. This might be needed for many reasons. One use case is that we have prior knowledge which is the approximate ground truth (empirical/constitutive laws etc.) and we want to build this knowledge into neural networks and only fine tune the network to real data."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 1,
|
||
|
"id": "d8f94f0f",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAFICAYAAACcDrP3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAoTElEQVR4nO3deXSV9Z3H8c9zidlIICFEEONCICIIqCCLLEWrEmusWtDqsZ05tswcdVRmONOZWluro1iroyOgdtqjnak6dsAaHQahoEMRZLFBFFFkx6UhsudiSG7W+5s/vtwkIEsgz81d8n6dkxO8Nzf8iPfJ5/n+Vs855wQAgI8CsW4AACD5EC4AAN8RLgAA3xEuAADfES4AAN8RLgAA3xEuAADfES4AAN8RLgAA3xEuAADfES4AAN8RLgAA3xEuAADfES4AAN8RLgAA36XEugFAInDOad++fTp48KCysrKUl5cnz/Ni3SwgblG5AMcRDAY1c+ZMFRUVKT8/X3379lV+fr6Kioo0c+ZMBYPBWDcRiEseJ1ECR7do0SJNnjxZNTU1kqx6iYhULZmZmSotLVVxcXFM2gjEK8IFOIpFixappKREzjmFw+Fjfl0gEJDneZo/fz4BA7RCuABHCAaDKigoUCgUOm6wRAQCAWVkZKi8vFw5OTnRbyCQABhzAY7wwgsvqKampk3BIknhcFg1NTV68cUXo9wyIHFQuQCtOOdUVFSk7du362QuDc/zVFhYqC1btjCLDBDhAhxm7969ys/Pb9fr8/LyfGwRkJjoFgNaOXjwYLteX1VV5VNLgMRGuACtZGVltev12dnZPrUESGyEC9BKXl6e+vXrd9LjJp7nqV+/furRo0eUWgYkFsIFaMXzPN1zzz2n9NqpU6cymA8cwoA+cATWuQDtR+UCHCEnJ0elpaXyPE+BwPEvkcgK/ddee41gAVohXICjKC4u1vz585WRkSHP877W3RV5LCMjQwsWLNDEiRNj1FIgPhEuwDEUFxervLxcM2bMUGFh4WHPFRYWasaMGdqxYwfBAhwFYy5AGzjntGTJEl1xxRVavHixLr/8cgbvgeOgcgHawPO85jGVnJwcggU4AcIFAOA7wgUA4DvCBQDgO8IFAOA7wgUA4DvCBQDgO8IFAOA7wgUA4DvCBQDgO8IFAOA7wgUA4DvCBQDgO8IFAOA7wgUA4DvCBQDgO8IFAOA7wgU4gYaGBu3YsUMbNmyQJG3btk379+9XOByOccuA+MUxx8AxBINBlZaW6uWXX9b69etVVVWl+vp6paenKz8/X+PHj9eUKVM0duxYpaSkxLq5QFwhXICjWLVqlaZNm6Z169ZpxIgRKikp0dChQ5WVlaVgMKg1a9Zo3rx52rp1q26++WZNnz5d+fn5sW42EDcIF+AIb775pm677TZlZWXp0Ucf1TXXXKP6+nrNnj1bdXV16tatm2655RY1NDRo9uzZevDBB3XBBRfopZdeUq9evWLdfCAuEC5AK5s3b9bVV1+trl27avbs2Ro0aJA8z9P27ds1bNgwHThwQH379tWaNWuUm5sr55yWL1+uW2+9VZdddpmef/55paWlxfqfAcQcA/rAIU1NTfrFL36hyspKPfPMM83Bcjye52ncuHF6/PHHNXfuXC1cuLCDWgvEN8IFOGTr1q2aN2+eJk2apHHjxp0wWCI8z9MNN9yg0aNH67nnnlNjY2OUWwrEP6a4AIesXLlSBw8e1OTJk/XZZ5+purq6+bny8nI1NTVJkurr67V+/Xp169at+fk+ffpo0qRJevDBB7Vz504VFBR0ePuBeEK4AIds3LhRmZmZKiws1O23364VK1Y0P+ecU11dnSSpoqJCV111VfNznufpySef1JAhQ1RTU6OKigrCBZ0e4QIcEgqFlJKSorS0NNXV1am2tvaoX+ec+9pzjY2NysjIOCyEgM6McAEOOf300xUKhRQMBjVq1Ch17dq1+blQKKSVK1c2h8iYMWOaF056nqezzz5bu3fvViAQUG5ubqz+CUDcIFyAQ4YPH66GhgaVlZXpscceO+y57du3a8SIETpw4IB69eqlOXPmKCcnp/l5z/N03333qXfv3nSJAWK2GNBs5MiRKiws1AsvvKDq6mp16dLlsI8Iz/MUCASaHw8EAvryyy/16quvqqSkRN27d4/hvwKID4QLcEheXp7uvvtuvf/++5o1a1abpxTX1dXp4YcfVigU0u23397mKcxAMqNbDGjltttu07Jly/TYY48pMzNTd955p9LT0yVJKSkpSklJaa5inHOqqqrSI488otmzZ+upp57SgAEDYtl8IG6w/QtwhD179uiuu+7SG2+8oeLiYk2bNk0DBw7Upk2bFA6HlZqaqv79+6usrExPPPGE1q5dq4ceekh33nnnYd1nQGdGuABHUV1dreeee06zZs3Srl27VFhYqKKiImVnZ6uyslKbNm1SRUWFhg8frgceeEATJkxQIEAvMxBBuADHsXPnTi1evFhLly7V9g8/VG1ZmXLHj9fgsWM1ceJEjRo1SpmZmbFuJhB3CBegjZpWr5YbOVKB1asVuOSSWDcHiGsM6ANt1KVLF8nzJLq/gBPiKgEA+I5wAQD4jnABAPiOcAEA+I5wAQD4jnABAPiOcAEA+I5wAQD4jnABAPiOcAEA+I5wAQD4jnABAPiOcAEA+I5wAQD4jvNcgLZyTgqHbct9z4t1a4C4RuUCnAzOcgHahMPCkDScc9qzZYvq9u2LdVPaxQsE1HPwYKV37RrrpgCnjHBB0nDO6ZOnnlLaWWcpLSsr1s05OQ0NUm2tlJWlPcuXa+j99+uMoUNj3SrglBEuSCpeWpoGTZmi7r16xbopbeectGCB9NOfyl13ncoGDbLHgARGBzIQa85Jc+dKH30krV8vpXDPh8RHuACxtm+ftGSJzUC79lqpS5dYtwhoN8IFiCXnpFWrpC++kPLzpcsui3WLAF8QLkAshcPS669LjY3S2LHSWWfFukWALwgXIJZ27bIusUBA+s536BJD0iBcgFhxzoJlxw6pTx+6xJBUCBcgVhoapDlzrGvsyiul3r1j3SLAN4QLECubN0srVkipqdJ3v8vWMkgqvJuBWHBOKi2VgkFp0CDp0kvZDBNJhXABYqGyUnr1VfvzTTdJ2dmxbQ/gM8IF6GjOSYsXW7dYz57SpElULUg6hAvQ0errpd/9zta2FBdLhYWxbhHgO8IF6EjOSWvWSO+8I6WnSz/4AWtbkJQIF6AjNTVJzz8vVVfbIP7o0XSJISkRLkBHcU7asEGaN892Pv7bv7XqBUhChAvQUcJh6bnnpP37paFDpauvpmpB0iJcgI7gnLRpk/TKKzbGcscdUrdusW4VEDWEC9ARwmHpmWekPXukIUNsk0qqFiQxwgWINuektWtbqpapU6Xc3Fi3CogqwgWItvp66V//1VbljxpF1YJOgXABosk56a23pDfesJlh//RPbPWCToFwAaJp/35p+nQpFJJKSmxFPlULOgHCBYiWcFj61a9sRX5+vvTTn9r2+kAnQLgA0eCctHq19PTT9t/33GOzxKha0EkQLkA0VFZK994r7dtn27z83d9xGBg6Fd7tgN8aG6XHH5eWL5d69JB++UspJyfWrQI6FOEC+Mk56fXXpWeftUrl3nvZnBKdEuEC+CWynf6PfiTV1Eg33GDbvNAdhk6Idz3gB+ekzz6Tbr9dKi+XLr5YeuIJKTMz1i0DYoJwAdrLOWnXLguWtWulggKbglxQQHcYOi3CBWgP56S9e637609/sgH8Z5+VRowgWNCpES7AqXJO2rlTmjLFtnfJzpZmzZKuuYZgQadHuACnwjlp2zbpe9+T5s+3s1lmzJC++10G8AERLsDJC4dtDcukSdLSpVLPntK//7v0/e/blvoACBegzZyzDSh/8xvpxhul9eulvn2ll16SbrqJYAFaSYl1A4CEEOkG+/nPpddes1X448bZ6ZKDBzPGAhyBcAGOxzmpqkp6+WXb0uWLL6SMDJsd9rOfSXl5BAtwFIQLcDSRLrC33rLFkH/+s421DBokPfSQdO21UkoKwQIcA+ECtOac9NVXFiq
|
||
|
"text/plain": [
|
||
|
"<Figure size 500x400 with 6 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"from kan.compiler import sf2kan\n",
|
||
|
"from sympy import *\n",
|
||
|
"from kan.utils import create_dataset\n",
|
||
|
"import torch\n",
|
||
|
"\n",
|
||
|
"input_variables = x,y = symbols('x y')\n",
|
||
|
"expr = exp(sin(pi*x)+y**2)\n",
|
||
|
"\n",
|
||
|
"model = sf2kan(input_variables, expr)\n",
|
||
|
"\n",
|
||
|
"f = lambda x: torch.exp(torch.sin(torch.pi*x[:,0]) + x[:,1]**2)\n",
|
||
|
"dataset = create_dataset(f, n_var=2)\n",
|
||
|
"model.get_act(dataset)\n",
|
||
|
"\n",
|
||
|
"model.plot()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "535c253f",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"if you want more complicated formulas, you can load in an equation in the Feynman dataset."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 2,
|
||
|
"id": "e9cf1b61",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 500x600 with 33 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"from kan.feynman import get_feynman_dataset\n",
|
||
|
"\n",
|
||
|
"problem_id = 3 # problem_id in 1-120\n",
|
||
|
"input_variables, expr, f, ranges = get_feynman_dataset(problem_id)\n",
|
||
|
"n_var = len(input_variables)\n",
|
||
|
"model = sf2kan(input_variables, expr)\n",
|
||
|
"\n",
|
||
|
"dataset = create_dataset(f, n_var=n_var, ranges=ranges)\n",
|
||
|
"model.get_act(dataset)\n",
|
||
|
"model.plot(in_vars=input_variables, out_vars=[expr], beta=10000, title='P{}'.format(problem_id))"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "d1db913e",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"We can check that the model indeed achieves zero loss (near machine precision) on the data"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 3,
|
||
|
"id": "910c99a9",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": [
|
||
|
"tensor(4.0276e-16, grad_fn=<MeanBackward0>)"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 3,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"torch.mean((model(dataset['train_input'])-dataset['train_label'])**2)"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "35c347d2",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"Assume we have a dataset for which the symbolic formula is only an approximate ground truth, we want to train on the real data to fine tune the model. The current model has the symbolic front turned on and the spline front turned off. So only the affine parameters in the symbolic equations are trainable. Depending on how much expressive power you would like, you may need:\n",
|
||
|
"\n",
|
||
|
"* If you want to keep the symbolic functions, but just train the affine parameters, no need to do anything.\n",
|
||
|
"* If you want to the functions to be trainable, call model.perturb(). If you want only the currently active functions to be trainable while the currently dead functions to remain dead, use mode='minimal'. Otherwise if you want to allow the currently dead functions to be active, use mode = 'all' (by default).\n",
|
||
|
"* If you think the ground truth should be more complicated than the current network, you can expand it first using expand_width and/or expand_depth, and then use model.perturb().\n",
|
||
|
"\n",
|
||
|
"In the following, we present the most complicated case where you want to expand the network first."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "63af424e",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"step 1: expand depth, add an extra linear function in the end"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"id": "381b8a03",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZcAAAJ8CAYAAAAyDezRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABypElEQVR4nO3dd1zV9f4H8NdhI6AgqIihKWJqprky1NyjNM0090BaZiql3bJudbuN+9Oms1tqBSrXHGlpoph7laZmDsyRG0SRpbLHef/++AgCoqJ8z/me8Xo+Hjw0DuN98nPO6/v9TIOICIiIiDTkoHcBRERkexguRESkOYYLERFpjuFCRESaY7gQEZHmGC5ERKQ5hgsREWmO4UJERJpjuBARkeYYLkREpDmGCxERaY7hQkREmmO4EBGR5hguRESkOYYLERFpjuFCRESac9K7ACJrICJITk5Geno6PD094evrC4PBoHdZRBaLdy5Et5GWloYZM2YgODgY1apVQ926dVGtWjUEBwdjxowZSEtL07tEIotk4DHHRGVbt24dBgwYgMzMTADq7qVQ4V1LpUqVsHz5cvTs2VOXGoksFcOFqAzr1q1D7969ISIwGo23/DoHBwcYDAZER0czYIiKYbgQlZKWlob77rsPWVlZtw2WQg4ODnB3d0dcXBy8vb1NXyCRFeCYC1Ep8+fPR2ZmZrmCBQCMRiMyMzOxYMECE1dGZD1450JUjIggODgYp06dwt28NAwGA+rVq4cTJ05wFhkRGC5EJSQlJaFatWoV+n5fX18NKyKyTuwWIyomPT29Qt9/7do1jSohsm4MF6JiPD09K/T9Xl5eGlVCZN0YLkTF+Pr6Iigo6K7HTQwGA4KCglC1alUTVUZkXRguRMUYDAZMmDDhnr43PDycg/lE13FAn6gUrnMhqjjeuRCV4u3tjeXLl8NgMMDB4fYvkcIV+itWrGCwEBXDcCEqQ8+ePREdHQ13d3cYDIabursKP+fu7o41a9agR48eOlVKZJkYLkS30LNnT8TFxWH69OmoV69eicfq1auH6dOnIz4+nsFCVAaOuRCVg4hg8+bN6Nq1KzZu3IjOnTtz8J7oNnjnQlQOBoOhaEzF29ubwUJ0BwwXIiLSHMOFiIg0x3AhIiLNMVyIiEhzDBciItIcw4WIiDTHcCEiIs0xXIiISHMMFyIi0hzDhYiINMdwISIizTFciIhIcwwXIiLSHMOFiIg0x3AhIiLNMVyIiEhzDBeiOzAajUhJScG5c+cAAAkJCcjIyNC5KiLLxmOOiW4hOzsbmzZtwoIFC7Bnzx4kJiYiPT0dVapUQd26ddGjRw+EhoaiUaNGPJmSqBSGC1EZTp06hTfeeAPR0dEICAhA586d0bx5c1SuXBnJycnYu3cvNm/ejLy8PEyaNAnh4eGoVKmS3mUTWQyGC1EpR44cwdChQ3H+/HlMnDgRL7zwAipXroz9+/cjPz8fbm5uePjhh5GQkIBp06YhIiICw4YNwxdffMGAIbqO4UJUTHJyMp566ikcO3YM33zzDZ588kk4Ojri1KlTaNOmDdLS0lC3bl3s3r0b3t7eyM/Px3fffYc33ngDr732Gt555x04OHAok8hJ7wKILMlXX32FvXv3YubMmejTp0+JoMjLy0N+fj7y8/MBAAaDAc7Oznjuuedw/vx5zJw5E08++SRatGihV/lEFoOXWETXJSYmIiIiAiEhIRg+fHi570CcnJwQHh6O6tWrY968eWBnABHDhajInj17cP78eYwYMQJubm4oKCgo8VFIRG56zM/PD/3798eGDRuQlpam35MgshDsFiO6bv/+/XBxcUGLFi0wefJkHD58uOixrKysorUtly5dwpAhQ+DkdOPlM3bsWLRr1w6zZs1CfHw8fHx8zF4/kSVhuBBdl5iYCDc3N1SpUgW7d+/Gjh07yvy6rKwsbNy4scTnevfujbZt28JoNPLOhQgMF6Iirq6uMBqNyM/Ph4ODw01jLkajsejvpR8zGAzIzc0FADg7O5u+WCILx3Ahui4oKAgZGRmIi4vDxx9/jNTU1KLHEhISEB4ejoyMDNSoUQOzZs2Cp6dn0eONGjXC1q1b4ebmhho1auhRPpFFYbgQXdemTRu4uLggJiYGU6dOLXF3curUqaIxlkqVKqFbt24lxlXy8/OxZs0aNGrUCDVr1jR77USWhrPFiK5r3LgxQkJCsHjxYpw8ebLcU4pFBLt378b69esxdOhQuLq6mrhSIsvHcCG6ztXVFZMnT0ZaWhomT56Mq1ev3jFgRAQJCQl44403EBwcjCFDhpipWiLLxnAhKqZTp054/fXXsXbtWrz00kuIj4+HiMDR0RH+/v6oWbMmqlevDgcHB4gIjh8/jtDQUJw5cwbTpk3jFGSi67i3GFEpOTk5mDp1Kj799FPUrl0bY8eORY8ePeDq6gpHR0cUFBQgPT0dK1euxNy5c+Hs7Iw5c+aga9euepdOZDEYLkRlKCgoKBrY37dvH9zd3VGzZk14eHjg2rVruHDhAhwdHdGvXz+89dZbqF+/vt4lE1kUhgvRbWRmZmLv3r3Yvn07TuzahazVq+H7zDNo1q0bOnXqhPr168PR0VHvMoksDsOFqLz++APSsiUM+/YB3PmY6LY4oE90F3icMVH5MFyIiEhzDBciItIcw4WIiDTHcCEiIs0xXIiISHMMFyIi0hzDhYiINMdwISIizTFciIhIcwwXIiLSHMOFiIg0x3AhIiLNMVyIiEhzDBciItIcw4WIiDTHcCEiIs0xXIiISHMMFyIi0hzDhYiINMdwISIizTFciIhIcwwXIiLSHMOFiIg0x3AhIiLNMVyIiEhzDBciItIcw4WIiDTHcCEiIs0ZRET0LoLIKogARiPg4AAYDHpXQ2TRnPQugMjcEo8dQ+bZs2b9nX6tW8PTx8esv5NITwwXsjtnoqPRcOBA8/yy774DmjZF0unTDBeyKwwXsjsigsqBgab+JUBEBPDRR8DXXyOlTh3T/j4iC8MBfSKtiag7ljFjgC++AJ59Vu+KiMyO4UKkpcJgeeklFSzjx3Pwn+wSw4VIKwwWoiIMFyItMFiISmC4EFWUCPDttypYpk1jsBCB4UJUMYXBMnasCpZx4xgsRGC4EN07BgvRLTFciO4Fg4XotriIkuhuFQ+W6dOBl19msBCVwjsXorvBYCEqF4YLUXmJAN98w2AhKgeGC1F5FAbLyy8zWIjKgeFCdCcMFqK7xnAhuh0GC9E9YbgQ3YoIMG+eCpQZMxgsRHeB4UJUlsJgGTdOBcvYsQwWorvAcCEqjcFCVGEMF6LiGCxEmmC4EBUSAebOVcEycyaDhagCGC5EwI1gGT9eBctLLzFYiCqA4ULEYCHSHMOF7BuDhcgkGC5kv0SAOXNUsMyaxWAh0hDDhexT4R3LhAkqWMaMYbAQaYjhQvbpm29u3LEwWIg0x8PCyO4YAOSIAFOmAMOHAxkZepdEZHMMIiJ6F0FkTud27ULmuXNm/Z01OnSAj7+/WX8nkZ4YLkREpDl2ixGVV/HrMI7REN0WB/SJymv/fsDRUf1JRLfFcCEiIs0xXIiISHMMFyIi0hzDhYiINMdwISIizTFciIhIcwwXIiLSHMOFiIg0x3AhIiLNMVyIiEhzDBciItIcw4WIiDTHcCEiIs0xXIiISHMMFyIi0hzDhYiINMdwISIizTFciIhIcwwXIiLSHMOFiIg0x3AhIiLNMVyIiEhzDBciItIcw4WIiDTHcCEiIs0xXIiISHMMFyIi0pyT3gUQWYPMzEwkX7yIayJwPHMGPvfdBx8fHzg7O+tdGpFFMoiI6F0EkSUyGo2IjY1FVFQUNmzYgHOnTiErLQ0OHh6o7O2NRo0aoX///hgwYACqV6+ud7lEFoXhQlSGK1eu4JNPPsGcOXNQUFCARx99FO3atUNgYCCMRiNOnz6NnTt3Ys+ePQgMDMSHH36Ip556Co6OjnqXTmQRGC5EpVy+fBkvvPACYmJi0LdvX7z11lto0qQJnJycYDAYAAAigtzcXOzZswcfffQRfvvtN7z33nsIDw+HkxN7m4k4oE9UTHZ2Nl577TW
|
||
|
"text/plain": [
|
||
|
"<Figure size 500x800 with 35 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"model.expand_depth()\n",
|
||
|
"model.get_act(dataset)\n",
|
||
|
"model.plot()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "27a934fe",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"step 2: add two addition nodes in layer 1."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 5,
|
||
|
"id": "5c5f92c9",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 500x800 with 49 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"model.expand_width(1, 2)\n",
|
||
|
"model.get_act(dataset)\n",
|
||
|
"model.plot()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "3459fc85",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"step 3: add two multiplication nodes in layer 2, with arity 2 and 3."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 6,
|
||
|
"id": "ec1bfb11",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 500x800 with 85 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"model.expand_width(2, 2, sum_bool=False, mult_arity=[2,3])\n",
|
||
|
"model.get_act(dataset)\n",
|
||
|
"model.plot()"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "038ea175",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"step 4: now we perturb all edges (mode='minimal' only perturb the currently active edges, mode='all' perturbs all neurons)."
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 7,
|
||
|
"id": "45c8e738",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 500x800 with 85 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"model.perturb(mag=0.1, mode='all')\n",
|
||
|
"model.get_act(dataset)\n",
|
||
|
"model.plot()\n",
|
||
|
"# purple means both symbolic front (red) and spline front (black) are active"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 8,
|
||
|
"id": "6feae91b",
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 500x800 with 85 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"model.plot(beta=1000)"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"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.9.7"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 5
|
||
|
}
|