You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keras输入值错误排查:ECG张量数据基础分类模型问题

解决Keras序列模型输入错误的方案

首先咱们先揪出问题的核心:你的输入是3D张量(样本数,时间步,特征数),但直接堆叠Dense层后,模型输出的维度和你的独热编码标签完全不匹配,这就是报错的最可能原因。

常见错误点拆解

你的输入形状是(15000,1)(对应单特征的15000个时间步),当你直接添加Dense(16, activation='relu')时,Keras会对每个时间步的特征单独做全连接计算。所以第一层输出形状是(None, 15000, 16),第二层输出还是(None, 15000, 16)——如果此时直接接分类输出层,输出会变成(None, 15000, 5),而你的标签是(None,5),维度完全对不上,自然会抛出输入不兼容的错误。

修正后的模型实现

你需要在中间Dense层之后,把3D的序列数据压缩成2D(样本数,特征数),再连接最终的分类层。这里给你两种常用的实现方式:

方式1:全局平均池化(推荐,更不容易过拟合)

全局平均池化会对每个时间步的特征取平均值,把序列压缩成固定维度的特征向量:

from tensorflow import models, layers

def build_model():
    model = models.Sequential()
    # 输入形状匹配你的(时间步, 特征数)
    model.add(layers.Dense(16, activation='relu', input_shape=(X_train.shape[1], X_train.shape[2])))
    model.add(layers.Dense(16, activation='relu'))
    # 把(None, 15000, 16)压缩成(None, 16)
    model.add(layers.GlobalAveragePooling1D())
    # 输出层:5分类用softmax,输出形状(None,5)完美匹配标签
    model.add(layers.Dense(5, activation='softmax'))
    
    # 别忘了编译模型
    model.compile(optimizer='adam',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    return model

方式2:扁平化(简单直接,但参数过多易过拟合)

把整个序列直接展开成一维特征向量:

def build_model():
    model = models.Sequential()
    model.add(layers.Dense(16, activation='relu', input_shape=(X_train.shape[1], X_train.shape[2])))
    model.add(layers.Dense(16, activation='relu'))
    # 把(None,15000,16)转成(None,240000)
    model.add(layers.Flatten())
    model.add(layers.Dense(5, activation='softmax'))
    
    model.compile(optimizer='adam',
                  loss='categorical_crossentropy',
                  metrics=['accuracy'])
    return model

额外必查项

  • 确认你的X_train确实是3D张量(形状为(2464,15000,1)),如果不小心转成了2D(比如(2464,15000)),那input_shape应该改成(15000,),否则也会触发输入错误。
  • 确认编译模型时用的损失函数是categorical_crossentropy(因为你的标签是独热编码格式),如果是整数类型的标签才用sparse_categorical_crossentropy。

内容的提问来源于stack exchange,提问作者Florida Man

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:02:27