【读论文】Spiking Deep Convolutional Neural Networks for Energy-Efficient Object Recognition

论文标题
IJCV 2015 ANN2SNN的开山之作

摘要

本文提出一个将深度CNN转换为SNN的新方法,使得CNN可以直接映射到神经形态硬件上实现低耗高性能。首先将CNN裁剪满足SNN的要求,训练CNN,最后将CNN权重直接应用于SNN。在Neovision2 Tower and CIFAR-10数据集上达到与源CNN 相当的准确率。这种基于脉冲硬件比基于FPGA硬件上实现CNN节能两个数量级。

背景

CNN适合在具有显著数据处理能力的传统CPU上实现,尽管它很适合处理视觉问题并具有高准确率,但CNN变得越来越复杂,需要更多算力,限制了CNN的应用。而基于脉冲的硬件具有低能耗的优势,于是本文考虑将CNN转换为SNN。

主要内容与做法

CNN直接转换成SNN造成难以接受的精度损失原因:

  1. CNN中负输出值在SNN中很难准确表示,负值产生原因:
    a. tanh()输出在-1.0到1.0
    b. 卷积层输出是权重 * 输入 + 偏置,当权重与偏执均为负会造成输出为负
    c. 预处理可能产生负值
    尽管可以通过抑制性神经元表示负值,但会使神经元数量增加一倍,会带来更大的硬件资源与功耗,并不可取。
  2. SNN不好表示bias
  3. 最大池化需要两层SNN,增加复杂性可能导致精度损失

为使其适合SNN,对CNN结构的调整:

  1. 使所有层的输出值为正:
    a.对预处理结果使用abs()
    b.使用ReLU作为激活函数
  2. 去掉所有卷积层和全连接层的bias
  3. 使用平均池化代替最大池化
    修改前
    图1. 源CNN结构
    修改后
    图2. 调整后的CNN结构
    请添加图片描述
    图3. 转换后的SNN结构
    请添加图片描述
    图4. SNN具体结构(本文使用IF神经元模型)
    注意:本文提出的方法并不局限于IF神经元模型,也可以使用其他的脉冲神经元模型,但需要其特性与CNN激活函数匹配。

总结

本文提出了一种将CNN转换为SNN的新方法,适用映射到基于脉冲的神经形态硬件,可以将任意大小的CNN映射到SNN并获得源CNN的性能优势。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值