Examples§
Below are examples demonstrating TimeKAN’s usage.
Simple KAN-LSTM Example§
This script shows how to use tKANLSTM for time series prediction:
import torch
import torch.nn as nn
from timekan.models.tkan_lstm import tKANLSTM
from timekan.utils.datasets import mackey_glass
from cuda_selector import auto_cuda # Optional, must install cuda-selector
device = auto_cuda() # Optional, cpu for no cuda or select cuda device
class RecurrentKAN(nn.Module):
def __init__(self, input_dim, hidden_dim):
super().__init__()
self.tkan = tKANLSTM(
input_dim=input_dim,
hidden_dim=hidden_dim,
return_sequences=False,
bidirectional=True,
kan_type='fourier',
sub_kan_configs={'gridsize': 50, 'addbias': True}
)
self.regressor = nn.Linear(hidden_dim * 2, 1)
def forward(self, x):
features = self.tkan(x)
return self.regressor(features).squeeze(-1)
x_train, y_train, x_test, y_test = mackey_glass()
model = RecurrentKAN(input_dim=1, hidden_dim=16).to(device)
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
for epoch in range(10):
model.train()
optimizer.zero_grad()
x_train, y_train = x_train.to(device), y_train.to(device)
outputs = model(x_train)
loss = criterion(outputs, y_train)
loss.backward()
optimizer.step()
print(f"Epoch {epoch + 1}/10, Training MSE: {loss.item():.4f}")
model.eval()
with torch.no_grad():
x_test, y_test = x_test.to(device), y_test.to(device)
test_outputs = model(x_test)
test_mse = criterion(test_outputs, y_test).item()
print(f"Test MSE: {test_mse:.4f}")
More Examples§
Check the examples/ directory in the repository for detailed tutorials: