tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq
の公式文書はoutput_projection引数の以下の説明がありません:
tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq出力投影
output_projection
:出力投影重みおよびバイアスのいずれ又は対(W、B)。 Wは形状[出力サイズ×num_decoder_symbols]を持ち、Bは形状[num_decoder_symbols]を持つ。 feed_previous = Trueの場合、以前に出力されたそれぞれの出力は最初にWで乗算され、Bが加算されます。
なぜB引数のサイズが[num_decoder_symbols]
になるのか分かりません。出力は最初にWで乗算され、その後にバイアスが追加されるため、[output_size]
ではありませんか?
これは、テンソルフローベクトル(この場合はB)が通常行ベクトルであるため、uとBが両方の行ベクトルである(uW + B)として乗算が行われるためです。 –
ああ!私はちょうどouput_projectionのコードを設定しようとしましたが、output_sizeを指定しても、最後の次元は常にlstm-cellのnum_proj引数のouput_sizeと等しいことが分かります。それはまだ元の疑問に答えることはできません:(なぜバイアスはnum_decoder_symbolですか?) –