148 lines
56 KiB
Plaintext
148 lines
56 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "134e7f9d",
|
|
"metadata": {},
|
|
"source": [
|
|
"# API 3: Extracting activation functions\n",
|
|
"\n",
|
|
"The KAN diagrams give intuitive illustration, but sometimes we may also want to extract the values of activation functions for more quantitative tasks. Using the indexing convention introduced in the indexing notebook, each edge is indexed as $(l,i,j)$, where $l$ is the layer index, $i$ is the input neuron index, and $j$ is output neuron index."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "2075ef56",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"cuda\n",
|
|
"checkpoint directory created: ./model\n",
|
|
"saving model version 0.0\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 500x400 with 22 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"from kan import *\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"\n",
|
|
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
|
|
"print(device)\n",
|
|
"\n",
|
|
"# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
|
|
"model = KAN(width=[2,5,1], grid=3, k=3, seed=1, device=device)\n",
|
|
"x = torch.normal(0,1,size=(100,2)).to(device)\n",
|
|
"model(x)\n",
|
|
"model.plot(beta=100)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "d3fe2e03",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 300x300 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"l = 0\n",
|
|
"i = 0\n",
|
|
"j = 3\n",
|
|
"x, y = model.get_fun(l,i,j)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "a9e62f17",
|
|
"metadata": {},
|
|
"source": [
|
|
"If we are interested in the range of some activation function, we can use get_range."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "1a978202",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"x range: [-1.61 , 3.38 ]\n",
|
|
"y range: [-0.19 , 0.56 ]\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"(array(-1.6111118, dtype=float32),\n",
|
|
" array(3.38374, dtype=float32),\n",
|
|
" array(-0.18606013, dtype=float32),\n",
|
|
" array(0.5614974, dtype=float32))"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"model.get_range(l,i,j)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "6f92ea27-5c88-4771-95a8-3ab2eac97501",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"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.16"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|