【问题标题】:tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq output projectiontf.contrib.legacy_seq2seq.embedding_rnn_seq2seq 输出投影
【发布时间】:2017-09-26 11:13:31
【问题描述】:

tf.contrib.legacy_seq2seq.embedding_rnn_seq2seq 的官方文档对 output_projection 参数的解释如下:

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]吗?

【问题讨论】:

  • 这可能是因为 tensorflow 向量(在这种情况下为 B)通常是行向量,所以乘法是作为 (uW + B) 完成的,其中 u 和 B 都是行向量。
  • 哦不!我刚刚尝试为 ouput_projection 设置代码,结果证明,无论您给出什么 output_size,最终维度总是等于 lstm 单元的 num_proj 参数的 ouput_size。仍然没有回答最初的疑问:(为什么偏见是 num_decoder_symbol ?)

标签: python tensorflow lstm embedding rnn


【解决方案1】:

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

这里的output_size不是指你想要的output_size,而是LSTM单元的output_size(与隐藏向量的大小相同)。因此,矩阵乘法u x W 将产生一个大小为num_decoder_symbols 的向量,可以将其视为输出符号的对数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-18
    • 2023-02-19
    • 2018-08-06
    • 2013-12-26
    • 2013-05-31
    • 2016-08-15
    相关资源
    最近更新 更多