需要有关Keras中LSTM实施的指导

时间:2017-11-13 21:20:04

标签: python machine-learning deep-learning keras lstm

我需要帮助使用Keras API实现序列分类器预测。

到目前为止,我已经设法以特定格式获取数据,我认为这些格式应该适合输入Keras,但是,我仍然无法理解我需要更改哪些参数的具体细节。

情况如下:

我所拥有的是多个目标,每个目标代表一个独立的事件。

每个目标包含多个不同数量的检测。例如,一个目标可能包含33个检测,而另一个目标可能包含54个。每个检测只是0-1之间的单个值。原始数据集的形状为(# samples, # detections) 我希望能够将这些检测的序列输入到LSTM中,以将整个目标分类为两个类,用于所有目标 到目前为止,我已经在检测序列上预先设置0,使得它们的长度相等。现在,数据集的形状为(# samples, 77(max detections across all targets))

然后,我创建任意窗口大小为7的时间步长。数据集的形状为(# samples, 77-window+1 = 71, 7)

如果情况不是很清楚,则序列已从1长

开始
[1, 2, 3, ... 77]

分为71个7个序列,看起来像:

[[1, 2, 3, 4, 5, 6, 7], 
[2, 3, 4, 5, 6, 7, 8], 
..., 
[71, 72, 73, 74, 75, 76, 77]]

既然我的数据格式为(# samples, # windows per sample, window),我应该做些什么调整才能获得每个样本1个分类输出的输出?

我曾尝试在线搜索关于TimeDistributed图层和LSTM图层的keras文档,在MachineLearningMastery上的所有博客文章和其他论坛帖子中,但我不太了解我想弄清楚如何在我的特定情况下使用API​​。 这就是我到目前为止所拥有的:

train_new.shape
output: (31179, 71, 7)

model = Sequential()
model.add(LSTM(100, input_shape=(71, 7), return_sequences=True))
model.add(TimeDistributed(Dense(1, activation='sigmoid')))
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=['accuracy'])

model.fit(train_new, label_train, validation_data=(test, label_test), epochs=3, batch_size=128)

Returns: 
ValueError: Error when checking target: expected time_distributed_3 to have 3 dimensions, but got array with shape (31179, 1)

非常感谢任何指导或指导。

谢谢你的时间!

0 个答案:

没有答案