-1

我有一个股票价格序列列表,每个序列有 20 个时间步长。这是一个二维形状数组(total_seq, 20)。我可以将其重塑为 (total_seq, 20, 1) 以连接到其他特征。

我还有每个时间步长 10 个单词的新闻标题。Tokenizer.texts_to_sequences()所以我有来自和的新闻标记的 3D 形状数组 (total_seq, 20, 10) sequence.pad_sequences()

我想将嵌入的新闻连接到股票价格并进行预测。

我的想法是新闻嵌入应该返回形状的张量 (total_seq, 20, embed_size),以便我可以将它与形状的股票价格 (total_seq, 20, 1) 连接,然后将其连接到 LSTM 层。

为此,我应该使用 Embedding() 函数将形状 (total_seq, 20, 10) 的新闻嵌入转换为 (total_seq, 20, 10, embed_size)。

但在 Keras 中,Embedding() 函数采用 2D 张量而不是 3D 张量。我该如何解决这个问题?

假设 Embedding() 接受 3D 张量,然后在我得到 4D 张量作为输出后,我将通过使用 LSTM 删除第 3 维,仅返回最后一个单词的嵌入,因此形状 (total_seq, 20, 10, embed_size) 的输出将被转换到 (total_seq, 20, embed_size)

但我会再次遇到另一个问题,LSTM 接受 3D 张量而不是 4D 所以

如何解决嵌入和 LSTM 不接受我的输入的问题?

4

1 回答 1

0

一种解决方法是将所有时间戳和新闻功能放在一起

timesstaps feature = tensor(total_seq, 20)
news_feature = tensor(total_seq, 20, 10)
news_feature_reshaped = reshape(news_feature, (total_seq, 200))
final_features = concat([timestamps_feature, news_fature_reshaped], axis=1)
于 2017-08-11T11:57:07.640 回答