Closed XiangyuMao1108 closed 2 years ago
- Poisson Encoder [代码299行至303行]-"poisson_input = torch.mul(poisson_input, torch.sign(img))". 这行是表示poisson_input中,如果sign(img)是负数的话,可以有-1存在嘛?
是的,相当于按原始的符号,只对绝对值进行Poisson编码,参见https://github.com/chan8972/Enabling_Spikebased_Backpropagation/blob/46e18a7b0741d08f155435e2c62acac4bebe5b2f/src/cifar10_VGG9.py#L531-L534
- 乘上问题 Poisson Encoder [代码299行至303行], 如果abs(input) 的范围超过1, 会有什么后果?
进行normalize后,确实有部分数据绝对值会超过1,导致持续的发放
- 代码305行, 您有先call一个“net(poisson_input)", 然后再赋予output "output = net(poisson_input)". 请问一下先 call一遍net(poisson_input)的意义在于?
注意这一行
https://github.com/fangwei123456/spikingjelly/blob/b7d27d263116101f6786ff7070c4d371b1de9421/spikingjelly/clock_driven/examples/cifar10_r11_enabling_spikebased_backpropagation.py#L299
这是由于这篇文章的网络较为特殊,需要的是最后时刻的神经元电压。即前T-1
次call net输出的电压并对loss的计算没有什么用,因此不需要赋值到output,只需要forward的过程。实际上仅有最后一步的电压需要输出(赋值)。
谢谢您的答复,我想请问一下: 如果我不断forward poisson_input, 但我并没有像您一样在中间forward net(poisson_input). 然后等到for loop结束,我再直接assign output=net(poisson_input), 请问一下我这样是不是也是得到的最后一步的电压输出(如下)? for t in range(T - 1):
rand_num = torch.rand_like(img).cuda()
poisson_input = (torch.abs(img) > rand_num).float()
poisson_input = torch.mul(poisson_input, torch.sign(img))
output = net(poisson_input)
再次谢谢您的帮助
谢谢您的答复,我想请问一下: 如果我不断forward poisson_input, 但我并没有像您一样在中间forward net(poisson_input). 然后等到for loop结束,我再直接assign output=net(poisson_input), 请问一下我这样是不是也是得到的最后一步的电压输出(如下)? for t in range(T - 1): # Poisson encoding rand_num = torch.rand_like(img).cuda() poisson_input = (torch.abs(img) > rand_num).float() poisson_input = torch.mul(poisson_input, torch.sign(img))
output = net(poisson_input)
再次谢谢您的帮助
for t in range(T - 1):
# Poisson encoding
rand_num = torch.rand_like(img).cuda()
poisson_input = (torch.abs(img) > rand_num).float()
poisson_input = torch.mul(poisson_input, torch.sign(img))
#net(poisson_input)
output = net(poisson_input)
代码缩进有点不清楚,是这样吗?
如果是这样的话,网络在前T-1
步并没有接受输入,而是单纯的产生了T-1
次Poisson编码,并且这些编码后的数据马上在下一次循环被覆盖了。网络实际上只运行了一步,也就是只接受了一次输入。这样做与T=1
没有区别。
I see. 非常感谢
您好, 我能请教一些问题关于如下path: spikingjelly/spikingjelly/clock_driven/examples/cifar10_r11_enabling_spikebased_backpropagation.py
非常感谢您的帮助