fangwei123456 / Spike-Element-Wise-ResNet

Deep Residual Learning in Spiking Neural Networks
Mozilla Public License 2.0
140 stars 21 forks source link

关于导数图像的问题 #2

Closed ghost closed 3 years ago

ghost commented 3 years ago

方博士您好,我看您的论文的时候有一个疑问,在下面图中的block11处,应该就是stage2的第一个block吧,第一个block的输入,也就是S11吧,经过downsample之后再与输出相加,downsample会经过一个卷积层。为什么对S11求导会和S12一样呢,不是还有个卷积层吗?我不知道是哪里没理解好,还希望您提示一下。另外G函数如果换成OR是否会有利于梯度的传播? 1628337407(1)

ghost commented 3 years ago

是针对于SEW那个图,S11和S12的导数。除了卷积层,还有个SN层。

fangwei123456 commented 3 years ago

图中downsample层(虚线)和左右两个相邻的block的梯度都不一样

ghost commented 3 years ago

所以,您的意思是,虚线左边部分的上升是由downsample引起的?那,Spiking resnet中,12到11的下降是由什么引起的呢?

fangwei123456 commented 3 years ago

是的,跳变是downsample引发的,所以每个虚线处的梯度都会跳一下。但具体跳变的规律(增大还是减少)是不清楚的,因为这个层的梯度计算比普通的block复杂很多

ghost commented 3 years ago

那左图中虚线的下降呢,这个是由什么引起的呢?

ghost commented 3 years ago

左图虚线右侧的下降

fangwei123456 commented 3 years ago

指的是哪段曲线?

ghost commented 3 years ago

就是黑色椭圆内的曲线。下降了,是由什么引起的呢? d2a4d65653ac7b3f31450e07c092aa8

fangwei123456 commented 3 years ago

这段“曲线”实际上是block11和12的两个点连线,11是downsample,12是普通block

ghost commented 3 years ago

您的意思是,10处是普通的block,11处是带downsample的block,12是普通的block,是吗

fangwei123456 commented 3 years ago

是的

ghost commented 3 years ago

好的,我明白一些了,再去读一读论文,感谢!

ghost commented 3 years ago

哎嘿,突然想起来了,为啥SEW的12到11没有下降呢?

fangwei123456 commented 3 years ago

客气了。你可以用源代码自己新建个152,然后给每个block注册钩子,保存梯度信息。 “另外G函数如果换成OR是否会有利于梯度的传播?” OR本身是不可导的,需要自行定义一种梯度。在这个文章的上一个版本 https://arxiv.org/abs/2102.04159v1 用OR进行过测试。梯度上是没问题的

fangwei123456 commented 3 years ago

哎嘿,突然想起来了,为啥SEW的12到11没有下降呢?

image image 梯度由0和1的脉冲共同贡献,0的脉冲计算的梯度是小于1的,所以迅速衰减成0了。图中标注的尖峰就是衰减过程。剩下的都是1贡献的梯度,1在替代函数里面梯度为1,所以梯度是恒定的。

ghost commented 3 years ago

好滴,我再看看,谢谢

ghost commented 3 years ago

您好,您上面的解释我明白,是关于Spiking ResNet中的^的的过程。但我想问的是,为什么SEW ResNet中的block 11(DownSample block)梯度为什么没有变化呢?DownSample block应该是有一个Conv和一个SN层,那么为什么还和block12(普通的block)的梯度一样呢?实在没想明白

fangwei123456 commented 3 years ago

确实,但我查了一下原始数据,发现确实是这样。之后我再仔细看看。下面是记录的梯度数据: SEW ADD: [[0.02401011], [0.02401011], [0.02401011], [0.02049059], [0.02049059], [0.02049059], [0.02049059], [0.02049059], [0.02049059], [0.02049059], [0.02049059], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01546923], [0.01027236], [0.01027236], [0.01027236]]

Spiking ResNet: [[0.00329482], [0.00501164], [0.00516005], [0.00403574], [0.00602021], [0.00602021], [0.00602022], [0.00602024], [0.00602059], [0.0060277 ], [0.00625527], [0.00465071], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662345], [0.00662347], [0.00662379], [0.00663277], [0.00691234], [0.00467232], [0.00604101], [0.00631241]]

ghost commented 3 years ago

好滴 我学着写一下钩子瞧瞧 谢谢!

ghost commented 3 years ago

我尝试了一下,也是一样。SEW不存在像SpikingResNet那样的突然下降

fangwei123456 commented 3 years ago

嗯,那说明记录的数据是没问题的,它确实是这样