Tensorflowでの埋め込みレイヤーの動作
誰かが私に以下に言及された層の働きと一緒に入力と出力を説明してもらえますか?
model.add(Embedding(total_words, 64, input_length=max_sequence_len-1))
total_words = 263
max_sequence_len = 11
次元数は64ですか?
そして、なぜこのレイヤーの出力は何ですか(なし、10、64)
各単語の64次元のベクトル、つまり(None、263、64)であってはなりません。
回答
Tensorflowの埋め込みレイヤーに関するすべての情報はここにあります。
最初の2つのパラメータがあるinput_dimension
とoutput_dimension
。
- 入力ディメンションは、基本的にモデルの語彙サイズを表します。これ
word_index
は、Tokenizer()
関数の関数を使用して見つけることができます。 - 出力寸法は、次の入力の寸法になります
Dense Layer
埋め込み層の出力は、の形式(batch_size, input_length, output_dim)
です。ただし、input_lengthパラメーターを指定したため、レイヤー入力はの形式になり(batch, input_length)
ます。そのため、出力は(None、10,64)の形式になります。
それがあなたの疑問を解決することを願っています☺️
Embedding
層最初の引数は(典型的には、かなりの次元の場合)入力の次元を表します。2番目の引数は、出力次元、つまり削減されたベクトルの次元を表します。3番目の引数はシーケンスの長さです。本質的に、埋め込みレイヤーは単に形状のルックアップテーブルを学習しているだけ(input dim, output dim)
です。このレイヤーの重みは、その形状を反映しています。ただし、レイヤーの出力はもちろん形になり(output dim, seq length)
ます。入力シーケンスの各要素に対して、1次元削減された埋め込みベクトル。あなたが期待していた形は、実際には埋め込み層の重みの形です。