2017-09-26 40 views
1

tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq的正式文档具有用于output_projection参数如下解释:
tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq输出投影

output_projection:无或一对(W,B)输出投影重量和偏见; W的形状为[output_size x num_decoder_symbols],B的形状为[num_decoder_symbols];如果提供并且feed_previous = True,则每个馈送的先前输出将首先乘以W并加上B.

我不明白为什么B参数的大小应该是[num_decoder_symbols]?由于输出首先乘以W,然后加上偏差,不应该是[output_size]

+0

这可能是因为张量流矢量(在这种情况下为B)通常是行向量,因此乘法是作为(uW + B)完成的,其中u和B都是行向量。 –

+0

哦,不!我只是试着为ouput_projection设置代码,结果发现,无论你给出了什么output_size,最终的维度总是等于lstm-cell的num_proj参数的ouput_size。这仍然不能回答原来的疑问:(为什么偏见是num_decoder_symbol?) –

回答

0

好吧!所以,我找到了这个问题的答案。
混淆的主要来源是W矩阵本身的尺寸 [output_size x num_decoder_symbols]

output_size这里指的不是你想要的output_size,反而是output_size(同隐藏向量的大小)的LSTM细胞。因此,矩阵乘法u x W将产生大小为num_decoder_symbols的矢量,其可以被认为是输出符号的逻辑。