如何使用Keras将1D输入提供给卷积神经网络(CNN)?

时间:2018-02-19 04:03:12

标签: python neural-network deep-learning keras conv-neural-network

我使用Keras库解决卷积神经网络(CNN)的回归问题。我已经经历了很多例子,但未能理解输入形状对1D卷积的概念

这是我的数据集,1个具有3个原始信号的目标变量。

The data set contains the stream of sensor generated value. It has 4 columns(3 sensor values & 1 target variable) and 1 millon rows(have 18000 segments)

为了可视化,此处显示了5段传感器信号,每个段都有其自己的含义

For visualization the 5 segments of sensor signal are shown here, each segment has its own meaning

我想将分段智能传感器值作为1D卷积层的输入,但问题是分段具有变量长度。

这是我的CNN架构

This is my CNN architecture

我厌倦了构建我的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 个答案:

答案 0 :(得分:0)

我的理解是input_shape应该为(time_steps,n_features),其中time_steps是段的长度(传感器信号序列),n_features是通道数(在您的情况下为3) ,因为您有3个不同的传感器)。

因此,您网络的输入应具有3个维度(批次,步骤,通道),其中批次是不同的细分。

我只使用固定的time_steps,如果您确实不能使用相同长度的线段,则可以尝试使用零填充。

Keras Documentation上,他们说您可以使用(无,3)作为3维矢量的变长序列的input_shape,但我从未用过这种方式。 / p>