我需要在Tensorflow中运行编码器 - 解码器模型 . 我看到使用可用的API basic_rnn_seq2seq(encoder_input_data, decoder_input_data, lstm_cell)
等,可以创建编码器 - 解码器系统 .
-
如何在这样的模型中输入word2vec这样的嵌入?我知道我们可以嵌入查找但是根据API
encoder_input_data
是2D Tensor的大小batch_size x input_size的列表 . 如何使用此设置中的相应单词嵌入来表示每个单词?甚至embedding_rnn_seq2seq
内部提取嵌入 . 如何将预先计算的单词嵌入作为输入? -
我们如何通过API获得成本/困惑?
-
如果是测试实例,我们可能不知道相应的解码器输入 . 如何处理这种情况?
1 回答
第一个问题:可能不是最好的方法,但在培训开始之前,我在 Build 模型之后所做的是:
my_word2vec_matrix是一个形状词汇表x嵌入大小的矩阵,填充在我的预先计算的嵌入向量中 . 如果您认为嵌入非常好,请使用此(或类似的东西) . 否则,随着时间的推移,seq2seq-Model将提供自己经过训练的嵌入 .
第二个问题:在seq2seq.py中有一个对model_with_buckets()的调用,您可以在python / ops / seq2seq.py中找到它 . 从那里返回损失 .
第三个问题:在测试用例中,每个解码器输入是从时间步之前的解码器输出(即第一个解码器输入是一个特殊的GO符号,第二个解码器输入是第一个时间步的解码器输出,第三个解码器输入是解码器输出第二个时间步,等等)