Closed ghost closed 3 years ago
是针对于SEW那个图,S11和S12的导数。除了卷积层,还有个SN层。
图中downsample层(虚线)和左右两个相邻的block的梯度都不一样
所以,您的意思是,虚线左边部分的上升是由downsample引起的?那,Spiking resnet中,12到11的下降是由什么引起的呢?
是的,跳变是downsample引发的,所以每个虚线处的梯度都会跳一下。但具体跳变的规律(增大还是减少)是不清楚的,因为这个层的梯度计算比普通的block复杂很多
那左图中虚线的下降呢,这个是由什么引起的呢?
左图虚线右侧的下降
指的是哪段曲线?
就是黑色椭圆内的曲线。下降了,是由什么引起的呢?
这段“曲线”实际上是block11和12的两个点连线,11是downsample,12是普通block
您的意思是,10处是普通的block,11处是带downsample的block,12是普通的block,是吗
是的
好的,我明白一些了,再去读一读论文,感谢!
哎嘿,突然想起来了,为啥SEW的12到11没有下降呢?
客气了。你可以用源代码自己新建个152,然后给每个block注册钩子,保存梯度信息。 “另外G函数如果换成OR是否会有利于梯度的传播?” OR本身是不可导的,需要自行定义一种梯度。在这个文章的上一个版本 https://arxiv.org/abs/2102.04159v1 用OR进行过测试。梯度上是没问题的
哎嘿,突然想起来了,为啥SEW的12到11没有下降呢?
梯度由0和1的脉冲共同贡献,0的脉冲计算的梯度是小于1的,所以迅速衰减成0了。图中标注的尖峰就是衰减过程。剩下的都是1贡献的梯度,1在替代函数里面梯度为1,所以梯度是恒定的。
好滴,我再看看,谢谢
您好,您上面的解释我明白,是关于Spiking ResNet中的^的的过程。但我想问的是,为什么SEW ResNet中的block 11(DownSample block)梯度为什么没有变化呢?DownSample block应该是有一个Conv和一个SN层,那么为什么还和block12(普通的block)的梯度一样呢?实在没想明白
确实,但我查了一下原始数据,发现确实是这样。之后我再仔细看看。下面是记录的梯度数据:
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]]
好滴 我学着写一下钩子瞧瞧 谢谢!
我尝试了一下,也是一样。SEW不存在像SpikingResNet那样的突然下降
嗯,那说明记录的数据是没问题的,它确实是这样
方博士您好,我看您的论文的时候有一个疑问,在下面图中的block11处,应该就是stage2的第一个block吧,第一个block的输入,也就是S11吧,经过downsample之后再与输出相加,downsample会经过一个卷积层。为什么对S11求导会和S12一样呢,不是还有个卷积层吗?我不知道是哪里没理解好,还希望您提示一下。另外G函数如果换成OR是否会有利于梯度的传播?![1628337407(1)](https://user-images.githubusercontent.com/81545152/128599705-17d1da19-7717-4704-9d8e-7a7c8c92df6e.png)