1、数据编码
首先介绍一下该神经元模型论文里面提到的编码方式:群体编码(population encoding)
编码步骤:
1、计算发放强度(就是指发放的欲望有多大)

其中第h个接受域的μh和是中心和标准偏差,计算公式如下所示:

然后根据所计算得到的发放强度去计算发放时间:

def spiking_genersate(train_data):mu=par.mu       #中心sigma=par.sigma #偏离RF=par.RF       #接收域神经元总数  6feature=par.feature #特征,就是指输入维度的意思,所以这里他是4维的spike_time=np.zeros((int(train_data.shape[0]),par.feature*par.RF)) #训练样本数*24for num in range(train_data.shape[0]):fire_value=np.zeros(RF)     #是否发放?fire_strength=np.zeros((feature,RF))        #发放强度,不同维度对应for t in range(par.feature):for i in range(par.RF):fire_value[i]=np.exp(-np.power((train_data[num,t]-mu[i]),2)/(2*np.power(sigma,2)))      #这是计算发放强度 (1,6)fire_strength[t,:]=fire_value #(4,6)spike_time[num,:]=(np.round(par.T_pre*(1-fire_strength))+1).reshape((1,par.feature*par.RF))     #np.round()一般情况下是四舍五入取整,0的时候直接向下取整,ceil()和floor()函数是向下取整pyplot.plot(spike_time.T,'.k')return spike_time

源代码里面的输入:其中包括四个特征值和一个分类结果。

得到的发放强度(4,6)的矩阵


2、训练
编码完之后开始初始化权重矩阵和阈值矩阵。
1、创建权重矩阵和阈值矩阵大小,权重矩阵(24,301,3)中间的为时间。阈值矩阵大小为(1,3)
2、接下来是根据第一个第一个样本的数据给权重矩阵赋初值。



def weights_thershold_reload(train_data,train_label,weights,theta,fire_time):       #初始化阈值Output_size=0for i in range(train_data.shape[0]):temp = int(train_label[i]-1)if (theta[int(train_label[i]-1)]==0):   #用模式1的训练数据来初始化权重和θOutput_size = Output_size + 1weights[:, :, int(train_label[i]-1)] = np.multiply((gaussian_function(par.T_train, fire_time[i,:].transpose())).transpose(), do_uki((par.TID- fire_time[i,:]))[:, np.newaxis])  #timing-vary weigts,weight initialtheta[int(train_label[i]-1)] = (np.matmul(do_uki((par.TID- fire_time[i,:]))[np.newaxis, :], LIF_e(par.TID - fire_time[i,:].transpose())[:, np.newaxis])).squeeze()     #theta initialif (Output_size == par.class_num):   breakreturn weights,theta

接下来就是训练了,这里的神经元是LIF,算法是STDP的监督版本。
既然是监督学习,那就肯定有根据结果去改变权重的部分。接下来就介绍它是怎么改变权重的。


其中包括了计算突触后神经元发放时间,如下图所示。

接下来是利用STDP监督学习算法计算更新,先上理论:
1、计算归一化STDP
这是原始的STDP

计算完所有发放点的STDP后,对STDP进行归一化

然后计算文中说的是理想的发放时间



接下来是误差损失函数:

有了误差损失函数就可以计算delta_w

第一个值为学习率,
时变函数为:

最后更新权重:



源码下载地址:
https://download.csdn.net/download/weixin_43872912/85172793

论文阅读-SEFRON: A New Spiking Neuron Model With Time-Varying Synaptic Efficacy Function相关推荐

  1. 《论文阅读》PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable

    <论文阅读>PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable 简介 论文试图解决什么问题 ...

  2. 论文阅读 Parallelly Adaptive Graph Convolutional Clustering Model(TNNLS2022)

    论文标题 Parallelly Adaptive Graph Convolutional Clustering Model 论文作者.链接 作者: He, Xiaxia and Wang, Boyue ...

  3. 论文阅读--Elemental spiking neuron model for reproducing diverse firing patterns and predicting precise

    摘要 在模拟由不同的神经元组成的真实的神经元电路中,我们需要一个电脉冲神经元模型,不仅能够在数量上复现生动的灵活输入的生物神经元的脉冲时间,而且在质量上代表了大量的对瞬时电流输入的发放回应.基于泄露I ...

  4. [论文阅读笔记12]An Effective Transition-based Model for Discontinuous NER

    一, 题目 <An Effective Transition-based Model for Discontinuous NER> 论文:An Effective Transition-b ...

  5. 论文阅读:A Neural Probabilistic Language Model 一种神经概率语言模型

    A Neural Probabilistic Language Model 一种神经概率语言模型 目录 A Neural Probabilistic Language Model 一种神经概率语言模型 ...

  6. 论文阅读:《A Neural Conversational Model》

    重磅推荐专栏: <Transformers自然语言处理系列教程> 手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用! https://blog.csdn.net ...

  7. 论文阅读 - DeepSBD: A Deep Neural Network Model with Attention Mechanism for Social Bot Detection - CCFA

    论文链接:http://www.abulaish.com/uploads/TIFS21.pdf 目录 摘要 1 绪论 1.1  OSN和Socialbots 1.2 背景和动机 1.3我们的贡献 2 ...

  8. [论文阅读笔记15]Recognizing Complex Entity Mentions:A Review and Future Directions

    一,题目 Recognizing Complex Entity Mentions:A Review and Future Directions 识别复杂实体mentions:回顾与未来方向 Dai X ...

  9. Zero-shot Learning零样本学习 论文阅读(五)——DeViSE:A Deep Visual-Semantic Embedding Model

    Zero-shot Learning零样本学习 论文阅读(五)--DeViSE:A Deep Visual-Semantic Embedding Model 背景 Skip-gram 算法 算法思路 ...

最新文章

  1. oracle 9i 在安装到Oracle Database Configuration assistant....的时候
  2. 刷算法的时候有没有必要自写测试用例?
  3. python爬虫正则表达式实例-Python爬虫(十一)_案例:使用正则表达式的爬虫
  4. 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
  5. 图解VC++版PE文件解析器源码分析
  6. python 列表元素操作 push()和append()的区别
  7. CNVD-C-2019-48814 漏洞
  8. wxWidgets:wxSplitterWindow类用法
  9. [Android] 输入系统(三):加载按键映射
  10. js性能优化--学习笔记
  11. 第4章 Python 数字图像处理(DIP) - 频率域滤波2 - 复数、傅里叶级数、连续单变量函数的傅里叶变换、卷积
  12. 翻译的一篇关于学习编程语言的小文章
  13. Android--控件属性汇总
  14. java forkjoin 简书_ForkJoinPool in Java
  15. button 样式_Tkinter (3)---Button
  16. CQOI 2016 不同的最小割
  17. MVC Remote属性验证
  18. helloworld代码_十年架构师教你用最简单的代码实现Java基础编程—Hello World!
  19. 如果奇迹有颜色,那么一定是暴力or模拟比较6
  20. 编写安全代码:小心使用浮点数

热门文章

  1. 生物信息学 第一课 什么是生物信息学
  2. 2022.12.29
  3. 【Android 安全】Android 应用 APK 加固总结 ( 加固原理 | 应用加固完整的实现方案 | 源码资源 )
  4. 个人日记-纪录片《蓝海防线》观后感-20200921
  5. 【微信小程序】页面配置,网络数据请求
  6. 阿里云短信服务报错:SignatureDoesNotMatch : Specified signature is not matched with our calculation.
  7. 关于在caddy环境下,使用https协议UC无法下载的解决方法。
  8. AI智能语音机器人为什么会这么火爆
  9. Charles抓包出现unknown问题
  10. 凯西·牛顿(Casey Newton)即将离任