首页 文章

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

提问于
浏览
1

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

这是我的数据集,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

我厌倦了 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 回答

  • 0

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

    因此,网络输入应具有3维 (batch, steps, channels) ,其中批处理是不同的段 .

    我只使用固定的time_steps,如果你真的不能使用相同长度的段,你可能会尝试用零填充它们 .

    Keras Documentation上,他们说你可以使用 (None, 3) 作为三维向量的可变长度序列的input_shape,但我从未使用过这种方式 .

相关问题