2017-05-03 9 views
0

LSTM RNNへの入力としてデータシーケンスをどの程度正確にエンコードするのが混乱していますか?RNNの入力データフォーマット

バニラDNNには、すべてのラベルの入力があります。 RNNの「入力」とは何ですか?ラベルに関連付けられたシーケンシャルイベントを訓練するために、データのセット(またはシーケンス)である必要はありませんか?

逐次情報をエンコードする方法が混乱しています。これは、指定されたラベルに複数の入力が関連付けられているように思われるためです。

答えて

1

コードで例を作成しましょう。

文中の各単語がベクトルとしてエンコードされているとします(word2vecのベクトルが多分)。

各文を2つのクラス(0,1)のいずれかに分類したいとします。次のような単純な分類子を作成することがあります。

import numpy as np 
from keras.models import Sequential 
from keras.layers import LSTM, Dense 

# each example (of which we have a 100) is a sequence of 10 words and 
# each words is encoded as 16 element vectors 

X = np.random.rand(100, 10, 16) 
y = np.random.choice(2, 100) 

model = Sequential() 
model.add(LSTM(128, input_shape=(10, 16)) 
model.add(Dense(1, activation='sigmoid')) 
model.compile(loss='binary_crossentropy', optimizer='sgd') 

# fit model 
model.fit(X, y, epochs=3, batch=16) 
1

は、与えられたラベル

はい、あなたが正しいと関連する単一の入力よりも多くのがあるべきと思われます。実際には、入力は3Dマトリックスである必要があります。たとえば、n個のシーケンスがある場合、各シーケンスの長さはm、シーケンスデータにはd個のフィーチャがあります。RNNの入力はdimension(n、m、d)でなければなりません。例えば

0

あなたが(X1,..,Xt)時系列を持っていて、1の地平線に予測し、長さ3のシーケンスを使用するには、予測を訓練したい場合は、あなたの入力と出力は次のようになります。だから、

[[X1,X2,X3]] [X4] 
[[X2,X3,X4]] [X5] 
... 
[[Xt-3,Xt-2,Xt-1]] [Xt] 

、 t-3個のシーケンスがあり、このシーケンスの各々は長さ3を有し、1個の特徴を有する。次元は(t-3,3,1)でなければなりません。

関連する問題