我正在按照本教程(https://theneuralperspective.com/2016/11/20/recurrent-neural-networks-rnn-part-3-encoder-decoder/)使用tensorflow实现RNN .

我已经为所描述的编码器和解码器准备了输入数据,但是我无法理解tensorflow上的dynamic_rnn函数是如何期望这个特定任务的输入所以我将描述我现在拥有的数据,希望有人有个主意 .

我有20个英语和法语句子 . 如上面的链接所描述的,每个句子根据每种语言中的最长句子填充,并且GO和EOS的标记被添加到预期的位置 .

由于并非链接上的所有代码都可用,我尝试为自己做一些缺失的代码 . 这就是我的编码器代码

with tf.variable_scope('encoder') as scope:

        # Encoder RNN cell
        self.encoder_lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_units, forget_bias=0.0, state_is_tuple=True)
        self.encoder_cell = tf.nn.rnn_cell.MultiRNNCell([self.encoder_lstm_cell] * num_layers, state_is_tuple=True)

        # Embed encoder RNN inputs
        with tf.device("/cpu:0"):
          embedding = tf.get_variable(
              "embedding", [self.vocab_size_en, hidden_units], dtype=data_type)
          self.embedded_encoder_inputs = tf.nn.embedding_lookup(embedding, self.encoder_inputs)

        # Outputs from encoder RNN
        self.encoder_outputs, self.encoder_state = tf.nn.dynamic_rnn(
            cell=self.encoder_cell,
            inputs=self.embedded_encoder_inputs,
            sequence_length=self.seq_lens_en, time_major=False, dtype=tf.float32)

我的嵌入形状[20,60,60],但我认为这是不正确的 . 如果我查看dynamic_rnn(https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn)的文档,那么输入的大小应该是[batch,max_time,...] . 如果我在这里查看这个例子(https://medium.com/@erikhallstrm/using-the-dynamicrnn-api-in-tensorflow-7237aba7f7ea#.4hrf7z1pd),那么输入应该是[batch,truncated_backprop_length,state_size] .

编码器的句子的最大长度是60.这是我对输入的最后2个数字究竟应该是什么感到困惑的地方 . max_time也应该是我的句子序列的最大长度,或者应该是另一个数量 . 最后一个数字也应该是句子序列的最大长度或没有填充的当前输入的长度吗?