为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]
?
这可能是因为张量流矢量(在这种情况下为B)通常是行向量,因此乘法是作为(uW + B)完成的,其中u和B都是行向量。 –
哦,不!我只是试着为ouput_projection设置代码,结果发现,无论你给出了什么output_size,最终的维度总是等于lstm-cell的num_proj参数的ouput_size。这仍然不能回答原来的疑问:(为什么偏见是num_decoder_symbol?) –