如何将 3d 张量传递给 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 的第一个单元格?
现在看起来(当我们处理任何序列时)
- 获取序列的第一个值(标量)
- 计算第一层RNN 第一层嵌入单元输出
- 计算第一层RNN第二层嵌入单元输出
- 等等
但这是需要的:
- 获取序列的第一个值(向量)
- 计算第一层 RNN 第一层单元输出(当输入为向量时,作为普通计算简单感知器)
- 计算第一层RNN第二层embedding cell的输出(输入为向量时,作为普通计算简单感知器)
重点是:
seq2seq 在自己内部进行词嵌入。
Here is reddit question and answer
此外,如果 smbd 想使用预训练的 Word2Vec,有很多方法可以做到,
见:
- Whosebug 2
所以这不仅可以用于词嵌入
我正在尝试输入每个世界都有 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 的第一个单元格?
现在看起来(当我们处理任何序列时)
- 获取序列的第一个值(标量)
- 计算第一层RNN 第一层嵌入单元输出
- 计算第一层RNN第二层嵌入单元输出
- 等等
但这是需要的:
- 获取序列的第一个值(向量)
- 计算第一层 RNN 第一层单元输出(当输入为向量时,作为普通计算简单感知器)
- 计算第一层RNN第二层embedding cell的输出(输入为向量时,作为普通计算简单感知器)
重点是: seq2seq 在自己内部进行词嵌入。 Here is reddit question and answer
此外,如果 smbd 想使用预训练的 Word2Vec,有很多方法可以做到, 见:
- Whosebug 2
所以这不仅可以用于词嵌入