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

使用Conv1D构建信号数据CNN模型时如何确定正确的input_shape参数

Conv1D输入参数input_shape取值说明

Keras中Conv1D层的input_shape仅需要描述单条样本的维度信息,不需要包含训练集总样本数这个批量维度,标准格式为(序列长度, 单时间步特征数)。

结合你的数据集的取值方案

你已明确每条样本的序列长度为64,根据信号数据的通道数不同,对应两种常见取值:

  • 如果你使用的是单通道信号(每个时间步仅对应1个信号数值,整条样本为长度64的一维序列):input_shape取值为(64, 1)
  • 如果你使用的是多通道信号(每个时间步对应N个不同的特征,比如多传感器同步采集的信号):input_shape取值为(64, N),N替换为实际的特征数即可

你当前代码的问题修正

你当前代码里把len(x_train)也就是训练集总样本数49572写入了input_shape,这个是错误的,样本总数属于训练时的批量维度,不需要写入层的输入参数。

单通道信号场景下修正后的模型代码如下:

model = tf.keras.models.Sequential([
    tf.keras.layers.Conv1D(32, 3, activation='relu', input_shape=(64,1)),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Conv1D(64, 3, activation='relu'),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Conv1D(128, 3, activation='relu'),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Conv1D(128, 3, activation='relu'),
    tf.keras.layers.MaxPooling1D(3),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(512, activation='relu'),
    tf.keras.layers.Dense(29, activation='softmax')
 ])

注意数据预处理阶段需要给训练集增加最后一个特征维度,如果你当前x_train的形状为(49572, 64),可以通过以下代码转换为匹配输入要求的形状:

x_train = np.expand_dims(x_train, axis=-1)

内容的提问来源于stack exchange,提问作者Kgs. M. Rusdiansyah Muharrom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:06:04