ニューラルネットワークとKerasライブラリの新機能です。hereの埋め込みレイヤーを使用して入力データをマスクする方法が不思議ですRNNの場合、2Dテンソルから3Dテンソルに変換されます。Kerasのリカレントニューラルネットワーク(RNN)のエンベディングレイヤーの使用方法
(増加時に)次のようにデータを見て、私の時系列セイ:今すぐ
X_train = [
[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
...
] # with a length of 1000
、私はRNNの時間tの特徴ベクトルを予測するための最後の2つの特徴ベクトルを与えたいと思うだろうと言います+1。
現在、埋め込みレイヤーなしで、形状(nb_samples、timesteps、input_dim)を持つ必要な3Dテンソルを作成しています(この例ではhere)。次のように私の例に関連
、最終3Dテンソルはその後になります。
X_train_2 = [
[[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0]],
[[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0]],
[[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0]],
etc...
]
とY_train:
Y_train = [
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
etc...
]
次のように私のモデルが見えますが(上記の単純な例に適応):
num_of_vectors = 2
vect_dimension = 4
model = Sequential()
model.add(SimpleRNN(hidden_neurons, return_sequences=False, input_shape=(num_of_vectors, vect_dimension)))
model.add(Dense(vect_dimension))
model.add(Activation("linear"))
model.compile(loss="mean_squared_error", optimizer="rmsprop")
model.fit(X_train, Y_train, batch_size=50, nb_epoch=10, validation_split=0.15)
最後に、私の質問は、どのようにこれらの2Dテンソルから3Dテンソルは自分自身を再形成し、代わりに埋め込みレイヤーを使用しますか?おそらく答えは私は単純に埋め込み層のドキュメンテーションによって混乱している、かなり単純です
model.add(Embedding(?????))
:私は、モデルの後に=シーケンシャル()私のような何かを追加する必要がありますね。
多分私はすべての私の数字の後ろに ".0"を加えていたはずです。私は実際には、カテゴリ分析を実行しようとしていません。 – Kito