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

时间:2017-01-12 14:27:34

标签: python tensorflow word2vec recurrent-neural-network

我试图提供每个世界都有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第二层嵌入单元格输出(当输入为向量时,作为普通计算简单感知器)

1 个答案:

答案 0 :(得分:1)

重点是: seq2seq在自己的单词嵌入内部。 Here is reddit question and answer

另外,如果smbd想要使用预训练的Word2Vec,有办法做到这一点, 见:

因此,这不仅可用于嵌入字词