Double-KANs: Enhancing KANs with Simplified NURBS for Accurate Approximation of Discontinuous Signals

May 10, 2026 · View on GitHub

Double-KAN Architecture

Abstract

Kolmogorov–Arnold Networks (KANs) have shown strong potential in scientific computing, including approximating physical equations and solving partial differential equations. While B-splines provide KAN with local control and robustness to catastrophic forgetting, the Uniform Rational B-Splines (URBS) used in vanilla KAN struggle to approximate abrupt or discontinuous signals, limiting their effectiveness. To address this issue, we introduce Double-KANs, a novel structure that expresses Non-Uniform Rational B-Splines (NURBS) as a simplified quotient of two B-spline summations. Double-KANs retains the structural simplicity of vanilla KAN while substantially enhancing the approximation of discontinuities. Furthermore, it can be seamlessly applied to existing KAN-based models and extensions. Experimental evaluations across multiple tasks demonstrate that Double-KANs achieves superior accuracy and generalization compared to multilayer perceptrons(MLP), vanilla KAN, and other improved variants, highlighting its effectiveness and broad applicability.

Highlight

  • Introduce NURBS to improve KAN’s ability to approximate abrupt signals
  • Maintain compatibility with KAN-based models for seamless enhancement
  • Show better performance than MLPs, vanilla KANs, and their variants in multiple tasks

We propose Double-KANs, an extension of KANs that overcomes their limitations in approximating abrupt and discontinuous signals. By reformulating NURBS as a quotient of two B-spline summations, Double-KANs preserves the simplicity of vanilla KANs while significantly enhancing their approximation ability. Experiments on multiple tasks, including bladder cancer classification and staging, show that Double-KANs consistently outperforms MLPs, vanilla KANs, and other variants, achieving superior accuracy and generalization.

Environment Requirements

Python Version

  • Python 3.9

Main Dependencies

# Core scientific computing
numpy=1.26.4
torch=2.7.1+cu118
torchvision>=0.22.1

# Machine learning utilities
scikit-learn>=1.1.0
pandas=2.1.4

# Visualization (optional)
matplotlib>=3.5.0

Installation

# Clone the repository
git clone https://github.com/baboonaaaa/Double-KANs.git
cd Double-KANs

# Install dependencies
pip install -r requirements.txt

# Or install manually
pip install python=3.9.23 numpy=1.26.4 torch=2.7.1+cu118 torchvision>=0.22.1 scikit-learn>=1.1.0 pandas=2.1.4 matplotlib>=3.5.0

Quick Start

# Basic training with default parameters
python train_minist_double_kan.py

# Custom training with specific parameters
python train_minist_double_kan.py \
    --epochs 100 \
    --batch_size 64 \
    --lr 1e-4 \
    --n_hidden 32 \
    --model_name "my_double_kan" \
    --note "experiment_1"

# View all available parameters
python train_minist_double_kan.py --help

Citation

If you use Double-KANs in your research, please cite our paper:

@article{2026doublekans,
title = {Double-KANs: Enhancing KANs with simplified NURBS for accurate modeling of discontinuous signals},
author = {Wei Gao and Hongtao Liu and Meixuan Li and Xingfei Li and Xuefeng Li},
journal = {Neurocomputing},
pages = {133895},
year = {2026},
publisher={Elsevier}
}