2017-08-11 6 views
0

J'ai une liste de séquences de prix de stock avec 20 timesteps chacun. C'est un tableau 2D de forme (total_seq, 20). Je peux le remodeler en (total_seq, 20, 1) pour la concaténation à d'autres caractéristiques. J'ai également un titre de nouvelles avec 10 mots pour chaque pas de temps. J'ai donc un tableau 3D de forme (total_seq, 20, 10) des jetons de nouvelles de Tokenizer.texts_to_sequences() et sequence.pad_sequences().Comment utiliser Embedding() avec un tenseur 3D dans Keras?

Je souhaite concaténer l'intégration des nouvelles au cours de l'action et faire des prédictions.

Mon idée est que l'intégration de nouvelles devrait revenir tenseur de forme (total_seq, 20, embed_size) pour que je puisse concaténer avec le prix stock de forme (total_seq, 20, 1), puis connectez-le à Couches LSTM. Pour cela, je devrais convertir l'incorporation de nouvelles de forme (total_seq, 20, 10) en (total_seq, 20, 10, embed_size) en utilisant la fonction Embedding().

Mais dans Keras, la fonction Embedding() prend un tenseur 2D au lieu du tenseur 3D. Comment puis-je me déplacer avec ce problème?

On suppose que Embedding() accepte tenseur 3D, puis après je reçois tenseur 4D en tant que sortie, je supprimerais la 3ème dimension en utilisant LSTM pour revenir le dernier mot de l'intégration que, si la sortie de forme (total_seq, 20, 10 , embed_size) sera converti en (total_seq, 20, embed_size)

Mais je rencontrerais un autre problème à nouveau, LSTM accepte tenseur 3D ne 4D donc

Comment puis-je contourner avec Embedding et LSTM ne pas accepter mes entrées?

Répondre

0

une solution de contournement est d'obtenir tous les horodateurs et fonction de nouvelles ainsi que

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) 
+0

Nouvelles sont des valeurs symboliques int ils doivent être transmis à la première incorporation. – off99555

+0

Et 20 est la longueur de la séquence, la longueur de la séquence finale ne doit pas être modifiée. – off99555

+0

ici la longueur de la séquence est préservée; remodeler et concaténer ne fera aucun changement, il répond également à l'objectif d'utiliser l'intégration. –