我使用Keras库解决卷积神经网络(CNN)的回归问题。我已经经历了很多例子,但未能理解输入形状对1D卷积的概念
这是我的数据集,1个具有3个原始信号的目标变量。
为了可视化,此处显示了5段传感器信号,每个段都有其自己的含义
我想将分段智能传感器值作为1D卷积层的输入,但问题是分段具有变量长度。
这是我的CNN架构
我厌倦了构建我的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吗?但是如何?
答案 0 :(得分:0)
我的理解是input_shape应该为(time_steps,n_features),其中time_steps是段的长度(传感器信号序列),n_features是通道数(在您的情况下为3) ,因为您有3个不同的传感器)。
因此,您网络的输入应具有3个维度(批次,步骤,通道),其中批次是不同的细分。
我只使用固定的time_steps,如果您确实不能使用相同长度的线段,则可以尝试使用零填充。
在Keras Documentation上,他们说您可以使用(无,3)作为3维矢量的变长序列的input_shape,但我从未用过这种方式。 / p>