fix html
This commit is contained in:
parent
db8d4f4b60
commit
9e8ede0d2d
@ -31,7 +31,7 @@ use cuda, we should pass the device argument to model and dataset.
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
train loss: 6.70e-03 | test loss: 6.83e-03 | reg: 7.91e+00 : 100%|██| 50/50 [00:25<00:00, 1.99it/s]
|
||||
train loss: 5.78e-03 | test loss: 5.89e-03 | reg: 7.32e+00 : 100%|██| 50/50 [00:26<00:00, 1.85it/s]
|
||||
|
||||
|
||||
.. code:: ipython3
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@ -16,17 +16,44 @@ parameters)
|
||||
f = lambda x: torch.exp((torch.sin(torch.pi*(x[:,[0]]**2+x[:,[1]]**2))+torch.sin(torch.pi*(x[:,[2]]**2+x[:,[3]]**2)))/2)
|
||||
dataset = create_dataset(f, n_var=4, train_num=3000)
|
||||
|
||||
image_folder = 'video_img'
|
||||
|
||||
# train the model
|
||||
#model.train(dataset, opt="LBFGS", steps=20, lamb=1e-3, lamb_entropy=2.);
|
||||
model.train(dataset, opt="LBFGS", steps=50, lamb=5e-5, lamb_entropy=2., save_video=True, beta=10,
|
||||
model.train(dataset, opt="LBFGS", steps=50, lamb=5e-5, lamb_entropy=2., save_fig=True, beta=10,
|
||||
in_vars=[r'$x_1$', r'$x_2$', r'$x_3$', r'$x_4$'],
|
||||
out_vars=[r'${\rm exp}({\rm sin}(x_1^2+x_2^2)+{\rm sin}(x_3^2+x_4^2))$'],
|
||||
video_name='video', fps=5);
|
||||
img_folder=image_folder);
|
||||
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
train loss: 6.39e-03 | test loss: 6.40e-03 | reg: 7.91e+00 : 100%|██| 50/50 [01:30<00:00, 1.81s/it]
|
||||
train loss: 5.89e-03 | test loss: 5.99e-03 | reg: 7.89e+00 : 100%|██| 50/50 [01:36<00:00, 1.92s/it]
|
||||
|
||||
|
||||
.. code:: ipython3
|
||||
|
||||
import os
|
||||
import numpy as np
|
||||
import moviepy.video.io.ImageSequenceClip # moviepy == 1.0.3
|
||||
|
||||
video_name='video'
|
||||
fps=5
|
||||
|
||||
fps = fps
|
||||
files = os.listdir(image_folder)
|
||||
train_index = []
|
||||
for file in files:
|
||||
if file[0].isdigit() and file.endswith('.jpg'):
|
||||
train_index.append(int(file[:-4]))
|
||||
|
||||
train_index = np.sort(train_index)
|
||||
|
||||
image_files = [image_folder+'/'+str(train_index[index])+'.jpg' for index in train_index]
|
||||
|
||||
clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files, fps=fps)
|
||||
clip.write_videofile(video_name+'.mp4')
|
||||
|
||||
|
||||
.. parsed-literal::
|
||||
@ -45,3 +72,4 @@ parameters)
|
||||
Moviepy - Done !
|
||||
Moviepy - video ready video.mp4
|
||||
|
||||
|
||||
|
@ -41,7 +41,7 @@ Requirements
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# python==3.9.7
|
||||
matplotlib==3.6.2
|
||||
numpy==1.24.4
|
||||
scikit_learn==1.1.3
|
||||
|
@ -83,7 +83,7 @@ class KAN(nn.Module):
|
||||
Args:
|
||||
-----
|
||||
width : list of int
|
||||
[n0, n1, .., n_{L-1}] specify the number of neurons in each layer (including inputs/outputs)
|
||||
:math:`[n_0, n_1, .., n_{L-1}]` specify the number of neurons in each layer (including inputs/outputs)
|
||||
grid : int
|
||||
number of grid intervals. Default: 3.
|
||||
k : int
|
||||
@ -466,7 +466,7 @@ class KAN(nn.Module):
|
||||
l : int
|
||||
layer index
|
||||
ids : 2D list
|
||||
[[i1,j1],[i2,j2],...] set (l,ii,j1), (l,i2,j2), ... to be the same function
|
||||
:math:`[[i_1,j_1],[i_2,j_2],...]` set :math:`(l,i_i,j_1), (l,i_2,j_2), ...` to be the same function
|
||||
|
||||
Returns:
|
||||
--------
|
||||
|
@ -182,14 +182,9 @@ class Symbolic_KANLayer(nn.Module):
|
||||
>>> print(sb.affine)
|
||||
[['', '', ''], ['', '', 'sin']]
|
||||
Parameter containing:
|
||||
tensor([[[0., 0., 0., 0.],
|
||||
tensor([[0., 0., 0., 0.],
|
||||
[0., 0., 0., 0.],
|
||||
[0., 0., 0., 0.]],
|
||||
|
||||
[[0., 0., 0., 0.],
|
||||
[0., 0., 0., 0.],
|
||||
[1., 0., 1., 0.]]], requires_grad=True)
|
||||
|
||||
[1., 0., 1., 0.]], requires_grad=True)
|
||||
Example 2
|
||||
---------
|
||||
>>> # when x & y are provided, fit_params() is called to find the best fit coefficients
|
||||
@ -236,4 +231,4 @@ class Symbolic_KANLayer(nn.Module):
|
||||
self.affine.data[j][i] = torch.tensor([1.,0.,1.,0.])
|
||||
else:
|
||||
self.affine.data[j][i] = torch.rand(4,) * 2 - 1
|
||||
return None
|
||||
return None
|
||||
|
130
tutorials/.ipynb_checkpoints/API_9_video-checkpoint.ipynb
Normal file
130
tutorials/.ipynb_checkpoints/API_9_video-checkpoint.ipynb
Normal file
@ -0,0 +1,130 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "134e7f9d",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Demo 9: Videos\n",
|
||||
"\n",
|
||||
"We have shown one can visualize KAN with the plot() method. If one wants to save the training dynamics of KAN plots, one only needs to pass argument save_video = True to train() method (and set some video related parameters)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"id": "2075ef56",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"train loss: 5.89e-03 | test loss: 5.99e-03 | reg: 7.89e+00 : 100%|██| 50/50 [01:36<00:00, 1.92s/it]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"from kan import KAN, create_dataset\n",
|
||||
"import torch\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=[4,2,1,1], grid=3, k=3, seed=0)\n",
|
||||
"f = lambda x: torch.exp((torch.sin(torch.pi*(x[:,[0]]**2+x[:,[1]]**2))+torch.sin(torch.pi*(x[:,[2]]**2+x[:,[3]]**2)))/2)\n",
|
||||
"dataset = create_dataset(f, n_var=4, train_num=3000)\n",
|
||||
"\n",
|
||||
"image_folder = 'video_img'\n",
|
||||
"\n",
|
||||
"# train the model\n",
|
||||
"#model.train(dataset, opt=\"LBFGS\", steps=20, lamb=1e-3, lamb_entropy=2.);\n",
|
||||
"model.train(dataset, opt=\"LBFGS\", steps=50, lamb=5e-5, lamb_entropy=2., save_fig=True, beta=10, \n",
|
||||
" in_vars=[r'$x_1$', r'$x_2$', r'$x_3$', r'$x_4$'],\n",
|
||||
" out_vars=[r'${\\rm exp}({\\rm sin}(x_1^2+x_2^2)+{\\rm sin}(x_3^2+x_4^2))$'],\n",
|
||||
" img_folder=image_folder);\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "c18245a3",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Moviepy - Building video video.mp4.\n",
|
||||
"Moviepy - Writing video video.mp4\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
" \r"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"Moviepy - Done !\n",
|
||||
"Moviepy - video ready video.mp4\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"import os\n",
|
||||
"import numpy as np\n",
|
||||
"import moviepy.video.io.ImageSequenceClip # moviepy == 1.0.3\n",
|
||||
"\n",
|
||||
"video_name='video'\n",
|
||||
"fps=5\n",
|
||||
"\n",
|
||||
"fps = fps\n",
|
||||
"files = os.listdir(image_folder)\n",
|
||||
"train_index = []\n",
|
||||
"for file in files:\n",
|
||||
" if file[0].isdigit() and file.endswith('.jpg'):\n",
|
||||
" train_index.append(int(file[:-4]))\n",
|
||||
"\n",
|
||||
"train_index = np.sort(train_index)\n",
|
||||
"\n",
|
||||
"image_files = [image_folder+'/'+str(train_index[index])+'.jpg' for index in train_index]\n",
|
||||
"\n",
|
||||
"clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files, fps=fps)\n",
|
||||
"clip.write_videofile(video_name+'.mp4')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "88d0d737",
|
||||
"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.7"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user