我正在使用Keras库解决卷积神经网络(CNN)的回归问题 . 我已经经历了很多例子,但未能理解输入形状对一维卷积的概念
这是我的数据集,1个目标变量,带有3个原始信号 .
为了可视化,这里显示了5段传感器信号,每个段都有其自己的含义
我想将分段方式的传感器值作为1D卷积层的输入,但问题是分段的长度是多变的 .
这是我的CNN架构
我厌倦了 Build 我的CNN模型但很困惑
model = Sequential()
model.add(Conv1D(5, 7, activation='relu',input_shape=input_shape))
model.add(MaxPooling1D(pool_length=4))
model.add(Conv1D(4, 7, activation='relu'))
model.add(Dense(100, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))
那么,如何在Keras中为CNN的Conv1D提供输入?或者我应该将固定大小的输入设置为Conv1D吗?但怎么样?
1 回答
我的理解是input_shape应该是 (time_steps, n_features) ,其中time_steps是段的长度(传感器信号的序列),n_features是通道的数量(在你的情况下为3,因为你有3个不同的传感器) .
因此,网络输入应具有3维 (batch, steps, channels) ,其中批处理是不同的段 .
我只使用固定的time_steps,如果你真的不能使用相同长度的段,你可能会尝试用零填充它们 .
在Keras Documentation上,他们说你可以使用 (None, 3) 作为三维向量的可变长度序列的input_shape,但我从未使用过这种方式 .