# SciTeX-NN：面向信号处理的PyTorch神经网络构建模块库

> 一个专门为信号处理设计的PyTorch神经网络模块库，提供可微分的Hilbert变换、小波变换、频谱分析、相位-幅度耦合等信号处理层，以及通道增强和1D架构等深度学习组件。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-05-22T13:15:51.000Z
- 最近活动: 2026-05-22T13:25:17.307Z
- 热度: 163.8
- 关键词: PyTorch, 信号处理, Hilbert变换, 小波变换, 神经网络, EEG, 时频分析, 深度学习, SciTeX, 相位幅度耦合
- 页面链接: https://www.zingnex.cn/forum/thread/scitex-nn-pytorch
- Canonical: https://www.zingnex.cn/forum/thread/scitex-nn-pytorch
- Markdown 来源: ingested_event

---

# SciTeX-NN：面向信号处理的PyTorch神经网络构建模块库

## 项目背景与定位

在深度学习与信号处理交叉的领域，研究者常常面临一个尴尬的局面：信号处理算法（如Hilbert变换、小波分析、滤波器组）通常以NumPy或MATLAB实现，而深度学习框架（如PyTorch）则需要可微分的张量操作。将两者桥接往往需要繁琐的自定义层实现，这不仅增加了开发成本，也容易引入错误。

SciTeX-NN应运而生，作为SciTeX生态系统中的神经网络构建模块组件，它提供了一系列即插即用的PyTorch模块，专门面向信号处理任务。这些模块具备三个关键特性：可微分（支持反向传播）、支持批处理（适配现代深度学习的数据组织方式）、可组合（能够像搭积木一样构建复杂架构）。

## 核心功能模块

### 信号变换层

信号变换是SciTeX-NN的核心能力，涵盖从时域到频域、从线性到非线性的多种分析手段：

**Hilbert变换**：基于FFT实现的可微分解析信号提取，能够同时获得信号的相位和幅度包络。相比scipy.signal.hilbert，这个实现完全集成在PyTorch的计算图中，支持自动求导。

**小波变换**：实现Morlet连续小波变换（CWT），提供自适应的时频分辨率。与短时傅里叶变换相比，小波变换在分析非平稳信号时能够更好地平衡时间分辨率和频率分辨率。

**频谱图**：基于STFT的频谱幅度计算，支持多通道信号的并行处理。

**功率谱密度（PSD）**：与scipy.signal.welch对标的实现，用于分析信号的频域能量分布。

**滤波器组**：包括低通、高通、带通、带阻滤波器，采用FIR初始化，支持可学习的频带中心（DifferentiableBandPassFilter）。

**高斯滤波器**：时域平滑处理，核大小与sigma参数成比例（kernel = 6·sigma）。

### 耦合与特征提取

对于神经振荡分析，SciTeX-NN提供了两种重要的耦合度量：

**相位-幅度耦合（PAC）**：检测低频相位与高频幅度之间的统计关联，这是神经科学中研究跨频率交互的重要指标。

**调制指数（ModulationIndex）**：基于Tort等人2010年提出的KL散度方法，量化相位-幅度耦合的强度。

### Dropout变体

标准nn.Dropout以元素为单位进行随机丢弃，但某些场景需要更结构化的正则化策略：

**AxiswiseDropout**：沿指定轴进行整体丢弃，例如可以丢弃整个通道或整个时间窗口。

**DropoutChannels**：专门用于通道维度的整体丢弃，适用于自监督学习中的掩码预测任务。

### 数据增强模块

**ChannelGainChanger**：基于softmax权重的通道级增益调整，实现随机幅度调制。

**FreqGainChanger**：基于softmax权重的频带级增益调整，利用julius库实现可微分的频域操作。

**SwapChannels**：随机通道置换，增强模型对通道顺序的鲁棒性。

### 空间注意力与架构

**SpatialAttention**：通过1×1卷积实现通道注意力机制，为每个通道学习自适应的增益系数。

**ResNet1D**：一维ResNet骨干网络，适用于时间序列分类任务。

**MNet1000**：四阶段Conv2d分类器，专为EEG/MEG等神经信号设计。

**BNet/BNet_Res**：B形多模态包装器，支持融合来自不同来源的特征。

## 技术特点与设计哲学

### 一致的API设计

所有模块遵循PyTorch的nn.Module规范，输入张量形状统一为(batch, channels, samples)。信号处理层操作最后一个（时间）轴，通道感知增强操作在dim=1上进行。这种一致性使得模块可以无缝组合：

```python
import torch
import scitex_nn

x = torch.randn(8, 19, 1024)  # (batch, channels, samples)

# 信号处理流程
env = scitex_nn.Hilbert(seq_len=1024)(x)
phase, amplitude = env[..., 0], env[..., 1]

# 数据增强
drop = scitex_nn.AxiswiseDropout(dropout_prob=0.5, dim=1).train()
y = drop(x)  # 整体丢弃某些通道
```

### 可微分性保证

所有信号处理操作都实现了可微分版本，这意味着它们可以嵌入到端到端的深度学习流程中。例如，DifferentiableBandPassFilter允许模型在训练过程中学习最优的频带中心，而不是依赖人工预设。

### 丰富的示例与文档

项目提供了16个自包含的Jupyter Notebook示例，覆盖从基础用法到高级应用的完整学习路径：

1. AxiswiseDropout——沿轴丢弃切片
2. 通道增强——DropoutChannels、SwapChannels、ChannelGainChanger
3. 高斯滤波器——三种sigma值的时域平滑
4. 滤波器组——低通/高通/带通/带阻的频率响应
5. PSD——与scipy.signal.welch的对比
6. 频域增益调整——基于softmax的随机频带增益
7. Hilbert变换——chirp+AM信号的分析
8. 频谱图——5→60Hz chirp的STFT幅度
9. 小波变换——Morlet CWT的自适应时频分辨率
10. 调制指数——耦合与非耦合theta-gamma的对比
11. PAC——合成theta-gamma的端到端comodulogram
12. 可微分带通滤波器——可学习的频带中心
13. 空间注意力——1×1卷积通道注意力
14. ResNet1D——合成1D数据的微型训练循环
15. MNet1000——前向+反向+参数梯度范数
16. BNet——双模态前向+子模块参数分布

每个Notebook都是自包含的，单元输出已内嵌，在GitHub上可直接查看渲染结果。

## 应用场景与工作流程

SciTeX-NN的典型工作流程可以概括为：

原始信号 → 数据增强 → 滤波 → 频谱分析 → 耦合特征提取 → 神经网络架构

这种流程特别适合以下场景：

**神经信号处理**：EEG/MEG数据的时频分析、跨频率耦合检测、通道级正则化。

**语音与音频**：频谱特征提取、滤波预处理、基于注意力的特征加权。

**振动分析**：机械故障诊断中的频谱特征、包络分析、小波去噪。

**金融时间序列**：技术指标计算、趋势分解、基于频域的增强。

## 安装与使用

SciTeX-NN支持Python 3.9及以上版本，可通过pip安装：

```bash
pip install scitex-nn
```

也可以作为SciTeX生态系统的一部分安装：

```bash
pip install scitex[nn]
```

完整安装（包含所有可选依赖）：

```bash
uv pip install scitex-nn[all]
```

## SciTeX生态系统与开源理念

SciTeX-NN是更大SciTeX生态系统的一部分，该系统遵循"研究的四大自由"理念：

- **运行自由**：在任何地方运行你的研究——你的机器，你的规则。
- **学习自由**：研究每个步骤的工作原理——从原始数据到最终手稿。
- **分发自由**：分发你的工作流，而不仅仅是论文。
- **修改自由**：修改任何模块并与社区分享改进。

项目采用AGPL-3.0许可证，体现了研究团队对科研基础设施应享有与运行其上的软件同等自由的信念。

## 总结

SciTeX-NN填补了信号处理与深度学习之间的工具空白，为研究者提供了一套经过验证的、可组合的、文档完善的构建模块。无论是进行神经振荡分析、开发语音处理模型，还是探索时间序列预测，这个库都能显著降低技术门槛，让研究者更专注于科学问题本身而非工程实现细节。
