尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

01 SpikingJelly 基本概念:时间、状态与传播

发布时间:2026/9/29 7:14:27

资讯中心
01
ARTICLE

01 SpikingJelly 基本概念:时间、状态与传播

01 SpikingJelly 基本概念:时间、状态与传播
01 SpikingJelly 基本概念时间、状态与传播这一章回答三个问题脉冲如何表示时间维放在哪里为什么 SNN 必须重置状态1. 脉冲是 0/1 张量在spikingjelly.activation_based中脉冲使用只含0与1的张量表示0表示当前时刻不发放1表示发放。import torch v torch.rand([8]) v_threshold 0.5 spike (v v_threshold).to(v)SNN 不是用单个连续数值直接表达信息而是通过多个时间步内的脉冲次数和发放时序表达信息。2. 数据格式多出一个时间维格式意义[N, *]单个时刻的一批数据[T, N, *]多个时刻组成的序列其中T是时间步数N是 batch size*是通道、高宽或特征等额外维度。例如图像序列的形状为[T, N, C, H, W]使用x_seq[t]可取出时刻t的[N, C, H, W]数据。3. 步进模式模式标记输入单步模式s[N, *]多步模式m[T, N, *]from spikingjelly.activation_based import neuron net_s neuron.IFNode(step_modes) net_m neuron.IFNode(step_modem)单步模块处理序列时需要时间循环或使用functional.multi_step_forward。多步模块可直接接收完整序列。from spikingjelly.activation_based import functional y_seq functional.multi_step_forward(x_seq, net_s) # 或y_seq net_m(x_seq)官方实现为了兼容旧版模块默认采用单步模式s。这是一个常见错误来源若输入有[T, N, *]要么显式循环要么改为m。4. 有状态模块与重置SNN 神经元保留膜电位等内部状态因此当前输出不仅依赖当前输入也依赖上一个时刻的状态Y[t] f(X[t], H[t-1])不同 batch 通常彼此独立处理完一个 batch 后必须重置网络状态from spikingjelly.activation_based import functional for x, label in train_data_loader: optimizer.zero_grad() y net(x) loss criterion(y, label) loss.backward() optimizer.step() functional.reset_net(net)若忘记重置前一个 batch 的膜电位会污染下一个 batch训练时还可能因计算图跨 batch 连接而报错。最小状态检查net neuron.IFNode(step_modes) print(net.v) # 初始化为 0.0 net(torch.rand(4)) print(net.v.shape) # 首次输入后状态自动扩展为输入形状 net.reset() print(net.v) # 回到初始状态5. 逐步传播与逐层传播SNN 的计算图同时有时间和网络深度两个维度。模式计算顺序特点逐步传播每个时刻走完整个网络通常更节省内存逐层传播每一层处理完整时间序列并行度更高训练通常更快在相同初始状态下两种传播方式的数值结果相同。常规梯度替代训练通常优先逐层传播当T很大、显存有限时再考虑逐步传播。更精确地说逐步传播可看成沿时间维优先遍历计算图逐层传播则让每一层一次处理全部时间步。逐层传播中无状态层的有效 batch 规模接近T × N这正是它更易并行、也可能更耗显存的原因。提示本章可作为博客开篇重点强调SNN 的本质差异不是“输出 0/1”而是“带时间维且具有状态”。来源SpikingJelly 基本概念
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。