论文阅读-SEFRON: A New Spiking Neuron Model With Time-Varying Synaptic Efficacy Function
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相关推荐
- 《论文阅读》PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable
<论文阅读>PLATO: Pre-trained Dialogue Generation Model with Discrete Latent Variable 简介 论文试图解决什么问题 ...
- 论文阅读 Parallelly Adaptive Graph Convolutional Clustering Model(TNNLS2022)
论文标题 Parallelly Adaptive Graph Convolutional Clustering Model 论文作者.链接 作者: He, Xiaxia and Wang, Boyue ...
- 论文阅读--Elemental spiking neuron model for reproducing diverse firing patterns and predicting precise
摘要 在模拟由不同的神经元组成的真实的神经元电路中,我们需要一个电脉冲神经元模型,不仅能够在数量上复现生动的灵活输入的生物神经元的脉冲时间,而且在质量上代表了大量的对瞬时电流输入的发放回应.基于泄露I ...
- [论文阅读笔记12]An Effective Transition-based Model for Discontinuous NER
一, 题目 <An Effective Transition-based Model for Discontinuous NER> 论文:An Effective Transition-b ...
- 论文阅读:A Neural Probabilistic Language Model 一种神经概率语言模型
A Neural Probabilistic Language Model 一种神经概率语言模型 目录 A Neural Probabilistic Language Model 一种神经概率语言模型 ...
- 论文阅读:《A Neural Conversational Model》
重磅推荐专栏: <Transformers自然语言处理系列教程> 手把手带你深入实践Transformers,轻松构建属于自己的NLP智能应用! https://blog.csdn.net ...
- 论文阅读 - 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 ...
- [论文阅读笔记15]Recognizing Complex Entity Mentions:A Review and Future Directions
一,题目 Recognizing Complex Entity Mentions:A Review and Future Directions 识别复杂实体mentions:回顾与未来方向 Dai X ...
- Zero-shot Learning零样本学习 论文阅读(五)——DeViSE:A Deep Visual-Semantic Embedding Model
Zero-shot Learning零样本学习 论文阅读(五)--DeViSE:A Deep Visual-Semantic Embedding Model 背景 Skip-gram 算法 算法思路 ...
最新文章
- oracle 9i 在安装到Oracle Database Configuration assistant....的时候
- 刷算法的时候有没有必要自写测试用例?
- python爬虫正则表达式实例-Python爬虫(十一)_案例:使用正则表达式的爬虫
- 【Android 逆向】x86 汇编 ( 使用 IDA 解析 x86 架构的动态库文件 | 使用 IDA 打开动态库文件 | IDA 中查找指定的方法 )
- 图解VC++版PE文件解析器源码分析
- python 列表元素操作 push()和append()的区别
- CNVD-C-2019-48814 漏洞
- wxWidgets:wxSplitterWindow类用法
- [Android] 输入系统(三):加载按键映射
- js性能优化--学习笔记
- 第4章 Python 数字图像处理(DIP) - 频率域滤波2 - 复数、傅里叶级数、连续单变量函数的傅里叶变换、卷积
- 翻译的一篇关于学习编程语言的小文章
- Android--控件属性汇总
- java forkjoin 简书_ForkJoinPool in Java
- button 样式_Tkinter (3)---Button
- CQOI 2016 不同的最小割
- MVC Remote属性验证
- helloworld代码_十年架构师教你用最简单的代码实现Java基础编程—Hello World!
- 如果奇迹有颜色,那么一定是暴力or模拟比较6
- 编写安全代码:小心使用浮点数
热门文章
- 生物信息学 第一课 什么是生物信息学
- 2022.12.29
- 【Android 安全】Android 应用 APK 加固总结 ( 加固原理 | 应用加固完整的实现方案 | 源码资源 )
- 个人日记-纪录片《蓝海防线》观后感-20200921
- 【微信小程序】页面配置,网络数据请求
- 阿里云短信服务报错:SignatureDoesNotMatch : Specified signature is not matched with our calculation.
- 关于在caddy环境下,使用https协议UC无法下载的解决方法。
- AI智能语音机器人为什么会这么火爆
- Charles抓包出现unknown问题
- 凯西·牛顿(Casey Newton)即将离任