Spiking-Neural-Network

GitHub
1.2k 296 简单 1 次阅读 昨天Apache-2.0开发框架其他
AI 解读 由 AI 自动生成,仅供参考

Spiking-Neural-Network 是一个纯 Python 实现的脉冲神经网络(SNN)开源项目,旨在模拟生物神经元通过“脉冲”传递信息的工作机制。它主要解决了传统人工神经网络在硬件部署时能耗高、难以直接在芯片上进行在线学习的问题,提供了一套既适合软件仿真又具备硬件高效特性的解决方案。

该项目非常适合对神经形态计算感兴趣的研究人员、希望探索低功耗 AI 算法的开发者,以及需要验证片上学习策略的工程师使用。其核心技术亮点在于采用了“脉冲时间依赖可塑性”(STDP)算法进行训练,这是一种模仿生物大脑的学习规则,无需大量标注数据即可调整网络权重。此外,项目内置的分类模拟器运用了“胜者通吃”策略,能有效抑制无关神经元活动,从而在二分类及多分类任务(如 MNIST 手写数字识别)中实现精准的模式识别。通过模块化设计,用户可以直接调用其中的神经元、突触及编码器等组件,灵活构建用于边缘计算或嵌入式设备的智能模型。

使用场景

某嵌入式开发团队正致力于在低功耗微控制器上部署实时手势识别系统,以用于智能穿戴设备。

没有 Spiking-Neural-Network 时

  • 能耗过高:传统人工神经网络需要持续的浮点运算,导致电池供电的设备续航时间极短,无法满足全天候运行需求。
  • 硬件适配难:现有的深度学习框架依赖重型后端,难以直接映射到资源受限的芯片上,无法实现真正的“片上学习”。
  • 时序信息丢失:常规模型将动态手势视频帧视为静态图像处理,忽略了动作发生的时间先后顺序,降低了识别准确率。
  • 开发门槛高:团队若要复现脉冲神经网络(SNN)的 STDP 学习规则,需从零编写底层神经元和突触逻辑,研发周期漫长。

使用 Spiking-Neural-Network 后

  • 极致能效:利用 Spiking-Neural-Network 的事件驱动特性,神经元仅在接收到脉冲时才计算,大幅降低功耗,显著延长设备续航。
  • 原生硬件友好:该工具提供的纯 Python 实现包含了可硬件化的学习与预测规则,便于后续直接迁移至 FPGA 或专用神经形态芯片。
  • 精准时序建模:通过内置的脉冲序列编码(Spike train)机制,自然捕捉手势动作的时间动态特征,提升了对复杂动作的区分度。
  • 快速原型验证:借助其现成的神经元、突触及 STDP 训练模块,团队无需重复造轮子,即可快速模拟并验证“赢家通吃”分类策略的效果。

Spiking-Neural-Network 让开发者能以低代码成本构建出兼具高能效与时序感知能力的神经形态应用,打通了从算法仿真到端侧部署的关键路径。

运行环境要求

GPU

未说明

内存

未说明

依赖
notes该项目是一个用于硬件高效脉冲神经网络(SNN)的 Python 实现,旨在支持片上学习和预测。核心算法包括 Spike-Time Dependent Plasticity (STDP) 和侧向抑制(Winner-Takes-All)。README 中未明确列出具体的操作系统、Python 版本或第三方依赖库要求,仅提到项目包含神经元、突触、感受野和脉冲序列编码等模块。作者曾将简化版架构部署在 FPGA 上以加速训练,但当前代码库主要作为算法仿真器使用。
python未说明
Spiking-Neural-Network hero image

快速开始

脉冲神经网络

这是硬件高效的脉冲神经网络的 Python 实现。它包含了经过修改的学习和预测规则,这些规则可以在硬件上实现,并且具有较高的能源效率。目标是开发一个既可用于片上学习,又可用于预测的网络。

将使用时间依赖性突触可塑性(STDP)算法来训练该网络。

网络元素

用于分类的 SNN 模拟器

假设我们已经使用 STDP 算法学习到了网络的最佳权重(将在后续实现),那么这个模拟器会利用这些权重将输入模式分类到不同的类别中。该模拟器采用“胜者全得”策略来抑制未发放脉冲的神经元,从而产生可区分的结果。在对模式进行分类时,所涉及的步骤如下:

  • 对于每个输入神经元,在其感受野(5×5 窗口)内计算膜电位。
  • 根据膜电位与脉冲频率成正比的关系,为每个输入神经元生成脉冲序列
  • 对于每幅图像,在每个时间步长,根据输入脉冲及其关联的权重更新神经元的电位。
  • 首先发放脉冲的输出神经元会对其余输出神经元产生侧向抑制。
  • 模拟器检查是否有输出脉冲。

结果

该模拟器已针对二分类问题进行了测试。它可以扩展到任意数量的类别。两类图像如下所示:

每类图像分别向网络呈现了 1000 个时间单位。记录了神经元的活动情况。以下是输出神经元的电位随时间单位变化的图表。

前 1000 个时间单位对应类别 1,接下来的 1000 个时间单位对应类别 2。红色线表示阈值电位。

第一个输出神经元对类别 1 有反应,第二个对类别 2 有反应,而第三个和第四个对两类均无反应。因此,通过记录输出神经元的总脉冲数,我们可以确定该模式所属的类别。

此外,为了演示多分类结果,该模拟器还对以下 6 幅图像(MNIST 数据集)进行了测试。

每幅图像代表一个类别,并为每个类别分配了一个神经元。另外两个神经元被赋予随机权重。以下是每个神经元对所有呈现类别的响应。X 轴表示类别编号,Y 轴表示每次模拟中的脉冲数量。红色条表示该神经元脉冲最多的类别。

训练 SNN

在上一节中,我们假设网络已经训练完毕,即通过 STDP 学习到了权重,可以用来对模式进行分类。在这里,我们将探讨 STDP 的工作原理,以及在实现这一训练算法时需要注意的各项事项。

时间依赖性突触可塑性

STDP 实际上是一种生物过程,大脑利用它来调整自身的神经连接(突触)。由于大脑无与伦比的学习效率已被人们认可数十年之久,这一规则被引入人工神经网络以训练神经网络。权重的调整基于以下两条规则:

  • 任何有助于突触后神经元发放脉冲的突触都应加强,即其权重应增加。
  • 不有助于突触后神经元发放脉冲的突触则应减弱,即其权重应减少。

下面解释一下该算法的工作方式:

考虑下图所示的情景

四个人工神经元通过突触连接到一个神经元。每个突触前神经元以各自的频率发放脉冲,并通过相应的突触将脉冲传递出去。突触后神经元接收到的脉冲强度取决于连接突触的强度。当突触后神经元因输入脉冲而使膜电位升高并超过阈值时,就会发放一个脉冲。在突触后神经元发放脉冲的时刻,我们会监测哪些突触前神经元帮助其发放了脉冲。这可以通过观察哪些突触前神经元在突触后神经元发放脉冲之前就已经发送了脉冲来实现。这样,它们就通过提高膜电位促进了突触后神经元的发放,因此相应的突触会被加强。突触权重增加的幅度与突触后脉冲和突触前脉冲之间的时间差成反比,具体关系如图所示。

SNN 的生成特性

脉冲神经网络的这一特性对于分析训练过程非常有用。如果将连接到某个输出层神经元的所有突触按适当的比例缩放,并重新排列成一幅图像,就能显示出该神经元学到了什么样的模式,以及它能够多么清晰地对该模式进行分类。例如,在用 MNIST 数据集训练网络之后,如果我们把连接到某个特定输出神经元的所有突触权重(共 784 个)按比例放大,并用这些加权后的数值构成一幅 28×28 的灰度图像,就能得到该神经元所学习到的模式。这一特性将在后续展示结果时被使用。文件包含了一个从权重重建图像的函数。

变量阈值

在无监督学习中,训练一个模式激活程度(以MNIST为例即白色像素)差异较大的网络是非常困难的。激活程度较高的模式往往会在竞争性学习中占据优势,从而掩盖其他模式(这一问题将在后续演示)。因此,引入了这种归一化方法,将所有模式的激活水平拉低到同一水平。每个模式的阈值是根据其包含的激活数量来计算的:激活数量越多,阈值也就越高。文件包含了用于计算每张图像阈值的函数。

侧向抑制

在神经生物学中,侧向抑制是指被激活的神经元能够降低其邻近神经元活动的能力。侧向抑制会阻止动作电位从兴奋的神经元向其侧向邻近神经元传播,从而产生刺激上的对比效应,增强感官感知能力。这一特性也被称为“胜者通吃”(WTA)。最先被激活的神经元会抑制(降低膜电位)同一层中的其他神经元。

3类数据集的训练

以下是使用MNIST数据集中的3个类别(0-2),并配备5个输出神经元的SNN训练结果。我们将利用SNN的生成特性,通过连接到每个输出神经元的已训练权重重构图像,以观察网络对各个模式的学习效果。此外,我们还将查看每个输出神经元的膜电位随时间的变化曲线,以了解训练过程如何进行,并使该神经元仅对特定模式敏感。

神经元1

神经元2

神经元3

神经元4

从这些结果中可以清楚地看到:神经元1学会了模式“1”,神经元2学会了“0”,神经元3表现为噪声,而神经元4则学会了模式“2”。以神经元1为例,在训练初期,由于权重随机分配,它会对所有模式都有反应。随着训练的进行,它逐渐只对模式“1”产生响应,而对于其他模式则处于抑制状态。观察神经元3时,我们可以得出结论,它对所有模式都有反应,因此可被视为噪声。因此,建议输出神经元的数量比类别数多出约20%。

此外,“2”和“0”之间存在一定的重叠现象,这是竞争性学习中常见的问题。通过适当调整参数,可以有效消除这一问题。

不当的训练

如果不使用变量阈值进行归一化,就会出现某些模式掩盖其他模式的情况。以下是一个示例:

在此示例中,两种模式使用了相同的阈值电压,导致它们相互重叠。这种情况可以通过选择每张图像激活数量大致相同的数据集,或者对激活数量进行归一化来避免。

参数设置

从头构建脉冲神经网络并非易事。有许多参数需要调整和注意,而这些参数的组合更是复杂。其中对网络动态起关键作用的主要参数包括:

  • 学习率
  • 阈值电位
  • 权重初始化
  • 每个样本的脉冲数量
  • 权重范围

我在此处的“参数分析”部分,展示了部分参数如何影响网络,以及应如何处理这些参数。

贡献

在本项目中,我得到了印度理工学院古瓦哈蒂分校同事Arpan Vyas的帮助。他进一步设计了一种针对简化SNN的硬件加速器架构,并将其部署在FPGA上,从而大幅缩短了训练时间。他的GitHub主页请见这里

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|1周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

156.8k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.3k|★★☆☆☆|5天前
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|5天前
插件Agent图像

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|1周前
插件开发框架