分布式仿真SNN的思考

2023-12-01 16:44
文章标签 思考 仿真 分布式 snn

本文主要是介绍分布式仿真SNN的思考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我之前实现的仿真完全基于如下图设计的

将整体的网络构成见一个邻接表,突触和神经元作为类分别存储,所以当一个神经元发射脉冲时,很容易的将脉冲传输到突触指向的后神经元。但是在分布式方丈中,由多个进程仿真整体的网络,如图所示

 

那么整体的邻接表就变成了

 

明显,对于神经元来说,很容易将其进行分区,但是对于突触来说就没那么简单了,有些文献建议将突触和后神经元存储在一起,邻接表就变成上图的格式。那当一个进程的神经元发生脉冲时,那么传图过程就变为了

 可以看到,问题的难点有两个

  1. 如何判断一个脉冲的后神经在是本进程还是其他进程
  2. 在我么的设计中,突触是和后神经元存储在一起的,那么当突触没有前身神经元的索引,如何建立脉冲、突触、和后神经元的关系呢。

对于第一个问题,我想出一种方案,能够解决一个神经元的后神经元是否在本地。如图所示

 观察每一个图的CSR的存储,你就会发现,对于一个名为gid的神经元,如果他的xadj[gid]<xadj[gid+1],那么该神经元的后神经元就一定存在本地。难点就是如何判断该神经元的后神经元是否存在于别的进程。对于本地脉冲判断还是很容易的,但是远程脉冲似乎出现问题。讨论一下一个神经的后神经元的情况:

那么我们就针对这一种无法判断的情况具体分析。

我们知道xadj[gid+1]-xadj[gid]=该神经元的后神经元的个数,又因为(global_xadj[gid+1]-global_xadj[gid])>=(xadj[gid+1]-xadj[gid]),那么仅仅需要考虑,两种情况:

  1. (global_xadj[gid+1]-global_xadj[gid]) =(xadj[gid+1]-xadj[gid]),这和第二种可能相同。
  2. (global_xadj[gid+1]-global_xadj[gid]) >(xadj[gid+1]-xadj[gid]), 在这种情况下就一定满足即存在本地脉冲,也存在远程脉冲。

于是对于第一种难点我们就解决了,但是第二种,突触的实例化存储,以及远程脉冲如何查找突触,我暂时还没有好的思路。先这样吧,回来我在翻看一些资料。

这篇关于分布式仿真SNN的思考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/441905

相关文章

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求

Golang使用etcd构建分布式锁的示例分享

《Golang使用etcd构建分布式锁的示例分享》在本教程中,我们将学习如何使用Go和etcd构建分布式锁系统,分布式锁系统对于管理对分布式系统中共享资源的并发访问至关重要,它有助于维护一致性,防止竞... 目录引言环境准备新建Go项目实现加锁和解锁功能测试分布式锁重构实现失败重试总结引言我们将使用Go作

Redis分布式锁使用及说明

《Redis分布式锁使用及说明》本文总结了Redis和Zookeeper在高可用性和高一致性场景下的应用,并详细介绍了Redis的分布式锁实现方式,包括使用Lua脚本和续期机制,最后,提到了RedLo... 目录Redis分布式锁加锁方式怎么会解错锁?举个小案例吧解锁方式续期总结Redis分布式锁如果追求

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

集中式版本控制与分布式版本控制——Git 学习笔记01

什么是版本控制 如果你用 Microsoft Word 写过东西,那你八成会有这样的经历: 想删除一段文字,又怕将来这段文字有用,怎么办呢?有一个办法,先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存着……最后你的 Word 文档变成了这样: 过了几天,你想找回被删除的文字,但是已经记不清保存在哪个文件了,只能挨个去找。真麻烦,眼睛都花了。看

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

laravel框架实现redis分布式集群原理

在app/config/database.php中配置如下: 'redis' => array('cluster' => true,'default' => array('host' => '172.21.107.247','port' => 6379,),'redis1' => array('host' => '172.21.107.248','port' => 6379,),) 其中cl