0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

介绍几个脉冲神经网络的开源项目

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-05-31 09:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

脉冲神经网络( Spiking neural network-SNN ) 是更接近自然神经网络的人工神经网络。除了神经元和突触状态之外,SNN 还将时间概念纳入其操作模型。这个想法是, SNN 中的神经元不会在每个传播周期传输信息(就像典型的多层感知器网络一样),而是仅在膜电位发生时才传输信息 - 与膜电荷相关的神经元的内在质量 - 达到特定值,称为阈值。当膜电位达到阈值时,神经元会放电,并产生一个信号,该信号传播到其他神经元,这些神经元又会根据该信号增加或降低它们的电位。在阈值交叉时触发的神经元模型也称为脉冲神经元模型。

3588ec0c-e07f-11ec-ba43-dac502259ad0.png

SNN 原则上可以应用于与传统 ANN 相同的应用。此外,SNN 可以模拟生物有机体的中枢神经系统,例如在事先不了解环境的情况下寻找食物的昆虫。由于它们的相对真实性,它们可用于研究生物神经回路的运作。从关于生物神经元电路的拓扑结构及其功能的假设开始,可以将该电路的记录与相应 SNN 的输出进行比较,从而评估该假设的合理性。然而,SNN 缺乏有效的训练机制,这可能会抑制某些应用,包括计算机视觉任务。

35b93b8c-e07f-11ec-ba43-dac502259ad0.png

基于 FTJ 的人工突触

下面介绍几个SNN的开源项目。

关于CNN vs. RNN vs. ANN区别,请看下文:

35ead3ea-e07f-11ec-ba43-dac502259ad0.png

https://www.analyticsvidhya.com/blog/2020/02/cnn-vs-rnn-vs-mlp-analyzing-3-types-of-neural-networks-in-deep-learning/

https://zhuanlan.zhihu.com/p/107993566

ODIN Spiking Neural Network (SNN) Processor

https://github.com/ChFrenkel/ODIN

363a5aa0-e07f-11ec-ba43-dac502259ad0.png

项目介绍

ODIN 是一种在线学习数字脉冲神经处理器,在 2019 年发表在IEEE Transactions on Biomedical Circuits and Systems期刊上,在鲁汶天主教大学 ( UCLouvain ) 采用 28 纳米 FDSOI CMOS 设计和原型制作。ODIN 基于单个 256 神经元 64k 突触横杆神经突触核心,具有以下关键特性:

基于脉冲依赖的突触可塑性 (SDSP) 在线学习,

神经元可以再现 20 种 Izhikevich 行为。

36892b08-e07f-11ec-ba43-dac502259ad0.png

因此,ODIN 是一个用于边缘学习的多功能实验平台,同时与所有先前提出的尖峰神经网络 (SNN) 相比,记录神经元和突触密度更高。

36d9644c-e07f-11ec-ba43-dac502259ad0.png

使用源代码时,请引用相关论文:

https://arxiv.org/pdf/1804.07858.pdf

同时该项目也有详细的设计文档:

https://github.com/ChFrenkel/ODIN/tree/master/doc

HedgeHog-Fused-Spiking-Neural-Network-Emulator-Compute-Engine

https://github.com/jerry-D/HedgeHog-Fused-Spiking-Neural-Network-Emulator-Compute-Engine

用于 RISC-V 的 HedgeHog 融合脉冲神经网络仿真器/计算引擎(有FPGA验证)

374dd3e0-e07f-11ec-ba43-dac502259ad0.png

介绍

在 Xilinx Kintex Ultra Plus 中运行时钟频率约为 100MHz,它可以执行大约 312qty。每个时钟周期的浮点运算约每秒 310 亿次浮点运算。指令集中的累积和激活位可以连接8个神经元膜。如果你正在探索或试验使用 RISC-V 作为主机 CPU 的 FPGA 嵌入式 AI 应用程序的脉冲神经网络,那么 SYMPL HedgeHog 非常适合你。

这是有关 HedgeHog FSNN 模拟器/计算引擎的 .pdf 信息表:

https://github.com/jerry-D/HedgeHog-Fused-Spiking-Neural-Network-Emulator-Compute-Engine/blob/master/HedgeHog.pdf

在 Xilinx Vivado IDE 中进行仿真

Vivado需要的所有 Verilog RTL 源文件都位于此存储库的“RTL”、“ASM”、“test bench”和“sim”文件夹中。顶级模块是“HedgeHog.v”。建议第一次在 Vivado 中创建项目时,选择 Xilinx Kintex Ultra+ xcku5p-ffvd-900-3-e 作为目标器件。在 Vivado 中创建项目后,需要设置“HedgeHog.v”为项目“Top”文件。

下一步是将“SpiNNe_tb.v”测试文件拉入 Vivado 作为激励。然后向下滑动到“Simulation Sources”>“sim_1”,对测试文件“SpiNNe_tb.v”执行与“HedgeHog”相同的操作,在仿真源中将其设置为“top”。

完成后,单击“运行仿真”。之后,会注意到仿真失败。这是因为仿真需要“spikeDemo.HEX”程序来执行 HedgeHog。为了解决这个问题,将“spikeDemo.HEX”文件粘贴到仿真工作目录中:“C:projectNameprojectName.simsim_1ehavxsimspikeDemo.HEX”,在“ASM”文件夹中可以找到汇编语言源代码和对象列表。

379f6598-e07f-11ec-ba43-dac502259ad0.png

接下来,演示仿真,它只是将一系列脉冲推入 HedgeHog,需要“spike_trains.txt”尖峰输入文件和位于“sim”文件夹中的“weights.txt”文件,因此将这两个文件粘贴到与放置“spikeDemo .HEX”文件的工作目录相同。

完成后,再次单击“运行仿真”按钮以启动仿真即可看到仿真结果。

该项目还有很多详细的设计文档,就不一一说明了。

37de5de8-e07f-11ec-ba43-dac502259ad0.png

CSE237D-PYNQ-SNN-Accelerator

https://github.com/snagiri/CSE237D-PYNQ-SNN-Accelerator

38001136-e07f-11ec-ba43-dac502259ad0.png

383b73de-e07f-11ec-ba43-dac502259ad0.png

脉冲神经网络在 PYNQ-Z1 板上的硬件实现

S2NN-HLS

https://github.com/eejlny/S2NN-HLS

该项目提出了一种用于脉冲神经网络的高性能架构,可优化在主存储器中的配置数据的数据精度和流式传输。神经网络基于 Izhikevich 模型,并使用HLS映射到 CPU-FPGA 混合设备。实验表明,将电压和频率缩放应用于 DDR 存储器和可编程逻辑可以分别将其能量需求降低高达 77% 和 76%。

详细设计论文:

http: //dx.doi.org/10.1016 /j.micpro.2017.06.018。

Conversion from CNNs to SNNs

https://github.com/Dengyu-Wu/spkeras

38c3358a-e07f-11ec-ba43-dac502259ad0.png

SpKeras 可以通过以下步骤获取和评估基于速率的脉冲神经网络 (SNN):

使用 Tensorflow-keras 预训练卷积神经网络 (CNN)

使用 SpKeras 将 CNN 转换为 SNN

评估 SNN 并获取参数,例如权重、偏差和阈值

其他

https://github.com/oshears/SNN-FPGA-Implementation

https://github.com/jasha64/SNN-FPGA

https://github.com/Minz9/SNN-on-FPGA

https://github.com/oshears/fpga_snn_models

总结

今天介绍了主要3个SNN的项目,主要是SNN复杂度较TPU或者CNN或者DNN又高了几个台阶,所以用它来直接对FPGA进行移植难度很大,建议对第一个前三个项目进行研究,其他都不怎么推荐(想研究也没有文档)。

关于DNN或者CNN或者SNN也介绍了几十个项目了,后面可能就不会出神经网络的项目了,感觉大家也看腻了,后续会出一些视频处理或者图像处理的项目。

最后还是强推一波官方神经网络加速的项目:

官方提供的各种案例也是基本覆盖了常规应用。

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4827

    浏览量

    106768
  • 神经元
    +关注

    关注

    1

    文章

    369

    浏览量

    19107

原文标题:优秀的 Verilog/FPGA开源项目介绍(二十四)- 脉冲神经网络 (SNN)

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    NMSIS神经网络库使用介绍

    NMSIS NN 软件库是一组高效的神经网络内核,旨在最大限度地提高 Nuclei N 处理器内核上的神经网络的性能并最​​大限度地减少其内存占用。 该库分为多个功能,每个功能涵盖特定类别
    发表于 10-29 06:08

    在Ubuntu20.04系统中训练神经网络模型的一些经验

    本帖欲分享在Ubuntu20.04系统中训练神经网络模型的一些经验。我们采用jupyter notebook作为开发IDE,以TensorFlow2为训练框架,目标是训练一个手写数字识别的神经网络
    发表于 10-22 07:03

    液态神经网络(LNN):时间连续性与动态适应性的神经网络

    1.算法简介液态神经网络(LiquidNeuralNetworks,LNN)是一种新型的神经网络架构,其设计理念借鉴自生物神经系统,特别是秀丽隐杆线虫的神经结构,尽管这种微生物的
    的头像 发表于 09-28 10:03 656次阅读
    液态<b class='flag-5'>神经网络</b>(LNN):时间连续性与动态适应性的<b class='flag-5'>神经网络</b>

    神经网络的并行计算与加速技术

    随着人工智能技术的飞速发展,神经网络在众多领域展现出了巨大的潜力和广泛的应用前景。然而,神经网络模型的复杂度和规模也在不断增加,这使得传统的串行计算方式面临着巨大的挑战,如计算速度慢、训练时间长等
    的头像 发表于 09-17 13:31 878次阅读
    <b class='flag-5'>神经网络</b>的并行计算与加速技术

    神经网络压缩框架 (NNCF) 中的过滤器修剪统计数据怎么查看?

    无法观察神经网络压缩框架 (NNCF) 中的过滤器修剪统计数据
    发表于 03-06 07:10

    BP神经网络网络结构设计原则

    BP(back propagation)神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络,其网络结构设计原则主要基于以下几个方面: 一、层次结构 输入层 :接收外部输入信号,不
    的头像 发表于 02-12 16:41 1247次阅读

    BP神经网络与卷积神经网络的比较

    BP神经网络与卷积神经网络在多个方面存在显著差异,以下是对两者的比较: 一、结构特点 BP神经网络 : BP神经网络是一种多层的前馈神经网络
    的头像 发表于 02-12 15:53 1301次阅读

    BP神经网络的实现步骤详解

    BP神经网络的实现步骤主要包括以下几个阶段:网络初始化、前向传播、误差计算、反向传播和权重更新。以下是对这些步骤的详细解释: 一、网络初始化 确定
    的头像 发表于 02-12 15:50 1116次阅读

    BP神经网络的优缺点分析

    BP神经网络(Back Propagation Neural Network)作为一种常用的机器学习模型,具有显著的优点,同时也存在一些不容忽视的缺点。以下是对BP神经网络优缺点的分析: 优点
    的头像 发表于 02-12 15:36 1556次阅读

    什么是BP神经网络的反向传播算法

    BP神经网络的反向传播算法(Backpropagation Algorithm)是一种用于训练神经网络的有效方法。以下是关于BP神经网络的反向传播算法的介绍: 一、基本概念 反向传播算
    的头像 发表于 02-12 15:18 1269次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Ba
    的头像 发表于 02-12 15:15 1338次阅读

    BP神经网络的基本原理

    BP神经网络(Back Propagation Neural Network)的基本原理涉及前向传播和反向传播两个核心过程。以下是关于BP神经网络基本原理的介绍: 一、网络结构 BP
    的头像 发表于 02-12 15:13 1504次阅读

    BP神经网络在图像识别中的应用

    BP神经网络在图像识别中发挥着重要作用,其多层结构使得网络能够学习到复杂的特征表达,适用于处理非线性问题。以下是对BP神经网络在图像识别中应用的分析: 一、BP神经网络基本原理 BP
    的头像 发表于 02-12 15:12 1179次阅读

    深度学习入门:简单神经网络的构建与实现

    深度学习中,神经网络是核心模型。今天我们用 Python 和 NumPy 构建一个简单的神经网络神经网络由多个神经元组成,神经元之间通过
    的头像 发表于 01-23 13:52 838次阅读

    人工神经网络的原理和多种神经网络架构方法

    在上一篇文章中,我们介绍了传统机器学习的基础知识和多种算法。在本文中,我们会介绍人工神经网络的原理和多种神经网络架构方法,供各位老师选择。 01 人工
    的头像 发表于 01-09 10:24 2233次阅读
    人工<b class='flag-5'>神经网络</b>的原理和多种<b class='flag-5'>神经网络</b>架构方法