基于论文 Liquid Time-Constant Networks 与 Closed-form Continuous-time Neural Networks,结合 ncps 开源库,构建的 9 篇渐进式学习代码。
液态神经网络(Liquid Neural Networks, LNN)是 MIT CSAIL 于 2020-2021 年提出的新型连续时间循环网络架构,具有动态时间常数、非均匀采样鲁棒性和极低参数量三大优势。然而,现有学习资料要么停留在论文层面,要么仅展示 API 调用,缺乏从数学原理到工业部署的完整实践路径。
本项目的目标:让每一位有 PyTorch 基础的开发者,都能真正理解 LNN 并将其应用到自己的项目中。
基础理论 核心架构 工程实践
─────────────────────────────────────────────────────────────────
01 范式转移 ──┐
02 Neural ODE ─┤
03 LTC原理 ───┼── 04 LTC实现 ── 05 伴随方法 ── 06 求解器对比
│ │
│ ├── 07 事件驱动
│ │
└── 08 CfC闭式解 ────────────────┴── 09 MCU部署
| 编号 | 文件 | 核心内容 | 关键实现 |
|---|---|---|---|
| 01 | 01_lnn_paradigm_shift.py |
传统RNN vs LNN范式差异 | MiniLiquidCell、非均匀采样鲁棒性、动态时间常数τ |
| 02 | 02_neural_ode.py |
ODE与Neural ODE | 手写Euler/RK4求解器、torchdiffeq实战、向量场可视化 |
| 03 | 03_ltc_from_neural_ode.py |
Neural ODE → LTC演进 | 自限制机制(A-h)、动态τ_sys、物理约束注入 |
| 编号 | 文件 | 核心内容 | 关键实现 |
|---|---|---|---|
| 04 | 04_ltc_cell_from_scratch.py |
从零搭建LTC细胞 | LTCCell/LTCModel完整实现、不规则时间序列处理 |
| 05 | 05_adjoint_method.py |
伴随灵敏度算法 | BPTT显存墙分析、odeint_adjoint的O(1)内存训练 |
| 06 | 06_ode_solvers_comparison.py |
求解器全景对比 | Euler/RK4/Dopri5精度与稳定性、NFE分析、三步走策略 |
| 编号 | 文件 | 核心内容 | 关键实现 |
|---|---|---|---|
| 07 | 07_event_driven.py |
事件驱动与稀疏计算 | 变化率门控、自适应时间分片、事件相机模拟 |
| 08 | 08_cfc_architecture.py |
CfC闭式解架构 | CfCCell从零实现、CfC vs LTC速度对比、并行计算 |
| 09 | 09_mcu_deployment.py |
MCU部署实战 | INT8量化、LUT查找表、C代码生成、QAT训练 |
# 克隆仓库
git clone https://github.com/<your-username>/LNN-Series.git
cd LNN-Series
# 安装依赖
pip install -r lnn_series/requirements.txt依赖列表:
torch >= 2.0.0— 深度学习框架numpy >= 1.24.0— 数值计算ncps >= 1.0.1— 液态神经网络库(CfC/LTC/AutoNCP)torchdiffeq >= 0.2.3— Neural ODE求解器matplotlib >= 3.7.0— 可视化
每篇代码均可独立运行,无需按顺序执行:
# 运行任意一篇
python lnn_series/01_lnn_paradigm_shift.py
python lnn_series/04_ltc_cell_from_scratch.py
python lnn_series/08_cfc_architecture.py
# 运行后会:
# 1. 在终端输出实验数据和分析结论
# 2. 在 lnn_series/ 目录下生成可视化图表(PNG)LTC 的状态演化由微分方程驱动:
dh/dt = -(G_L + Σ w_i·σ_i) · h + Σ w_i·σ_i · A_i
───────────────── ──────────────────
系统时间常数 τ_sys 稳态目标 S
- 动态时间常数 τ_sys = 1/(G_L + Σ w_i·σ_i):输入剧烈时τ小(快速响应),平稳时τ大(保留记忆)
- 自限制机制 (A - h):状态永远被限制在物理合理范围内,不会发散
- 时间感知 dt 直接参与计算,天然适应非均匀采样
CfC 将 LTC 的微分方程通过数学近似转化为闭式解:
h(t) = exp(-f·t) · I(x,θ) + (1 - exp(-f·t)) · S(x,θ)
───────── ──────────────────
衰减因子 稳态目标
- 无需ODE求解器:直接代入 t 即可计算,推理速度提升 10-100 倍
- 支持并行计算:所有时间点可同时计算,突破时序串行瓶颈
- 门控机制:天然控制梯度,处理超长时序更稳定
本系列代码与 CSDN 博客系列一一对应,建议结合阅读:
| 编号 | 博客主题 | 链接 |
|---|---|---|
| 01 | 液态神经网络是什么? | 阅读 |
| 02 | 常微分方程与Neural ODE | 阅读 |
| 03 | 从Neural ODE到LTC | 阅读 |
| 04 | 从零搭建LTC细胞 | 阅读 |
| 05 | 伴随灵敏度算法实战 | 阅读 |
| 06 | 求解器全景对比 | 阅读 |
| 07 | 事件驱动与稀疏计算 | 阅读 |
| 08 | CfC闭式解架构 | 阅读 |
| 09 | MCU部署实战 | 阅读 |
博客专栏:液态神经网络(LNN)系列
LNN-Series/
├── lnn_series/
│ ├── __init__.py
│ ├── requirements.txt
│ │
│ ├── 01_lnn_paradigm_shift.py # 范式转移
│ ├── 02_neural_ode.py # Neural ODE
│ ├── 03_ltc_from_neural_ode.py # LTC原理
│ ├── 04_ltc_cell_from_scratch.py # LTC实现
│ ├── 05_adjoint_method.py # 伴随方法
│ ├── 06_ode_solvers_comparison.py # 求解器对比
│ ├── 07_event_driven.py # 事件驱动
│ ├── 08_cfc_architecture.py # CfC架构
│ ├── 09_mcu_deployment.py # MCU部署
│ │
│ ├── 01_dynamic_tau.png # 可视化图表
│ ├── 01_irregular_sampling.png
│ ├── 07_event_driven.png
│ ├── 07_temporal_partition.png
│ ├── 07_event_camera.png
│ ├── 07_computation_savings.png
│ ├── 08_cfc_training.png
│ ├── 09_lut_implementation.png
│ └── 09_qat_training.png
│
└── README.md
- Ramin Hasani et al. Liquid Time-Constant Networks. AAAI 2021.
- Ramin Hasani et al. Closed-form Continuous-time Neural Networks. Nature Machine Intelligence 2022.
- Mathias Lechner et al. Neural Circuit Policies Enabling Auditable Autonomy. Nature Machine Intelligence 2022.
- Ricky T. Q. Chen et al. Neural Ordinary Differential Equations. NeurIPS 2018.
- ncps - Neural Circuit Policies — 官方开源库
- MIT CSAIL — LNN/CfC 论文原作团队
- mlech26l/ncps — ncps 开源库作者 Mathias Lechner
- rtqichen/torchdiffeq — Neural ODE 求解器
This project is licensed under the MIT License - see the LICENSE file for details.