[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-D-ST-Sword--mlx-snn":3,"tool-D-ST-Sword--mlx-snn":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",151918,2,"2026-04-12T11:33:05",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":74,"owner_location":75,"owner_email":76,"owner_twitter":74,"owner_website":74,"owner_url":77,"languages":78,"stars":83,"forks":84,"last_commit_at":85,"license":86,"difficulty_score":32,"env_os":87,"env_gpu":88,"env_ram":89,"env_deps":90,"category_tags":97,"github_topics":74,"view_count":32,"oss_zip_url":74,"oss_zip_packed_at":74,"status":17,"created_at":99,"updated_at":100,"faqs":101,"releases":102},6951,"D-ST-Sword\u002Fmlx-snn","mlx-snn","Spiking Neural Network library built natively on Apple MLX","mlx-snn 是一个专为苹果 Apple Silicon 芯片（M1\u002FM2\u002FM3\u002FM4）打造的脉冲神经网络（SNN）开源库。它基于苹果原生的 MLX 框架构建，旨在为神经形态计算研究提供一个高效且易用的开发环境。\n\n传统 SNN 因需在每个时间步存储神经元状态，常受限于显存带宽和容量，难以在普通 GPU 上处理长时序任务。mlx-snn 利用苹果芯片的统一内存架构，消除了 CPU 与 GPU 间的数据传输瓶颈，使得训练更大规模的神经网络和处理更长生物信号序列成为可能。实测显示，其在能效比上表现卓越，能在更低功耗下实现比传统数据中心显卡更快的训练速度。\n\n该工具非常适合从事类脑计算、神经科学建模及低功耗 AI 研究的开发者与科研人员。它提供了简洁的 Python API，内置了 9 种主流神经元模型（如 LIF、Izhikevich 等）、多种代理梯度算法及脉冲编码方式，并支持通过 NIR 标准进行模型互通。无论是探索神经元动力学，还是训练基于事件流的分类器，mlx-snn 都能让用户在苹果生态中流畅地展开前沿实验。","# mlx-snn\n\n**A general-purpose Spiking Neural Network library built on Apple [MLX](https:\u002F\u002Fgithub.com\u002Fml-explore\u002Fmlx).**\n\nmlx-snn aims to provide an efficient, research-friendly SNN framework that leverages MLX's unified memory architecture and lazy evaluation. Whether you're exploring neuron dynamics, training classifiers with surrogate gradients, or exchanging models via [NIR](https:\u002F\u002Fgithub.com\u002Fneuromorphs\u002FNIR), mlx-snn offers a clean, Pythonic API that integrates naturally into the MLX ecosystem.\n\n[![CI](https:\u002F\u002Fgithub.com\u002FD-ST-Sword\u002Fmlx-snn\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FD-ST-Sword\u002Fmlx-snn\u002Factions\u002Fworkflows\u002Fci.yml)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fmlx-snn.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fmlx-snn\u002F)\n[![Python 3.9+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.9+-blue.svg)](https:\u002F\u002Fpython.org)\n[![License: GPL-3.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPL--3.0-blue.svg)](LICENSE)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-GitHub%20Pages-blue)](https:\u002F\u002Fd-st-sword.github.io\u002Fmlx-snn\u002F)\n[![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2603.03529-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529)\n\n> **9 neuron models** · **6 surrogate gradients** · **8 spike encodings** · **5 neuromorphic datasets** · **LSM reservoir** · **NIR interop** · **403 tests**\n\n## Highlights\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n**Unified Memory SNNs**\n\nSNNs store per-neuron states across every timestep — a memory bottleneck on discrete-GPU architectures. Apple Silicon's unified memory eliminates CPU↔GPU transfers, enabling extended temporal windows and larger reservoirs without the VRAM wall.\n\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n**17–25× Energy Efficiency**\n\nM3 Max trains SNNs **2.6–3.7× faster** than Tesla V100 at 1\u002F7th the power. Recurrent spiking dynamics are latency-bound, not compute-bound — favoring Apple Silicon's high-bandwidth unified architecture over datacenter parallelism.\n\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n**Multi-Scale Temporal Modeling**\n\n`MSLeaky` assigns frequency-matched decay rates to parallel spiking branches — capturing delta through gamma dynamics in a single network. Chunked BPTT with state detachment scales to long biosignal sequences (EEG, fMRI) without exploding memory.\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## Installation\n\n```bash\npip install mlx-snn\n```\n\nRequires Python 3.9+ and Apple Silicon (M1\u002FM2\u002FM3\u002FM4).\n\n## Quick Start\n\n```python\nimport mlx.core as mx\nimport mlx.nn as nn\nimport mlxsnn\n\n# Build a spiking network\nfc = nn.Linear(784, 10)\nlif = mlxsnn.Leaky(beta=0.95, threshold=1.0)\n\n# Encode input as spike train and run over time\nspikes_in = mlxsnn.rate_encode(mx.random.uniform(shape=(8, 784)), num_steps=25)\nstate = lif.init_state(batch_size=8, features=10)\n\nfor t in range(25):\n    spk, state = lif(fc(spikes_in[t]), state)\n\nprint(\"Output membrane:\", state[\"mem\"].shape)  # (8, 10)\n```\n\n## Features\n\n### Neuron Models\n\nAll neurons support `learn_threshold` and configurable reset mechanisms (`subtract` \u002F `zero` \u002F `none`). Neurons with a decay constant support `learn_beta`; recurrent neurons support `learn_V`. State is always an explicit dict — compatible with MLX's functional transforms and `mx.compile`.\n\n| Model | Description | State Variables |\n|-------|-------------|-----------------|\n| **Leaky (LIF)** | Leaky Integrate-and-Fire with configurable decay | `mem` |\n| **IF** | Integrate-and-Fire (non-leaky, perfect integrator) | `mem` |\n| **Izhikevich** | 2D dynamics with RS\u002FIB\u002FCH\u002FFS presets | `v`, `u` |\n| **ALIF** | Adaptive LIF with dynamic threshold | `mem`, `adapt` |\n| **Synaptic** | Conductance-based dual-state LIF | `syn`, `mem` |\n| **Alpha** | Dual-exponential synaptic model | `syn_exc`, `syn_inh`, `mem` |\n| **RLeaky** | Recurrent LIF with learnable feedback | `mem`, `spk` |\n| **RSynaptic** | Recurrent Synaptic with learnable feedback | `syn`, `mem`, `spk` |\n| **MSLeaky** | Multi-scale LIF with per-branch frequency-matched `beta` | `mem` per branch |\n\n### Surrogate Gradients\n\nAll neurons support differentiable training through 6 surrogate gradient functions:\n\n| Function | Surrogate gradient | Properties |\n|----------|--------------------|------------|\n| **Arctan** (default) | `α \u002F (π(1 + α²x²))` | Stable BPTT convergence, moderate locality |\n| **Fast Sigmoid** | `scale \u002F (2(1 + scale·\\|x\\|)²)` | Heavier tails, rational decay |\n| **Sigmoid** | `slope · σ(slope·x) · (1 − σ(slope·x))` | Standard logistic derivative |\n| **Triangular** | `max(0, 1 − \\|x\\|)` | Compact support, localized near threshold |\n| **Straight-Through** | `1` | Simplest, unit gradient everywhere |\n| **Custom** | User-defined | Plug in any differentiable approximation |\n\n### Spike Encoding\n\n8 encoding methods for converting continuous signals into spike trains:\n\n| Method | Input | Use Case |\n|--------|-------|----------|\n| **Rate (Poisson)** | Static values | Images, general-purpose classification |\n| **Latency (TTFS)** | Static values | Energy-efficient temporal coding |\n| **Delta Modulation** | Temporal signals | Change detection, event-like encoding |\n| **Direct** | Any tensor | Pass-through for pre-computed inputs |\n| **Repeat** | Spike patterns | Tile spike trains across longer windows |\n| **Frequency-Band** | EEG signals | FFT-based decomposition into delta\u002Ftheta\u002Falpha\u002Fbeta\u002Fgamma bands |\n| **Threshold-Crossing** | Temporal signals | Multi-level amplitude crossing detection |\n| **EEG Encoder** | Raw EEG | Configurable rate\u002Fdelta\u002Fthreshold encoding for biosignals |\n\n### Convolutional SNN Layers\n\nBuild deep spiking convolutional networks with spatial pooling:\n\n```python\nimport mlxsnn\n\nconv1 = mlxsnn.SpikingConv2d(in_channels=2, out_channels=64, kernel_size=3, padding=1)\npool1 = mlxsnn.SpikingMaxPool2d(kernel_size=2, stride=2)\nlif1  = mlxsnn.Leaky(beta=0.95)\ndrop  = mlxsnn.SpikeDropout(p=0.2)  # spike-aware (no rescaling)\nflat  = mlxsnn.SpikingFlatten()\n```\n\nAlso includes 6 mathematically-principled temporal operators for Conv SNNs: **TAC** (Temporal Aggregated Conv), **TAC-TP** (Temporal-Preserving), **L-TAC** (Learnable), **FTC** (Fourier Temporal Conv), **IMC** (InfoMax Spike Conv), **TCC** (Temporal Collapse Conv).\n\n### Liquid State Machine\n\nReservoir computing with spiking neurons — random sparse recurrent connectivity with configurable topology:\n\n```python\nimport mlxsnn\n\nlsm = mlxsnn.LSM(\n    input_size=64, reservoir_size=500, output_size=10,\n    connectivity=0.1, spectral_radius=0.9,\n    topology=\"small_world\",  # also: \"erdos_renyi\", \"scale_free\"\n    exc_ratio=0.8,           # Dale's law: 80% excitatory\n)\nstate = lsm.init_state(batch_size=32)\n\nfor t in range(num_steps):\n    output, state = lsm(spikes[t], state)\n```\n\n### Training Utilities\n\n**BPTT variants:**\n- `bptt_forward(model, spikes, state)` — standard backpropagation through time\n- `chunked_bptt_forward(model, spikes, state, chunk_size)` — memory-efficient training on long sequences via state detachment at chunk boundaries\n- `detach_state(state)` — detach all tensors in a state dict (for truncated BPTT)\n\n**`mx.compile` wrappers:**\n- `compiled_step(model)` — returns a compiled single-timestep callable\n- `compiled_forward(model, spikes, state)` — BPTT forward pass with per-timestep `mx.compile`\n\n**Loss functions (11 total):**\n\n| Loss | Approach |\n|------|----------|\n| `ce_rate_loss` | Cross-entropy on spike rates (spike count \u002F T) |\n| `ce_count_loss` | Cross-entropy on raw spike counts |\n| `mse_membrane_loss` | MSE on final membrane potential |\n| `mse_count_loss` | MSE on spike counts vs targets |\n| `membrane_loss` | Cross-entropy on final membrane potential |\n| `rate_coding_loss` | Cross-entropy on log-softmax of spike counts |\n| `activity_reg_loss` | Penalize deviation from target firing rate |\n| `l1_spike_loss` | L1 sparsity penalty on spike counts |\n| `l2_spike_loss` | L2 regularization on spike counts |\n\nUtility functions: `spike_rate`, `spike_count`.\n\n**Learnable parameters:** `learn_threshold` (all neurons), `learn_beta` (LIF-based neurons), `learn_V` (recurrent neurons). Works with standard MLX optimizers (`mlx.optimizers.Adam`, etc.).\n\n### Neuromorphic Datasets\n\n5 built-in dataset loaders with automatic download, caching, and event-to-frame conversion:\n\n| Dataset | Modality | Classes | Samples |\n|---------|----------|---------|---------|\n| **DVS-Gesture** | Event camera (hand gestures) | 11 | 1,342 |\n| **CIFAR10-DVS** | Event camera (natural images) | 10 | 10,000 |\n| **N-MNIST** | Event camera (digits) | 10 | 70,000 |\n| **SHD** | Audio (spoken digits) | 20 | 10,420 |\n| **SSC** | Audio (spoken commands) | 35 | 100,000+ |\n\n```python\nfrom mlxsnn.datasets import DVSGestureDataset, create_dataloader\n\ndataset = DVSGestureDataset(root=\".\u002Fdata\", train=True, num_steps=16)\nloader = create_dataloader(dataset, batch_size=16, shuffle=True)\n```\n\n### Visualization\n\nRequires `pip install mlx-snn[viz]` (matplotlib).\n\n```python\nfrom mlxsnn.utils.visualization import plot_raster, plot_membrane, plot_firing_rate\n\nplot_raster(spike_tensor, title=\"Layer 1 Spikes\")       # spike raster over time\nplot_membrane(state[\"mem\"], title=\"Membrane Potential\")  # membrane trace\nplot_firing_rate(spike_tensor, title=\"Firing Rates\")     # per-neuron rates\n```\n\n### NIR Interoperability\n\n[NIR](https:\u002F\u002Fgithub.com\u002Fneuromorphs\u002FNIR) enables cross-framework SNN model exchange — import\u002Fexport models to snnTorch, Norse, SpikingJelly, and neuromorphic hardware.\n\n```bash\npip install mlx-snn[nir]\n```\n\n```python\n# Export\nlayers = [('fc1', nn.Linear(784, 128)), ('lif1', mlxsnn.Leaky(beta=0.9)),\n          ('fc2', nn.Linear(128, 10)),   ('lif2', mlxsnn.Leaky(beta=0.9))]\nnir.write('model.nir', mlxsnn.export_to_nir(layers))\n\n# Import\nmodel = mlxsnn.import_from_nir(nir.read('model.nir'))\nout, state = model(x, model.init_states(batch_size=32))\n```\n\nSupported: `nn.Linear` ↔ `nir.Affine`\u002F`nir.Linear`, `Leaky` ↔ `nir.LIF`, `IF` ↔ `nir.IF`, `Synaptic` ↔ `nir.CubaLIF`.\n\n## Benchmarks\n\nAll experiments use identical hyperparameters: Adam (LR=1e-3), Poisson rate encoding, T=25 timesteps, batch size 128, 5 random seeds, 10 epochs, `surrogate_fn=\"fast_sigmoid\"`. Full scripts in [`benchmarks\u002F`](benchmarks\u002F) and our [arXiv paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529).\n\n### Training Accuracy (identical within noise)\n\n| Task | mlx-snn (M3 Max) | snnTorch (V100) |\n|------|-------------------|-----------------|\n| FC SNN on MNIST | **97.0%** | 97.2% |\n| FC SNN on FashionMNIST | **85.2%** | 85.2% |\n| LSM Reservoir on MNIST | 92.4% | **93.6%** |\n\n### Training Speed\n\n| Task | mlx-snn (M3 Max) | snnTorch (V100) | Speedup |\n|------|-------------------|-----------------|---------|\n| FC SNN (784→128→10) | **7.4 s\u002Fepoch** | 19.4 s\u002Fepoch | **2.6x** |\n| LSM Reservoir (500 neurons) | **3.2 s\u002Fepoch** | 5.7 s\u002Fepoch | **1.8x** |\n\n### Inference Throughput (samples\u002Fsec, T=25)\n\n| Model | Batch | mlx-snn (M3 Max) | snnTorch (V100) | Speedup |\n|-------|-------|-------------------|-----------------|---------|\n| FC-SNN | 128 | **23,875** | 6,552 | **3.6x** |\n| FC-SNN | 512 | **95,735** | 26,058 | **3.7x** |\n| Conv-SNN | 128 | **6,671** | 3,859 | **1.7x** |\n| Conv-SNN | 512 | **6,434** | 4,252 | **1.5x** |\n\n### `mx.compile` Acceleration\n\n| Mode | Time (25-step forward) |\n|------|----------------------|\n| Uncompiled | 2.72 ms |\n| Compiled | **0.92 ms** |\n| **Speedup** | **2.9x** |\n\n### Power Efficiency\n\nThe M3 Max (TDP ~45 W) delivers 2.6–3.7x faster SNN training\u002Finference than the V100 (TDP 300 W), yielding an estimated **17–25x better energy efficiency** (performance per watt).\n\nFor detailed results and reproduction scripts, see [`benchmarks\u002F`](benchmarks\u002F) and our [benchmarking paper](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529).\n\n## Migrating from snnTorch\n\nmlx-snn is designed to feel familiar to snnTorch users:\n\n| | snnTorch (PyTorch) | mlx-snn (MLX) |\n|---|---|---|\n| Import | `import snntorch as snn` | `import mlxsnn` |\n| Create | `lif = snn.Leaky(beta=0.9)` | `lif = mlxsnn.Leaky(beta=0.9)` |\n| Forward | `spk, mem = lif(x, mem)` | `spk, state = lif(x, state)` |\n| State | Separate tensors (`mem`) | Explicit dict (`state[\"mem\"]`) |\n| Tensors | `torch.Tensor` | `mx.array` |\n| Gradients | `autograd` + surrogate | STE pattern + `mx.stop_gradient` |\n\nKey design difference: **state is always an explicit dict** — pass in, get out. No hidden instance variables. This plays well with MLX's functional transforms (`mx.grad`, `mx.vmap`, `mx.compile`).\n\n## Project Structure\n\n```\nmlxsnn\u002F\n├── neurons\u002F       # Leaky, IF, Izhikevich, ALIF, Synaptic, Alpha, RLeaky, RSynaptic, MSLeaky\n├── surrogate\u002F     # arctan, fast_sigmoid, sigmoid, triangular, straight_through, custom\n├── encoding\u002F      # rate, latency, delta, direct, repeat, frequency-band, threshold-crossing, EEG\n├── functional\u002F    # Stateless pure functions, 11 loss functions, metrics\n├── layers\u002F        # SpikingConv2d, MaxPool2d, AvgPool2d, Flatten, SpikeDropout\n├── operators\u002F     # TAC, TAC-TP, L-TAC, FTC, IMC, TCC\n├── liquid\u002F        # LiquidReservoir, LSM, topology generators\n├── datasets\u002F      # DVSGesture, CIFAR10DVS, NMNIST, SHD, SSC\n├── training\u002F      # BPTT, chunked BPTT, mx.compile wrappers\n├── utils\u002F         # Visualization, state management\n└── nir_*.py       # NIR export\u002Fimport utilities\n```\n\n## Roadmap\n\n- [x] **v0.1** — Core neurons (LIF, IF), surrogate gradients, rate\u002Flatency encoding\n- [x] **v0.2** — Extended neurons (Izhikevich, ALIF, Synaptic, Alpha), EEG encoder, delta encoding\n- [x] **v0.3** — NIR interoperability (export\u002Fimport)\n- [x] **v0.4** — Recurrent neurons, conv\u002Fpooling layers, neuromorphic datasets, TAC operators\n- [x] **v0.5** — Direct\u002Frepeat encoding, activity regularization, SpikeDropout, visualization, SHD dataset\n- [x] **v0.6** — CI\u002FCD, API documentation site, complete examples\n- [x] **v0.7** — LSM, MSLeaky neuron, chunked BPTT, `mx.compile`, frequency-band & threshold-crossing encoding\n- [ ] **v1.0** — Full documentation, comprehensive benchmarks, JOSS paper\n\n## Publications\n\n- **mlx-snn v0.1**: [Spiking Neural Networks on Apple Silicon via MLX](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529) (arXiv, 2026)\n- **mlx-snn v0.4**: Spiking Neural Network Training on Apple Silicon: Cross-Framework Benchmarking (in preparation)\n\n## Citation\n\nIf you use mlx-snn in your research, please cite:\n\n```bibtex\n@misc{qin2026mlxsnn,\n  title         = {mlx-snn: Spiking Neural Networks on Apple Silicon via {MLX}},\n  author        = {Jiahao Qin},\n  year          = {2026},\n  eprint        = {2603.03529},\n  archivePrefix = {arXiv},\n  primaryClass  = {cs.LG},\n  url           = {https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529}\n}\n```\n\n## Contributing\n\nContributions are welcome! Please open an issue or pull request on [GitHub](https:\u002F\u002Fgithub.com\u002FD-ST-Sword\u002Fmlx-snn).\n\n## License\n\nGPL-3.0\n","# mlx-snn\n\n**基于 Apple [MLX](https:\u002F\u002Fgithub.com\u002Fml-explore\u002Fmlx) 构建的通用脉冲神经网络库。**\n\nmlx-snn 旨在提供一个高效、适合研究的 SNN 框架，充分利用 MLX 的统一内存架构和惰性求值机制。无论您是在探索神经元动力学、使用代理梯度训练分类器，还是通过 [NIR](https:\u002F\u002Fgithub.com\u002Fneuromorphs\u002FNIR) 进行模型交换，mlx-snn 都提供了一个简洁、符合 Python 风格的 API，能够自然地融入 MLX 生态系统。\n\n[![CI](https:\u002F\u002Fgithub.com\u002FD-ST-Sword\u002Fmlx-snn\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FD-ST-Sword\u002Fmlx-snn\u002Factions\u002Fworkflows\u002Fci.yml)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fmlx-snn.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fmlx-snn\u002F)\n[![Python 3.9+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.9+-blue.svg)](https:\u002F\u002Fpython.org)\n[![License: GPL-3.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-GPL--3.0-blue.svg)](LICENSE)\n[![Docs](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocs-GitHub%20Pages-blue)](https:\u002F\u002Fd-st-sword.github.io\u002Fmlx-snn\u002F)\n[![arXiv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FarXiv-2603.03529-b31b1b.svg)](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529)\n\n> **9 种神经元模型** · **6 种代理梯度** · **8 种脉冲编码** · **5 个神经形态数据集** · **LSM 储层** · **NIR 互操作性** · **403 个测试用例**\n\n## 亮点\n\n\u003Ctable>\n\u003Ctr>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n**统一内存 SNN**\n\nSNN 在每个时间步都会存储每个神经元的状态——这在独立 GPU 架构上会成为内存瓶颈。而 Apple Silicon 的统一内存消除了 CPU↔GPU 之间的数据传输，使得我们可以构建更长的时间窗口和更大的储层，而不受显存限制。\n\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n**能效提升 17–25 倍**\n\nM3 Max 在功耗仅为 Tesla V100 七分之一的情况下，训练 SNN 的速度比后者快 2.6–3.7 倍。递归脉冲动力学主要受限于延迟而非计算能力，因此 Apple Silicon 的高带宽统一架构相比数据中心的并行计算更具优势。\n\n\u003C\u002Ftd>\n\u003Ctd width=\"33%\" valign=\"top\">\n\n**多尺度时间建模**\n\n`MSLeaky` 为并行的脉冲分支分配频率匹配的衰减率，从而在一个网络中同时捕捉 delta 到 gamma 频段的动力学特性。结合状态分离的分块 BPTT 方法，可以处理长时间的生物信号序列（如 EEG、fMRI），而不会导致内存爆炸式增长。\n\n\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\n## 安装\n\n```bash\npip install mlx-snn\n```\n\n需要 Python 3.9 或更高版本以及 Apple Silicon 处理器（M1\u002FM2\u002FM3\u002FM4）。\n\n## 快速入门\n\n```python\nimport mlx.core as mx\nimport mlx.nn as nn\nimport mlxsnn\n\n# 构建一个脉冲网络\nfc = nn.Linear(784, 10)\nlif = mlxsnn.Leaky(beta=0.95, threshold=1.0)\n\n# 将输入编码为脉冲序列并随时间运行\nspikes_in = mlxsnn.rate_encode(mx.random.uniform(shape=(8, 784)), num_steps=25)\nstate = lif.init_state(batch_size=8, features=10)\n\nfor t in range(25):\n    spk, state = lif(fc(spikes_in[t]), state)\n\nprint(\"输出膜电位:\", state[\"mem\"].shape)  # (8, 10)\n```\n\n## 功能特性\n\n### 神经元模型\n\n所有神经元都支持 `learn_threshold` 和可配置的复位机制（`subtract` \u002F `zero` \u002F `none`）。具有衰减常数的神经元支持 `learn_beta`；递归神经元则支持 `learn_V`。状态始终以显式字典形式表示，与 MLX 的函数式变换和 `mx.compile` 兼容。\n\n| 模型 | 描述 | 状态变量 |\n|-------|-------------|-----------------|\n| **Leaky (LIF)** | 可配置衰减的漏积分发放神经元 | `mem` |\n| **IF** | 不漏的积分发放神经元（理想积分器） | `mem` |\n| **Izhikevich** | 二维动力学，支持 RS\u002FIB\u002FCH\u002FFS 预设 | `v`, `u` |\n| **ALIF** | 自适应 LIF，动态阈值 | `mem`, `adapt` |\n| **Synaptic** | 基于电导的双状态 LIF | `syn`, `mem` |\n| **Alpha** | 双指数突触模型 | `syn_exc`, `syn_inh`, `mem` |\n| **RLeaky** | 可学习反馈的递归 LIF | `mem`, `spk` |\n| **RSynaptic** | 可学习反馈的递归 Synaptic | `syn`, `mem`, `spk` |\n| **MSLeaky** | 多尺度 LIF，每条分支有频率匹配的 `beta` | 每分支 `mem` |\n\n### 代理梯度\n\n所有神经元都支持通过 6 种代理梯度函数进行可微训练：\n\n| 函数 | 代理梯度 | 属性 |\n|----------|--------------------|------------|\n| **Arctan**（默认） | `α \u002F (π(1 + α²x²))` | BPTT 收敛稳定，局部性适中 |\n| **Fast Sigmoid** | `scale \u002F (2(1 + scale·\\|x\\|)²)` | 尾部较重，理性衰减 |\n| **Sigmoid** | `slope · σ(slope·x) · (1 − σ(slope·x))` | 标准逻辑函数的导数 |\n| **Triangular** | `max(0, 1 − \\|x\\|)` | 支撑紧凑，在阈值附近局部化 |\n| **Straight-Through** | `1` | 最简单，处处梯度为 1 |\n| **Custom** | 用户自定义 | 可插入任意可微近似 |\n\n### 脉冲编码\n\n8 种编码方法用于将连续信号转换成脉冲序列：\n\n| 方法 | 输入 | 使用场景 |\n|--------|-------|----------|\n| **Rate (Poisson)** | 静态值 | 图像、通用分类任务 |\n| **Latency (TTFS)** | 静态值 | 高能效的时间编码 |\n| **Delta Modulation** | 时间信号 | 变化检测、事件型编码 |\n| **Direct** | 任意张量 | 直通预计算输入 |\n| **Repeat** | 脉冲模式 | 将脉冲序列平铺到更长的时间窗口 |\n| **Frequency-Band** | EEG 信号 | 基于 FFT 的分解，划分为 delta\u002Ftheta\u002Falpha\u002Fbeta\u002Fgamma 波段 |\n| **Threshold-Crossing** | 时间信号 | 多级幅值穿越检测 |\n| **EEG Encoder** | 原始 EEG | 可配置速率\u002Fdelta\u002F阈值的生物信号编码 |\n\n### 卷积 SNN 层\n\n利用空间池化构建深层脉冲卷积网络：\n\n```python\nimport mlxsnn\n\nconv1 = mlxsnn.SpikingConv2d(in_channels=2, out_channels=64, kernel_size=3, padding=1)\npool1 = mlxsnn.SpikingMaxPool2d(kernel_size=2, stride=2)\nlif1  = mlxsnn.Leaky(beta=0.95)\ndrop  = mlxsnn.SpikeDropout(p=0.2)  # 脉冲感知（无需重新缩放）\nflat  = mlxsnn.SpikingFlatten()\n```\n\n此外还包含 6 种基于数学原理的时序算子，适用于卷积 SNN：**TAC**（时序聚合卷积）、**TAC-TP**（时序保持卷积）、**L-TAC**（可学习卷积）、**FTC**（傅里叶时序卷积）、**IMC**（信息最大化脉冲卷积）、**TCC**（时序坍缩卷积）。\n\n### 液态机\n\n基于脉冲神经元的储层计算——随机稀疏的递归连接，拓扑结构可配置：\n\n```python\nimport mlxsnn\n\nlsm = mlxsnn.LSM(\n    input_size=64, reservoir_size=500, output_size=10,\n    connectivity=0.1, spectral_radius=0.9,\n    topology=\"small_world\",  # 也可选：\"erdos_renyi\"、\"scale_free\"\n    exc_ratio=0.8,           # 戴尔定律：80% 兴奋性\n)\nstate = lsm.init_state(batch_size=32)\n\nfor t in range(num_steps):\n    output, state = lsm(spikes[t], state)\n```\n\n### 训练工具\n\n**BPTT 变体：**\n- `bptt_forward(model, spikes, state)` — 标准的随时间反向传播\n- `chunked_bptt_forward(model, spikes, state, chunk_size)` — 通过在块边界分离状态，在长序列上实现内存高效的训练\n- `detach_state(state)` — 分离状态字典中的所有张量（用于截断 BPTT）\n\n**`mx.compile` 包装器：**\n- `compiled_step(model)` — 返回一个编译后的单步可调用函数\n- `compiled_forward(model, spikes, state)` — 每个时间步都使用 `mx.compile` 的 BPTT 前向传播\n\n**损失函数（共 11 种）：**\n\n| 损失 | 方法 |\n|------|------|\n| `ce_rate_loss` | 对尖峰率（尖峰计数 \u002F T）的交叉熵 |\n| `ce_count_loss` | 对原始尖峰计数的交叉熵 |\n| `mse_membrane_loss` | 对最终膜电位的均方误差 |\n| `mse_count_loss` | 对尖峰计数与目标之间的均方误差 |\n| `membrane_loss` | 对最终膜电位的交叉熵 |\n| `rate_coding_loss` | 对尖峰计数的 log-softmax 的交叉熵 |\n| `activity_reg_loss` | 惩罚与目标发放率的偏差 |\n| `l1_spike_loss` | 对尖峰计数的 L1 稀疏惩罚 |\n| `l2_spike_loss` | 对尖峰计数的 L2 正则化 |\n\n实用函数：`spike_rate`, `spike_count`。\n\n**可学习参数：** `learn_threshold`（所有神经元）、`learn_beta`（基于 LIF 的神经元）、`learn_V`（递归神经元）。支持标准 MLX 优化器（`mlx.optimizers.Adam` 等）。\n\n### 神经形态数据集\n\n5 个内置数据集加载器，具备自动下载、缓存以及事件到帧的转换功能：\n\n| 数据集 | 模态 | 类别 | 样本数 |\n|--------|------|------|--------|\n| **DVS-Gesture** | 事件相机（手势） | 11 | 1,342 |\n| **CIFAR10-DVS** | 事件相机（自然图像） | 10 | 10,000 |\n| **N-MNIST** | 事件相机（数字） | 10 | 70,000 |\n| **SHD** | 音频（语音数字） | 20 | 10,420 |\n| **SSC** | 音频（语音命令） | 35 | 100,000+ |\n\n```python\nfrom mlxsnn.datasets import DVSGestureDataset, create_dataloader\n\ndataset = DVSGestureDataset(root=\".\u002Fdata\", train=True, num_steps=16)\nloader = create_dataloader(dataset, batch_size=16, shuffle=True)\n```\n\n### 可视化\n\n需要运行 `pip install mlx-snn[viz]`（matplotlib）。\n\n```python\nfrom mlxsnn.utils.visualization import plot_raster, plot_membrane, plot_firing_rate\n\nplot_raster(spike_tensor, title=\"第1层尖峰\")       # 尖峰随时间的点阵图\nplot_membrane(state[\"mem\"], title=\"膜电位\")          # 膜电位轨迹\nplot_firing_rate(spike_tensor, title=\"发放率\")        # 每个神经元的发放率\n```\n\n### NIR 互操作性\n\n[NIR](https:\u002F\u002Fgithub.com\u002Fneuromorphs\u002FNIR) 支持跨框架的 SNN 模型交换——可以导入\u002F导出至 snnTorch、Norse、SpikingJelly 以及神经形态硬件。\n\n```bash\npip install mlx-snn[nir]\n```\n\n```python\n# 导出\nlayers = [('fc1', nn.Linear(784, 128)), ('lif1', mlxsnn.Leaky(beta=0.9)),\n          ('fc2', nn.Linear(128, 10)),   ('lif2', mlxsnn.Leaky(beta=0.9))]\nnir.write('model.nir', mlxsnn.export_to_nir(layers))\n\n# 导入\nmodel = mlxsnn.import_from_nir(nir.read('model.nir'))\nout, state = model(x, model.init_states(batch_size=32))\n```\n\n支持：`nn.Linear` ↔ `nir.Affine`\u002F`nir.Linear`、`Leaky` ↔ `nir.LIF`、`IF` ↔ `nir.IF`、`Synaptic` ↔ `nir.CubaLIF`。\n\n## 基准测试\n\n所有实验采用相同的超参数：Adam（LR=1e-3）、泊松率编码、T=25 个时间步、批量大小 128、5 个随机种子、10 个 epoch、`surrogate_fn=\"fast_sigmoid\"`。完整脚本位于 [`benchmarks\u002F`](benchmarks\u002F) 目录下，详细内容参见我们的 [arXiv 论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529)。\n\n### 训练准确度（在噪声范围内一致）\n\n| 任务 | mlx-snn (M3 Max) | snnTorch (V100) |\n|------|-------------------|-----------------|\n| FC SNN 在 MNIST 上 | **97.0%** | 97.2% |\n| FC SNN 在 FashionMNIST 上 | **85.2%** | 85.2% |\n| LSM 储存器在 MNIST 上 | 92.4% | **93.6%** |\n\n### 训练速度\n\n| 任务 | mlx-snn (M3 Max) | snnTorch (V100) | 加速倍数 |\n|------|-------------------|-----------------|----------|\n| FC SNN（784→128→10） | **7.4 s\u002Fepoch** | 19.4 s\u002Fepoch | **2.6x** |\n| LSM 储存器（500 个神经元） | **3.2 s\u002Fepoch** | 5.7 s\u002Fepoch | **1.8x** |\n\n### 推理吞吐量（样本\u002F秒，T=25）\n\n| 模型 | 批量 | mlx-snn (M3 Max) | snnTorch (V100) | 加速倍数 |\n|-------|-------|-------------------|-----------------|----------|\n| FC-SNN | 128 | **23,875** | 6,552 | **3.6x** |\n| FC-SNN | 512 | **95,735** | 26,058 | **3.7x** |\n| Conv-SNN | 128 | **6,671** | 3,859 | **1.7x** |\n| Conv-SNN | 512 | **6,434** | 4,252 | **1.5x** |\n\n### `mx.compile` 加速效果\n\n| 模式 | 时间（25 步前向传播） |\n|------|----------------------|\n| 未编译 | 2.72 ms |\n| 编译 | **0.92 ms** |\n| **加速倍数** | **2.9x** |\n\n### 能效\n\nM3 Max（TDP ~45 W）的 SNN 训练\u002F推理速度比 V100（TDP 300 W）快 2.6–3.7 倍，估计能效提升 **17–25 倍**（每瓦性能）。\n\n详细结果及复现脚本请参阅 [`benchmarks\u002F`](benchmarks\u002F) 目录和我们的 [基准测试论文](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529)。\n\n## 从 snnTorch 迁移\n\nmlx-snn 的设计旨在让 snnTorch 用户感到熟悉：\n\n| | snnTorch (PyTorch) | mlx-snn (MLX) |\n|---|---|---|\n| 导入 | `import snntorch as snn` | `import mlxsnn` |\n| 创建 | `lif = snn.Leaky(beta=0.9)` | `lif = mlxsnn.Leaky(beta=0.9)` |\n| 前向传播 | `spk, mem = lif(x, mem)` | `spk, state = lif(x, state)` |\n| 状态 | 分离的张量（`mem`） | 显式字典（`state[\"mem\"]`） |\n| 张量 | `torch.Tensor` | `mx.array` |\n| 梯度 | `autograd` + 替代梯度 | STE 模式 + `mx.stop_gradient` |\n\n关键设计差异：**状态始终是显式的字典**——传入即得到。没有隐藏的实例变量。这与 MLX 的函数式变换（`mx.grad`、`mx.vmap`、`mx.compile`）非常契合。\n\n## 项目结构\n\n```\nmlxsnn\u002F\n├── neurons\u002F       # Leaky、IF、Izhikevich、ALIF、Synaptic、Alpha、RLeaky、RSynaptic、MSLeaky\n├── surrogate\u002F     # arctan、fast_sigmoid、sigmoid、triangular、straight_through、自定义\n├── encoding\u002F      # 率编码、延迟编码、delta 编码、直接编码、重复编码、频带编码、阈值穿越编码、EEG\n├── functional\u002F    # 无状态纯函数、11 种损失函数、指标\n├── layers\u002F        # SpikingConv2d、MaxPool2d、AvgPool2d、Flatten、SpikeDropout\n├── operators\u002F     # TAC、TAC-TP、L-TAC、FTC、IMC、TCC\n├── liquid\u002F        # LiquidReservoir、LSM、拓扑生成器\n├── datasets\u002F      # DVSGesture、CIFAR10DVS、NMNIST、SHD、SSC\n├── training\u002F      # BPTT、分块 BPTT、mx.compile 包装器\n├── utils\u002F         # 可视化、状态管理\n└── nir_*.py       # NIR 导出\u002F导入工具\n```\n\n## 路线图\n\n- [x] **v0.1** — 核心神经元（LIF、IF）、代理梯度、速率\u002F延迟编码\n- [x] **v0.2** — 扩展神经元（伊兹基维奇、ALIF、突触型、Alpha）、脑电图编码器、差分编码\n- [x] **v0.3** — NIR 互操作性（导出\u002F导入）\n- [x] **v0.4** — 循环神经元、卷积\u002F池化层、神经形态数据集、TAC 算子\n- [x] **v0.5** — 直接\u002F重复编码、活动正则化、SpikeDropout、可视化、SHD 数据集\n- [x] **v0.6** — CI\u002FCD、API 文档站点、完整示例\n- [x] **v0.7** — LSM、MSLeaky 神经元、分块 BPTT、`mx.compile`、频带及阈值穿越编码\n- [ ] **v1.0** — 完整文档、全面基准测试、JOSS 论文\n\n## 出版物\n\n- **mlx-snn v0.1**: [通过 MLX 在 Apple Silicon 上实现脉冲神经网络](https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529)（arXiv，2026 年）\n- **mlx-snn v0.4**: 在 Apple Silicon 上训练脉冲神经网络：跨框架基准测试（准备中）\n\n## 引用\n\n如果您在研究中使用 mlx-snn，请引用以下内容：\n\n```bibtex\n@misc{qin2026mlxsnn,\n  title         = {mlx-snn: 通过 {MLX} 在 Apple Silicon 上实现脉冲神经网络},\n  author        = {Jiahao Qin},\n  year          = {2026},\n  eprint        = {2603.03529},\n  archivePrefix = {arXiv},\n  primaryClass  = {cs.LG},\n  url           = {https:\u002F\u002Farxiv.org\u002Fabs\u002F2603.03529}\n}\n```\n\n## 贡献\n\n欢迎贡献！请在 [GitHub](https:\u002F\u002Fgithub.com\u002FD-ST-Sword\u002Fmlx-snn) 上提交问题或拉取请求。\n\n## 许可证\n\nGPL-3.0","# mlx-snn 快速上手指南\n\n**mlx-snn** 是一个基于 Apple MLX 框架构建的通用脉冲神经网络（SNN）库。它利用 Apple Silicon 的统一内存架构和惰性求值特性，为研究神经元动力学、使用代理梯度训练分类器以及模型交换提供了高效且符合 Python 习惯的 API。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**：macOS\n*   **硬件要求**：必须使用 **Apple Silicon** 芯片设备（M1, M2, M3, M4 系列）。该库不支持 Intel Mac 或非 Apple 设备。\n*   **Python 版本**：Python 3.9 或更高版本。\n*   **前置依赖**：无需手动安装 MLX，`mlx-snn` 会自动处理相关依赖。\n\n> **提示**：国内开发者若遇到 PyPI 下载缓慢的问题，建议使用国内镜像源进行安装。\n\n## 安装步骤\n\n使用 `pip` 进行安装。推荐使用国内镜像源以加速下载：\n\n```bash\npip install mlx-snn -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n如果需要安装可视化功能（依赖 matplotlib）或 NIR 互操作性支持，可使用以下命令：\n\n```bash\n# 安装可视化组件\npip install \"mlx-snn[viz]\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n\n# 安装 NIR 互操作组件\npip install \"mlx-snn[nir]\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n以下是一个最简示例，展示如何构建一个简单的脉冲神经网络，将输入编码为脉冲序列，并随时间步运行网络。\n\n### 1. 构建网络与前向传播\n\n```python\nimport mlx.core as mx\nimport mlx.nn as nn\nimport mlxsnn\n\n# 1. 定义网络层：全连接层 + 漏积分发放 (LIF) 神经元\nfc = nn.Linear(784, 10)\nlif = mlxsnn.Leaky(beta=0.95, threshold=1.0)\n\n# 2. 数据编码：将随机输入转换为脉冲序列 (Rate Encoding)\n# 形状：(Batch_Size, Features) -> 编码为时间步序列\nspikes_in = mlxsnn.rate_encode(mx.random.uniform(shape=(8, 784)), num_steps=25)\n\n# 3. 初始化神经元状态\nstate = lif.init_state(batch_size=8, features=10)\n\n# 4. 随时间步运行网络 (Time-Loop)\nfor t in range(25):\n    # 输入当前时间步的脉冲，获取输出脉冲和更新后的状态\n    spk, state = lif(fc(spikes_in[t]), state)\n\n# 查看最终膜电位状态形状\nprint(\"Output membrane:\", state[\"mem\"].shape)  # 输出：(8, 10)\n```\n\n### 2. 核心特性速览\n\n*   **神经元模型**：支持 LIF, IF, Izhikevich, ALIF 等 9 种模型，均支持 `learn_threshold` 和可配置的复位机制。\n*   **代理梯度**：内置 Arctan, Fast Sigmoid 等 6 种代理梯度函数，支持端到端微分训练。\n*   **脉冲编码**：提供 Rate, Latency, Delta Modulation 等 8 种编码方式，可直接处理静态图像或时序信号（如 EEG）。\n*   **训练工具**：支持标准 BPTT 及显存优化的 `chunked_bptt`，兼容 `mx.compile` 进行加速。\n*   **数据集**：内置 DVS-Gesture, CIFAR10-DVS, SHD 等 5 种神经形态数据集加载器。\n\n### 3. 使用卷积 SNN 层（可选）\n\n构建深层脉冲卷积网络同样简单：\n\n```python\nimport mlxsnn\n\nconv1 = mlxsnn.SpikingConv2d(in_channels=2, out_channels=64, kernel_size=3, padding=1)\npool1 = mlxsnn.SpikingMaxPool2d(kernel_size=2, stride=2)\nlif1  = mlxsnn.Leaky(beta=0.95)\ndrop  = mlxsnn.SpikeDropout(p=0.2)  # 脉冲感知的 Dropout\n```\n\n现在您已经完成了环境的搭建并运行了第一个脉冲神经网络。更多高级用法（如液体状态机 LSM、NIR 模型导出等）请参考官方文档。","某神经形态计算研究团队正在利用 MacBook Pro 开发一套基于脑电波（EEG）的实时癫痫发作预测系统，需要处理长时序生物信号并模拟复杂的神经元动力学。\n\n### 没有 mlx-snn 时\n- **显存瓶颈严重**：传统离散 GPU 架构在处理长序列脉冲神经网络（SNN）时，因每个时间步需存储神经元状态，导致显存迅速耗尽，无法加载大规模储备池模型。\n- **能效比低下**：在数据中心 GPU 上训练递归脉冲动力学模型受限于延迟而非算力，功耗极高且训练速度慢，难以在本地设备快速迭代。\n- **多尺度建模困难**：难以在一个网络中同时捕捉从 Delta 到 Gamma 不同频段的脑波动态，缺乏原生支持多时间尺度衰减率的神经元模型。\n- **数据搬运开销大**：CPU 与 GPU 之间频繁的状态数据传输造成显著延迟，阻碍了长时序生物信号流的实时处理。\n\n### 使用 mlx-snn 后\n- **突破显存限制**：借助 Apple Silicon 的统一内存架构，mlx-snn 消除了 CPU 与 GPU 间的数据拷贝，轻松支撑更长的时间窗口和更大的储备池网络。\n- **能效显著提升**：在 M3 Max 芯片上，训练速度比 Tesla V100 快 2.6 倍以上，而功耗仅为七分之一，完美适配递归脉冲动力学的延迟敏感特性。\n- **原生多尺度支持**：利用 `MSLeaky` 神经元模型，为并行分支分配频率匹配的衰减率，单网络即可精准捕捉全频段脑波动态。\n- **流畅长序列处理**：结合分块 BPTT 算法与状态分离技术，无需担心内存爆炸，可高效处理长达数分钟的 EEG 原始信号序列。\n\nmlx-snn 通过统一内存优势与原生多尺度建模能力，将苹果硬件转化为高效的神经形态计算平台，让长时序生物信号分析在本地设备上变得既快速又节能。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FD-ST-Sword_mlx-snn_637d1dc8.png","D-ST-Sword","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FD-ST-Sword_72b4cdc1.png",null,"UK","qjh2020@liverpool.ac.uk","https:\u002F\u002Fgithub.com\u002FD-ST-Sword",[79],{"name":80,"color":81,"percentage":82},"Python","#3572A5",100,526,1,"2026-04-08T18:50:30","GPL-3.0","macOS","不需要独立 GPU，必须使用配备 Apple Silicon (M1\u002FM2\u002FM3\u002FM4) 芯片的 Mac 设备，利用其统一内存架构","未说明（依赖 Apple Silicon 的统一内存，建议根据模型规模配置足够内存）",{"notes":91,"python":92,"dependencies":93},"该工具专为 Apple Silicon 架构设计，不支持 Linux 或 Windows 系统，也不支持 NVIDIA GPU 或 CUDA。核心优势在于利用 Apple 芯片的统一内存解决脉冲神经网络的时间步内存瓶颈。安装可选组件可使用 pip install mlx-snn[viz] 或 pip install mlx-snn[nir]。","3.9+",[94,95,96],"mlx","matplotlib (可选，用于可视化)","nir (可选，用于模型互操作)",[14,98],"其他","2026-03-27T02:49:30.150509","2026-04-13T04:24:36.901759",[],[103,108,113,118,123,128,133],{"id":104,"version":105,"summary_zh":106,"released_at":107},231041,"v0.7.0","### 新增\n- **液态机器** — `LiquidReservoir`，带有可训练读出层的 LSM\n- **储备池拓扑结构** — Erdos-Renyi 随机网络、Watts-Strogatz 小世界网络、Barabasi-Albert 无标度网络\n- **戴尔定律** 的实现 — 兴奋性\u002F抑制性神经元比例可配置的平衡\n- **`mx.compile` 优化** — `compiled_step`、`compiled_forward`，用于每时间步编译\n- **MSLeaky 神经元** — 多尺度 LIF 模型，每个分支具有可学习的 `beta` 参数，实现频率引导的脉冲发放\n- **SSC 数据集** — 脉冲语音命令数据集加载器（HDF5 格式）\n- **截断 BPTT** — `chunked_bptt_forward`，用于长序列的内存高效训练；`detach_state` 工具函数\n- **频带编码** — `frequency_band_encode`，通过频带分解（delta\u002Ftheta\u002Falpha\u002Fbeta\u002Fgamma）将 EEG 转换为脉冲序列\n- **阈值穿越编码** — `threshold_crossing_encode`，用于多级幅度穿越检测\n- **基准测试套件** — 前向传播、训练循环及内存基准测试\n\n### 变更\n- **默认替代梯度** 由 `fast_sigmoid` 更改为 `arctan`（对深度网络具有更好的梯度特性）\n- 更新了 README，加入了 v0.7 版本的基准测试结果和项目结构说明","2026-03-18T08:47:29",{"id":109,"version":110,"summary_zh":111,"released_at":112},231042,"v0.6.0","### 新增\n- **API 文档站点** — 使用 Material 主题的 MkDocs，通过 mkdocstrings 从文档字符串自动生成\n- **GitHub Pages 部署** — 推送至 main 分支时自动部署文档\n- **完整示例** — 6 个可运行的示例（快速入门、卷积 SNN、TAC 基准测试、可视化、SHD 音频、自定义神经元）\n\n### 变更\n- 优化了项目元数据 — 包括分类器、关键词、项目 URL 以及 ruff 配置\n- 按照 Keep a Changelog 格式添加了 CHANGELOG.md","2026-03-18T08:47:14",{"id":114,"version":115,"summary_zh":116,"released_at":117},231043,"v0.5.0","### 新增\n- **直接编码**（`direct_encode`）—— 在所有时间步重复静态数据\n- **重复编码**（`repeat_encode`）—— 将尖峰模式在时间维度上平铺 N 次\n- **活动正则化损失**—— `activity_reg_loss`、`l1_spike_loss`、`l2_spike_loss`\n- **SpikeDropout** 层—— 基于尖峰的 dropout，不进行重缩放（二值语义）\n- **可视化工具**—— `plot_raster`、`plot_membrane`、`plot_firing_rate`\n- **SHD 数据集加载器**—— Spiking Heidelberg Digits，支持 HDF5 格式\n- **CI\u002FCD 流水线**—— 使用 GitHub Actions 进行代码风格检查（ruff）和测试（pytest，Python 3.9\u002F3.11\u002F3.12）\n- **PyPI 可信发布者**—— 基于 Git 标签的自动化发布工作流\n\n### 变更\n- 将 `numpy` 添加到核心依赖中（数据集加载器需要）","2026-03-18T08:47:11",{"id":119,"version":120,"summary_zh":121,"released_at":122},231044,"v0.4.0","### 新增\n- **循环神经元** — `RLeaky`（循环LIF）、`RSynaptic`（循环突触）\n- **扩展的替代梯度** — 在现有的 `fast_sigmoid`、`arctan`、`straight_through` 之外，新增了 `sigmoid` 和 `triangular`\n- **可学习阈值** — 所有神经元均支持 `learn_threshold=True`\n- **卷积SNN算子** — TAC、TAC-TP、L-TAC、FourierTemporalConv、InfoMaxSpikeConv、TemporalCollapseConv\n- **复合层** — `SpikingConv2d`、`SpikingMaxPool2d`、`SpikingAvgPool2d`、`SpikingFlatten`\n- **神经形态数据集** — `DVSGestureDataset`、`CIFAR10DVSDataset`、`NMNISTDataset`\n- **事件数据工具** — `events_to_frames`、`EventDataloader`、`create_dataloader`\n- 额外的损失函数：`ce_rate_loss`、`ce_count_loss`、`mse_membrane_loss`、`mse_count_loss`\n- `spike_rate` 和 `spike_count` 工具函数\n\n### 变更\n- 许可证由 MIT 变更为 GPL-3.0 或后续版本","2026-03-18T08:47:04",{"id":124,"version":125,"summary_zh":126,"released_at":127},231045,"v0.3.0","### 新增\n- **NIR 互操作性** — `export_to_nir`、`import_from_nir`，用于跨平台的 SNN 模型交换\n- `NIRSequential` 封装器，用于导入 NIR 图","2026-03-18T08:46:50",{"id":129,"version":130,"summary_zh":131,"released_at":132},231046,"v0.2.0","### 新增\n- **伊日凯维奇神经元**，带RS\u002FIB\u002FCH\u002FFS预设\n- **自适应LIF**（ALIF），具有可学习的适应机制\n- **突触神经元**——基于电导的双状态LIF模型\n- **Alpha神经元**——双指数突触模型\n- **脑电图编码器**——用于脑电信号的速率\u002Fδ波\u002F阈值穿越编码\n- **Δ编码**——针对时序信号的基于变化的尖峰编码","2026-03-18T08:46:47",{"id":134,"version":135,"summary_zh":136,"released_at":137},231047,"v0.1.0","### 新增\n- 带可学习参数 `beta` 的漏积分-发放神经元 (LIF)\n- 积分-发放神经元 (IF)\n- 替代梯度 — `fast_sigmoid`、`arctan`、`straight_through`\n- 脉冲编码 — `rate_encode`、`latency_encode`\n- 函数式 API — `lif_step`、`if_step`、`fire`、`reset_subtract`、`reset_zero`\n- 损失函数 — `rate_coding_loss`、`membrane_loss`\n- BPTT 辅助函数 — `bptt_forward`\n- MNIST 快速入门示例","2026-03-18T08:46:43"]