如何为CNN时间序列分类任务调整标签形状适配NHWC格式要求
标签形状调整方案
报错原因
你遇到的报错核心是标签形状设置错误,且完全不需要和训练数据X的形状保持一致:
你使用的NHWC格式中,第一个维度为样本数(即2642个trial,每个trial对应一个3秒窗口),每个trial仅对应1个受试者分类标签,无需保留channels、samples、kernels这三个和标签无关的维度。
你当前设置的y形状为(2642, 1, 384, 1),模型做输入维度校验时,会误将X的第二维(14个通道)和y的第二维(1)做匹配校验,发现维度不匹配才抛出 cardinality 错误。
正确调整方式
常规单标签分类场景(每个受试者对应唯一类别)
直接将标签重塑为一维数组即可,形状为 (2642,),每个位置的元素对应第i个trial所属受试者的分类标签。
- 若模型要求标签带最后一维的输出通道,可调整为
(2642, 1)形状 - 若使用one-hot编码的多分类标签,调整为
(2642, 类别总数)的形状即可
你完全不需要将标签调整为和X相同的
(2642, 14, 384, 1)形状,这类冗余设置不仅没有意义,还会额外增加训练开销甚至导致模型拟合逻辑出错。
标签构造逻辑修正
你之前将标签调整为(1 × samples × nr. trials)的操作是多余的,只需要按X的trial顺序,给每个3秒窗口匹配对应受试者的标签即可:
比如受试者A的标签为0,他的所有3秒窗口在标签数组中对应位置都填0;受试者B的标签为1,他的所有窗口对应位置填1,按顺序拼接完所有trial的标签即可。
内容的提问来源于stack exchange,提问作者visamagu
相关产品推荐
相关产品推荐

