claude code workflow
**新建 Text Document.txt’根据我的资料写一个工作大纲**Read 1 file (ctrlo to expand)● 根据您的资料以下是整理后的正式工作大纲解耦型状态空间对比网络 (D-MAC) 工作大纲项目核心目标 无需先验标签实现跨区域零样本地壳介质特征提取与泛化。第一阶段数据矩阵构建目标 利用极致时空多样性阻断模型学习区域噪声捷径。数据来源 本地 luzhou 文件夹覆盖约一年连续波形核心策略 构建跨季节、跨台站对的样本矩阵BP×TB P \times TBP×TPPP不同台站对数量TTT每对抽取的跨季节时间窗数量第二阶段频域对抗增强与张量预处理目标 动态破坏振幅谱强迫模型从相位/走时中提取介质特征。输入张量维度[Batch, 2, L]双通道台站对 长序列频域扰动流程PyTorch DataLoader 内实现a. X_f torch.fft.rfft(X, dim-1) — 进入频域b. 提取 amp |X_f|phase angle(X_f)c. 生成平滑随机噪声包络E(ω)E(\omega)E(ω)d. 振幅抹除重构X_f_aug amp * E(ω) * exp(i·phase)e. torch.fft.irfft 逆变换回时域第三阶段D-MAC 架构设计目标 线性复杂度吞吐超长波形并在表征空间强制分流。┌────────────────────────┬───────────────────────────┬─────────────────────────────────┐│ 模块 │ 实现 │ 作用 │├────────────────────────┼───────────────────────────┼─────────────────────────────────┤│ 降采样编码器 │ Conv1d(2, D, K, strideS) │ 压缩超长序列降低显存压力 │├────────────────────────┼───────────────────────────┼─────────────────────────────────┤│ 双向 Mamba 核心 │ 多层 mamba_ssm 双向扫描 │ 线性复杂度获取双向时空感受野 │├────────────────────────┼───────────────────────────┼─────────────────────────────────┤│ 全局池化 │ Mean Pooling over time │ 提取隐状态H∈RDH \in \mathbb{R}^DH∈RD│├────────────────────────┼───────────────────────────┼─────────────────────────────────┤│ 介质投影头 Head_Medium │ MLP L2归一化 │ 输出介质特征向量ZmZ_mZm│├────────────────────────┼───────────────────────────┼─────────────────────────────────┤│ 源投影头 Head_Source │ MLP L2归一化 │ 输出源特征向量ZsZ_sZs│└────────────────────────┴───────────────────────────┴─────────────────────────────────┘第四阶段多目标对比损失函数目标 在数学层面对介质特征与源特征进行正交切割。Lmedium\mathcal{L}_{medium}LmediumInfoNCE正样本同一台站对不同季节的ZmZ_mZm跨噪声认同一地球负样本不同台站对的ZmZ_mZmLsource\mathcal{L}_{source}LsourceInfoNCE正样本同一时间窗不同台站对的ZsZ_sZs提取共享背景噪声场负样本同一台站对不同时间的ZsZ_sZsLorth\mathcal{L}_{orth}Lorth正交惩罚 最小化批次内∣Zm⋅Zs∣|Z_m \cdot Z_s|∣Zm⋅Zs∣均值联合优化目标Ltotalλ1Lmediumλ2Lsourceλ3Lorth\mathcal{L}{total} \lambda_1 \mathcal{L}{medium} \lambda_2 \mathcal{L}{source} \lambda_3 \mathcal{L}{orth}Ltotalλ1Lmediumλ2Lsourceλ3Lorth工程要求 强制开启 FP16 混合精度 Gradient Checkpointing第五阶段零样本物理验证目标 用严苛地震学指标证明ZmZ_mZm物理意义等价于格林函数。Test A — 季节不变性与解耦检验输入全新台站对一年期数据365个时间窗指标ZmZ_mZm全年余弦相似度方差极小0.95ZsZ_sZs呈现与海洋风暴气候吻合的季节周期漂移Test B — 跨区域零样本频散回归输入USArray 训练模型直接推断欧洲/日本未见区域指标冻结 D-MAC外接轻量 MLP少样本微调后精准拟合 Rayleigh 波群/相速度频散曲线Test C — 高分辨率空间介质聚类输入San Jacinto 断裂带节点台阵连续波形指标UMAP 降维 K-Means 聚类边界无需先验坐标即可映射出隐藏断层线/盆地边缘建议启动顺序[1] 数据加载器 rfft 振幅抹除 Dataset 类↓[2] 双向 Mamba Block 核心单元跑通测试↓[3] 双投影头 正交损失函数实现↓[4] 端到端训练luzhou 数据 显存优化↓[5] Test A/B/C 物理验证评估您想先从哪个模块开始写代码数据加载器的 rfft 增强部分还是双向 Mamba Block✻ Cogitated for 36s**❯ 你分析一下优劣势和可行性**● D-MAC 方案优劣势与可行性分析优势理论设计严密解耦双头 正交损失的组合在概念上非常干净强迫ZmZ_mZm和ZsZ_sZs在信息论层面分离避免了传统方法中介质/源信息混叠的根本缺陷。频域振幅抹除的增强策略有坚实物理依据背景噪声互相关的理论格林函数提取本就只依赖相位振幅是干扰项。架构选型合理Mamba SSM 对超长时序的线性复杂度是真实优势地震连续波形动辄数万点Transformer 的O(L2)O(L^2)O(L2)在此场景几乎不可用。双向扫描保留因果与非因果信息对走时提取有利。验证体系完整Test A/B/C 三级验证逻辑递进且都与地震学物理量直接挂钩不是黑盒指标具备说服力。劣势 / 风险点正交损失的训练稳定性存疑最大风险Lmedium\mathcal{L}{medium}Lmedium和Lsource\mathcal{L}{source}Lsource的正样本定义在逻辑上是反向拉扯的——两个 InfoNCE 在争抢同一个HHH里的信息。Lorth\mathcal{L}_{orth}Lorth很可能导致两个头都坍缩到零向量表示崩溃需要非常仔细的λ\lambdaλ调参和梯度监控。参考风险 VICReg、Barlow Twins 等正交解耦方法在简单视觉任务上已经很难调地震数据信噪比更低难度倍增。Mamba 的工程门槛高mamba_ssm 依赖 CUDA 特定版本在非 A100/H100 上编译经常失败。双向 Mamba 没有官方实现需要自己拼接前向/后向两路显存是单向的 ~1.8x。与 FP16 Gradient Checkpointing 同时使用时数值稳定性问题较多。数据量可能不足luzhou 单一区域约一年数据构建的台站对数量PPP上限有限。对比学习对 batch size 极度敏感通常需要≥\geq≥256 有效负样本单区域数据很可能撑不起足够大的对比批次。Test B 的零样本前提存在逻辑漏洞用 luzhou中国西南训练直接泛化到 USArray / 欧洲地壳结构差异极大没有任何 domain alignment 机制零样本泛化期望过高。文档里写的USArray 训练与第一阶段用 luzhou 数据互相矛盾需要明确训练集。物理验证指标难以量化Test C 的聚类边界完美映射断层线在实际操作中无客观评分标准容易变成主观可视化展示。可行性综合评估┌──────────────┬───────┬────────────────────────────────────────┐│ 维度 │ 评级 │ 说明 │├──────────────┼───────┼────────────────────────────────────────┤│ 理论创新性 │ ★★★★★ │ 在地震学领域属于前沿发顶刊有竞争力 │├──────────────┼───────┼────────────────────────────────────────┤│ 工程实现难度 │ ★★★☆☆ │ Mamba 工程坑多需要较强 CUDA 调试能力 │├──────────────┼───────┼────────────────────────────────────────┤│ 训练成功概率 │ ★★★☆☆ │ 正交损失稳定性是最大不确定性 │├──────────────┼───────┼────────────────────────────────────────┤│ 验证可信度 │ ★★★★☆ │ Test A/B 指标客观Test C 需加强量化 │├──────────────┼───────┼────────────────────────────────────────┤│ 数据充分性 │ ★★☆☆☆ │ 单区域数据对对比学习是短板 │└──────────────┴───────┴────────────────────────────────────────┘关键建议必须优先解决的问题先跑一个简化版消融实验——去掉 Mamba用普通 CNNGRU 验证双头正交损失能否正常收敛再替换骨干网络。不要一上来就全部堆叠。明确数据规模——统计 luzhou 数据实际能构建多少台站对估算最大 batch size如果P50P 50P50对比损失基本无效需要提前引入额外数据集如 IRIS 公开数据。Test B 降低预期——把零样本改成少样本微调few-shot fine-tuning更真实也更容易在论文中自圆其说。Lorth\mathcal{L}_{orth}Lorth改用更稳定的实现——考虑用 Barlow Twins 的冗余减少损失替代原始点积正交惩罚数值更稳定。总结 这是一个理论上很有价值、但工程风险集中在训练稳定性和数据规模两个环节的方案。建议采用由简入繁策略先验证核心解耦机制是否 work再堆 Mamba和完整验证体系。✻ Churned for 37s**❯ 你先写出全部相关的code 和test code之后我会在我的server上run先告诉我你准备怎么做step by step**● 实施计划 (Step by Step)整体文件结构dmac/├── data/│ ├── dataset.py # Dataset rfft 振幅抹除增强│ └── sampler.py # P×T 批次采样器├── models/│ ├── stem.py # 1D-CNN 降采样编码器│ ├── mamba_block.py # 双向 Mamba Block手动拼接│ ├── encoder.py # 完整 Bi-Mamba Encoder│ └── dmac.py # D-MAC 主模型含双投影头├── losses/│ └── contrastive.py # InfoNCE 正交损失 联合损失├── train.py # 训练主循环FP16 GradCheckpoint├── evaluate.py # Test A/B/C 评估入口├── configs/│ └── default.yaml # 超参数配置└── tests/├── test_dataset.py├── test_model.py├── test_losses.py└── test_evaluate.pyStep 1 — data/dataset.py data/sampler.py扫描 luzhou 目录解析台站对波形文件假设 SAC/miniSEED 格式实现 rfft 振幅抹除增强DataLoader 内 on-the-flyPairBatchSampler保证每个 batch 严格为P×TP \times TP×T结构Step 2 — models/stem.pyConv1d(2, D, kernel_sizeK, strideS) BatchNorm GELU输出压缩后的序列 [Batch, D, L’]Step 3 — models/mamba_block.py models/encoder.py封装 mamba_ssm.Mamba 为单层 Block含残差 LayerNorm双向前向序列和 torch.flip 后向序列各过一路 Mamba拼接后线性投影堆叠 N 层 Mean Pooling →H∈RDH \in \mathbb{R}^DH∈RDStep 4 — models/dmac.py组合 Stem Encoder 两个 MLP 投影头投影头输出强制 L2 归一化Step 5 — losses/contrastive.pyInfoNCELoss通用实现接受正样本 maskmedium_loss按台站对分组构建正/负样本 masksource_loss按时间窗分组构建正/负样本 maskorthogonality_loss批次内∣Zm⋅ZsT∣|Z_m \cdot Z_s^T|∣Zm⋅ZsT∣均值DMACLoss三者加权合并λ 可配置Step 6 — train.pytorch.cuda.amp.GradScaler autocastFP16torch.utils.checkpoint 包裹 Encoder显存优化TensorBoard 日志三个 loss 分项 ZmZ_mZm/ZsZ_sZs余弦相似度监控定期 checkpoint 保存Step 7 — evaluate.pyTest A / B / CTest A 载入新台站对一年数据 → 提取 365 个ZmZ_mZm/ZsZ_sZs→ 计算全年余弦相似度方差Test B 冻结 D-MAC → 提取目标区域ZmZ_mZm→ 外接轻量 MLP → 拟合频散曲线 → 输出 MAETest C 提取所有节点ZmZ_mZm→ UMAP 降维 → K-Means 聚类 → 可视化空间分布图Step 8 — tests/每个模块独立 unit test用随机张量验证 shape、梯度流通、loss 数值合理性不依赖真实数据CI 可直接跑通几个需要你确认的前提在我开始写之前需要你明确几点波形文件格式 luzhou 数据是 SAC、miniSEED、还是 numpy/h5 格式序列长度LLL 每个时间窗多长例如 30 分钟 1Hz 1800 点Mamba 是否已安装 server 上是否已有 mamba_ssm 包CUDA 版本是多少GPU 显存 多少 GB决定 batch size 和是否必须开 Gradient Checkpointing。台站对数量PPP 大概有多少对台站确认后我直接开始逐文件写完整代码。