依托MATLAB的KAN(Kolmogorov-Arnold Network)解析样条神经网络(dlnetwork)发布

作品简介

本项目基于可解释的解析样条神经网络思想,通过 `KANLayer.m` 将样条/基函数作为可学习的非线性单元,以 `KANNetwork.m` 模块化装配输入层—若干隐藏层—输出层,`BuildNet.m` 负责网络参数化与初始化(含输入/输出归一化边界、样条节点与宽度等),形成既具表达力又具物理含义的结构;实现流程上,训练脚本完成数据读取与标准化、前向传播与损失计算、反向传播更新样条系数与权重与可视化工具生成散点密度与“预测 VS 真实”图件;相较传统黑盒模型,本方案优势在于:对小样本与噪声更鲁棒、可通过样条形状观测局部拟合行为、可按需扩展隐藏宽度与样条密度以线性提升容量、依托 MATLAB Deep Learning Toolbox 的自定义层接口易于部署与复现,并提供从构建—训练—预测—评估—出图的一体化示例与脚本,开箱即用。

## 目录结构

- `BuildNet.m`:网络构建入口(创建并返回模型)

- `KANLayer.m`:自定义层实现

- `KANNetwork.m`:网络装配与前向/参数初始化

- `net_YX1.mat` / `net_YX2.mat`:已构建好的网络,对应数据集YX1.xlsx、数据集YX2.xlsx

- `TrainingCode/`

  - `demo_Train.m`:训练示例脚本

  - `demo_Predict.m`:预测示例脚本

  - `CalError.m`:误差计算

  - `calSNR.m`:信噪比计算

  - `createScatterDensity.m``DrawDensScat.m``ksdensity.m`:散点密度图工具

- `数据集YX1.xlsx` / `数据集YX2.xlsx`:示例数据集(n列),第1列为目标变量,第2-n列为特征变量

- `图件/数据集YX1|YX2/`:训练与预测图像示例


## 环境要求

- MATLAB R2020b 或更高版本

- 工具箱:Deep Learning Toolbox


## 快速开始

1) 打开 MATLAB,将工作目录切换到项目根目录。

run('BuildNet.m');

- 弹出第1个对话框:选择Excel存放的数据(如数据集YX1.xlsx)

- 弹出第2个对话框:设置网络的保存路径和名称


2) 运行训练示例(以 YX1 为例):

run('TrainingCode/demo_Train.m');

- 弹出第1个对话框:选择Excel存放的数据(如数据集YX1.xlsx)

- 弹出第2个对话框:选择构建的网络

- 弹出第3个对话框:设置训练网络的保存路径和名称


3) 运行预测示例(加载已训练权重并预测):

run('TrainingCode/demo_Predict.m');

- 弹出第1个对话框:选择Excel存放的特征变量(n-1列)

- 弹出第2个对话框:选择训练的网络

- 弹出第3个对话框:设置预测值的保存路径和名称


4) 结果与图件会在命令行与 `图件/` 中查看。



## 网络构建说明

- 使用 `BuildNet.m` 生成网络对象;内部依赖 `KANLayer.m``KANNetwork.m` 完成层定义与网络装配。

- 可配置项(示例,具体以代码实现为准):

    - InputDim:输入特征维度

    - NumHidden:隐藏层神经元数

    - NumKnots:样条节点数

    - xmin:输入数据最小值 (1 x InputDim)

    - xmax:输入数据最大值 (1 x InputDim)

    - ymin:输出数据最小值 (标量)

    - ymax:输出数据最大值 (标量)


创作时间: