我有一个每个20个步骤的股票价格序列表。这是一个2D形状阵列(total_seq,20)。我可以将其重新整形为(total_seq,20,1)以连接其他功能。
我还有每个时间步长10个字的新闻标题。所以我有来自Tokenizer.texts_to_sequences()
和sequence.pad_sequences()
的新闻代币的3D形状阵列(total_seq,20,10)。
我希望将新闻嵌入到股票价格并进行预测。
我的想法是新闻嵌入应该返回张量的形状 (total_seq,20,embed_size)这样我就可以将它连接起来了 形状的股票价格(total_seq,20,1)然后将其连接到LSTM图层。
要做到这一点,我应该将新闻嵌入形状(total_seq,20,10)转换为 (total_seq,20,10,embed_size)使用Embedding()函数。
但是在Keras中,Embedding()函数采用2D张量而不是3D张量。我如何解决这个问题?
假设Embedding()接受3D张量,然后在我得到4D张量作为输出之后,我将通过使用LSTM仅返回最后一个字的嵌入来移除第3维,因此输出形状(total_seq,20,10,embed_size)将被转换为(total_seq,20,embed_size)
但是我会再次遇到另一个问题,LSTM接受3D张量而不是4D所以
如何使用Embedding和LSTM不接受我的输入?
答案 0 :(得分: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)