繁体   English   中英

如何将 3d Tensor 传递给 tensorflow RNN embedding_rnn_seq2seq

[英]How to pass 3d Tensor to tensorflow RNN embedding_rnn_seq2seq

我正在尝试提供每个世界都有 word2vec 表示的句子。 我怎样才能在 tensorflow seq2seq 模型中做到这一点?

假设变量

enc_inp = [tf.placeholder(tf.int32, shape=(None,10), name="inp%i" % t)
       for t in range(seq_length)]

其中有维度 [num_of_observations 或 batch_size x word_vec_representation x sentense_lenght]。

当我将它传递给 embedding_rnn_seq2seq

decode_outputs, decode_state = seq2seq.embedding_rnn_seq2seq(
    enc_inp, dec_inp, stacked_lstm, 
    seq_length, seq_length, embedding_dim)

发生错误

ValueError: Linear is expecting 2D arguments: [[None, 10, 50], [None, 50]]

还有一个更复杂的问题我如何将一个向量作为输入,而不是一个标量到我的 RNN 的第一个单元格?

现在它看起来像(当我们关于任何序列时)

  1. 获取序列的第一个值(标量)
  2. 计算第一层 RNN 第一层嵌入单元输出
  3. 计算第一层 RNN 第二层嵌入单元输出
  4. 等等

但这是需要的:

  1. 获取序列的第一个值(向量)
  2. 计算第一层RNN 第一层单元输出(当输入为向量时作为普通计算简单感知器)
  3. 计算第一层RNN第二层嵌入单元输出(当输入为向量时作为普通计算简单感知器)

重点是:seq2seq在自己内部进行词嵌入。 这是reddit问答

此外,如果 smbd 想要使用预训练的 Word2Vec,有一些方法可以做到,请参阅:

所以这不仅可以用于词嵌入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM