spikingjelly icon indicating copy to clipboard operation
spikingjelly copied to clipboard

关于ANN2SNN的问题

Open lovingpolar opened this issue 4 years ago • 5 comments

您好!我最近在了解resnet的ann2snn的工作,我跑了spikingjelly中的示例,取得了不错的效果,但是我对其内部工作原理还不是很清楚。示例中用到的是最大激活归一化,但是对shortcut是如何处理的呢?十分期待您的解答!

lovingpolar avatar Apr 21 '22 12:04 lovingpolar

为了使ann的激活范围和snn输出电流范围完全相同,采用了Optimized Potential Initialization for Low-latency Spiking Neural Networks. AAAI2022和Optimal ANN-SNN Conversion for High-accuracy and Ultra-low latency Spiking Neural Networks. ICLR2022的建模方法,将IF发放01脉冲调整为输出PSP,这样shortcut就不用处理了。更多内容敬请期待新教程

DingJianhao avatar Apr 22 '22 02:04 DingJianhao

谢谢解答!这个了解了,还有一个问题,就是我想取出权重在硬件中跑,我将snn模型中的Scaler提取出来并对权重逐层归一化,发现在没有BN层的模型中可以取得不错的效果,但是在有BN层的模型按我的做法完全失效,请问我该如何对BN层进行处理呢?

lovingpolar avatar Apr 22 '22 06:04 lovingpolar

需要将bn的参数融合进conv。functional中提供了将conv+bn融合的函数。

fangwei123456 avatar Apr 22 '22 07:04 fangwei123456

如果我希望在一般网络(snn模型中不含scaler项)中验证我上面的方法(通过scaler对权重逐层归一化),需要搭一个将conv层和bn层融合的snn网络来验证是吗?

lovingpolar avatar Apr 22 '22 11:04 lovingpolar

是的,将conv和bn合并成一个conv层

fangwei123456 avatar May 01 '22 02:05 fangwei123456