fangwei123456 / spikingjelly

SpikingJelly is an open-source deep learning framework for Spiking Neural Network (SNN) based on PyTorch.
https://spikingjelly.readthedocs.io
Other
1.32k stars 237 forks source link

spikingjelly中的conv1d不用多步模式就会报错RuntimeError: Expected 2D (unbatched) or 3D (batched) input to conv1d #528

Open thebug-dev opened 5 months ago

thebug-dev commented 5 months ago

我想输入维度为(T,N,C)的时序数据 还有就是多步模式必须维度=4,导致没法直接用时序数据的T作为第一维度,输入数据不可以为(T,N,C),而增加一维(T,N,C,L)就会导致前面的conv和linear面临新的报错,没办法,只能把时序数据当成普通数据,额外新增一个维度T,是否spikingjelly并不是为时序数据而开发的,只是用来处理静态图像数据,例如mnist和Imagenet-1k

fangwei123456 commented 5 months ago

1D卷积在单步模式下,输入shape=[N, C, L] 多步模式下,处理的数据是一个序列,需要新增一个时间维度 SJ框架把时间维度放到第0维。如果放到其他维度,某些层的速度会下降很多,但也可以这样做。这种情况下,你需要重写一些自己用的层

fangwei123456 commented 5 months ago

现在增加了几个包装器,可以使T在最后一个维度了,并且在pytorch>=2.0版本能并行加速

https://github.com/fangwei123456/spikingjelly/commit/880f589d1e75d0279d8e16a3d4e5f15a9db63b18