mcpField
E
equivariant-architecture-designer

equivariant-architecture-designer

github.com/lyndonkl数据与数据库18782 次安装9 周前更新
代码仓库

关于 equivariant-architecture-designer

equivariant-architecture-designer 面向研究人员和工程师,指导围绕指定对称性设计神经网络。它涵盖架构、层、拓扑和实现库的选择,并生成架构规格。

主要功能

  1. 01按对称群匹配架构系列
  2. 02选择等变层与组件
  3. 03设计网络拓扑
  4. 04选择实现库
  5. 05生成逐层架构规格

适用场景

  1. 01设计具备旋转特性的图像模型
  2. 02规划用于 3D 点数据的模型
  3. 03设计不变分类输出
  4. 04为对称群选择实现库

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lyndonkl/claude --skill equivariant-architecture-designer

安装后在 Claude Code 中输入/equivariant-architecture-designer确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

resources/
methodology.md
templates.md
resources/evaluators/
rubric_architecture.json

详细介绍

等变架构设计器

工作流

复制此清单并跟踪进度:

Architecture Design Progress:
- [ ] Step 1: Review group specification and requirements
- [ ] Step 2: Select architecture family
- [ ] Step 3: Choose specific layers and components
- [ ] Step 4: Design network topology
- [ ] Step 5: Select implementation library
- [ ] Step 6: Create architecture specification

步骤 1:审查群规范和需求

收集经过验证的群规范。确认:涉及哪些群、需要不变性还是等变性、数据域(图像、点云、图等)、任务类型(分类、回归、生成)以及任何计算限制。如果未指定群,请先与用户一起确定。

步骤 2:选择架构系列

使用架构选择指南将对称群与架构系列匹配。主要系列:适用于网格上离散群的 G-CNN、适用于连续二维群的 Steerable CNN、适用于点数据上 E(3) 的 e3nn/NequIP、适用于图上置换的 GNN、适用于集合上置换的 DeepSets。权衡表达能力与效率。

步骤 3:选择具体层和组件

根据层模式选择层类型。对于每一层,请确定:卷积类型(常规、群、Steerable)、非线性(必须保持等变性——使用门控、基于范数或张量积)、归一化(批归一化会破坏等变性——使用层归一化或等变批归一化)、池化(对于不变输出:使用不变池化;对于等变输出:保留结构)。有关详细设计方法,请参阅方法详解。

步骤 4:设计网络拓扑

设计整体网络结构:编码器架构(如何提取特征)、各阶段的特征表示(李群使用 irreps)、池化/聚合策略,以及与任务需求相匹配的输出头。常见设计请参考拓扑模式。根据群的大小平衡深度与宽度。

步骤 5:选择实现库

根据库参考选择库。结合你的群、框架偏好(PyTorch/JAX)和性能需求进行选择。常见选择:e3nn(E(3)/O(3),PyTorch)、escnn(离散群,PyTorch)、pytorch_geometric(置换,PyTorch)。确保库支持你的特定群。

步骤 6:创建架构规范

使用输出模板记录设计。包括:逐层规范、表示类型、库依赖项、预期参数量,以及伪代码或实际代码框架。此规范将指导实现及后续的等变性验证。如需可直接使用的实现模板,请参阅代码模板。此输出的质量标准见质量评分标准。

架构选择指南

按对称群分类
群领域推荐架构库
Cₙ, Dₙ二维图像G-CNN、群等变 CNNescnn, e2cnn
SO(2), O(2)二维图像Steerable CNN、谐波网络escnn
SO(3)球面球面 CNNe3nn, s2cnn
SE(3), E(3)点云等变 GNN、张量场网络e3nn, NequIP
Sₙ集合DeepSetspytorch, jax
Sₙ图消息传递 GNNpytorch_geometric
E(3) × Sₙ分子E(3) 等变 GNNe3nn, SchNet
按任务类型分类
任务输出类型关键考量
分类不变标量使用不变池化
回归(标量)不变标量与分类相同
分割逐点等变保持输出等变性
力预测等变向量将输出表示为 l=1 的不可约表示
位姿估计等变变换输出旋转和平移
生成等变结构等变解码器

层模式

等变卷积模式

标准 G 卷积:

(f ⋆ ψ)(g) = ∫_G f(h) ψ(g⁻¹h) dh
  • 输入:群 G 上的特征图
  • 卷积核:G 上的函数
  • 输出:群 G 上的特征图

可转向卷积:

  • 使用可转向卷积核,其变换方式可预测
  • 由不可约表示参数化
  • 对连续群更高效

e3nn 张量积层:

# Combine features with different angular momenta
tp = o3.FullyConnectedTensorProduct(
    irreps_in1, irreps_in2, irreps_out
)
output = tp(input1, input2)
等变非线性

问题:标准非线性(ReLU 等)会破坏等变性。

解决方案:

类型工作原理适用场景
基于范数对
门控使用不变量对等变特征进行门控通用
张量积通过 Clebsch-Gordan 实现非线性e3nn、高质量
不变特征仅应用于 l=0 分量简单、快速
等变归一化

批归一化:会破坏等变性(每种方向的统计量不同) 解决方案:

  • 层归一化(按样本归一化)
  • 等变批归一化(按不可约表示通道归一化)
  • 实例归一化(通常可用)
不变性池化

从等变特征获取不变输出:

方法公式适用场景
均值池化对群取均值连续群
求和池化对元素求和集合、图
最大池化max
注意力池化加权求和重要性不同时

拓扑模式

编码器-解码器(分割、生成)
Input → [Equiv. Encoder] → Latent (equiv.) → [Equiv. Decoder] → Output
  • 编码器:逐步提取特征
  • 潜在层:等变表示
  • 解码器:利用对称性进行重建
编码器-池化(分类)
Input → [Equiv. Encoder] → Features (equiv.) → [Invariant Pool] → [MLP] → Class
  • 在末尾进行池化,获取不变特征
  • 最终 MLP 处理不变表示
消息传递(图/点云)
Nodes → [MP Layer 1] → [MP Layer 2] → ... → [Aggregation] → Output
  • 每层:聚合邻居并更新节点
  • 聚合:为实现不变性使用求和/均值,为实现等变性按节点处理

库参考

e3nn(PyTorch)

群:E(3)、O(3)、SO(3) 优势:完整支持不可约表示、张量积、球谐函数 适用于:分子建模、3D 点云、物理

from e3nn import o3
irreps = o3.Irreps("2x0e + 2x1o + 1x2e")  # 2 scalars, 2 vectors, 1 tensor
escnn(PyTorch)

群:离散群(Cₙ、Dₙ)、连续 2D 群(SO(2)、O(2)) 优势:图像处理、文档完善 适用于:具有旋转/反射对称性的 2D 图像

from escnn import gspaces, nn
gspace = gspaces.rot2dOnR2(N=4)  # C4 rotation group
pytorch_geometric(PyTorch)

群:置换群(Sₙ) 优势:图、批处理、众多 GNN 层 适用于:图分类/回归、节点预测

from torch_geometric.nn import GCNConv, global_mean_pool
其他库
库群框架说明
NequIPE(3)PyTorch分子动力学
MACEE(3)PyTorch分子势
jraphSₙJAX图网络
geomstats李群NumPy/PyTorch流形学习

输出模板

ARCHITECTURE SPECIFICATION
==========================

Target Symmetry: [Group name and notation]
Symmetry Type: [Invariant/Equivariant]
Task: [Classification/Regression/etc.]
Domain: [Images/Point clouds/Graphs/etc.]

Architecture Family: [e.g., E(3) Equivariant GNN]
Library: [e.g., e3nn]

Layer Specification:
1. Input Layer
   - Input type: [e.g., 3D coordinates + features]
   - Representation: [e.g., positions (l=1) + scalars (l=0)]

2. [Layer Name]
   - Type: [Convolution/Tensor Product/Message Passing]
   - Input irreps: [specification]
   - Output irreps: [specification]
   - Nonlinearity: [Gated/Norm/None]

3. [Continue for each layer...]

N. Output Layer
   - Aggregation: [Mean/Sum/Attention]
   - Output: [Invariant scalar / Equivariant vector / etc.]

Estimated Parameters: [count]
Key Dependencies: [library versions]

Code Skeleton:
[Provide implementation outline or pseudo-code]

NEXT STEPS:
- Implement the architecture using the specified library
- Verify equivariance through numerical testing after implementation

评论

支持 Markdown