把同一段信号变成时频图、小波图和其他表示,通常属于单源数据的多视图建模;不同传感器或图像与文本的联合建模,则又有各自的数据对齐问题。不要只因为输入文件的格式不同,就忽略它们是否源自同一条原始记录。

先保护数据边界

如果一段原始信号切成多个窗口,再为每个窗口生成多个视图,这些衍生样本存在关联。把它们随机打散后跨训练、测试分配,可能让模型在测试时看到同源记录的近邻片段。

下面演示按原始记录分组划分,而不是按窗口随机划分。它只是构造的数据索引检查,不包含课程数据或模型训练。

import numpy as np
from sklearn.model_selection import GroupShuffleSplit

record_ids = np.repeat(np.arange(12), 4)
X_placeholder = np.zeros((len(record_ids), 1))
splitter = GroupShuffleSplit(n_splits=1, test_size=0.25, random_state=7)
train, test = next(splitter.split(X_placeholder, groups=record_ids))
assert set(record_ids[train]).isdisjoint(set(record_ids[test]))
assert len(train) + len(test) == len(record_ids)
print("source-record separation verified")

分组应当依据真实的数据来源设计:有时是原始文件,有时需要提升到设备、对象或采集批次。test_size 在 GroupShuffleSplit 官方接口中针对的是分组比例,并不保证样本数严格按相同比例分开。存在时间外推目标时,还应另外遵守时间顺序。

怎么证明融合有用

先分别训练并评估各单视图基线,再比较简单拼接与拟议的融合方法。比较时尽量固定数据划分、训练预算和评估协议;同时检查:缺少某一视图时会怎样,新增分支带来的收益是否只是参数量或训练资源的变化。

注意力图和特征可视化可以辅助分析,但不能单独证明某个视图“导致了”性能改善。真正的结论需要消融、独立评估和失败案例共同支持。

参考结果不是自己的实验结果

课程项目介绍里的准确率、F1 或检索指标,不直接写成自己完成项目的成绩。尚未复现时,记录“参考材料报告了某个结果;本地尚未验证”,而不是把模板中的结论改成人称后使用。

公开学习笔记也不附带付费项目代码包、数据下载码或可被误认为本人实绩的文书模板。

课程对应与整理边界

对应疏锦行《26多模态专题》的多视图项目介绍,以及 2025、2026 课程中重复出现的数据构建与融合目录。本篇以数据划分和实验验收为重点,不声称复现了参考项目,更不声称视频口头内容已经逐节核验。

原课程