Join us at TensorFlow World, Oct 28-31. Use code TF20 for 20% off select passes. Register now


View source on GitHub

One-to-many RNN sequence-to-sequence model (multi-task).


This is a multi-task sequence-to-sequence model with one encoder and multiple decoders. Reference to multi-task sequence-to-sequence learning can be found here:


  • encoder_inputs: A list of 1D int32 Tensors of shape [batch_size].
  • decoder_inputs_dict: A dictionary mapping decoder name (string) to the corresponding decoder_inputs; each decoder_inputs is a list of 1D Tensors of shape [batch_size]; num_decoders is defined as len(decoder_inputs_dict).
  • enc_cell: tf.compat.v1.nn.rnn_cell.RNNCell defining the encoder cell function and size.
  • dec_cells_dict: A dictionary mapping encoder name (string) to an instance of tf.nn.rnn_cell.RNNCell.
  • num_encoder_symbols: Integer; number of symbols on the encoder side.
  • num_decoder_symbols_dict: A dictionary mapping decoder name (string) to an integer specifying number of symbols for the corresponding decoder; len(num_decoder_symbols_dict) must be equal to num_decoders.
  • embedding_size: Integer, the length of the embedding vector for each symbol.
  • feed_previous: Boolean or scalar Boolean Tensor; if True, only the first of decoder_inputs will be used (the "GO" symbol), and all other decoder inputs will be taken from previous outputs (as in embedding_rnn_decoder). If False, decoder_inputs are used as given (the standard decoder case).
  • dtype: The dtype of the initial state for both the encoder and encoder rnn cells (default: tf.float32).
  • scope: VariableScope for the created subgraph; defaults to "one2many_rnn_seq2seq"


A tuple of the form (outputs_dict, state_dict), where: outputs_dict: A mapping from decoder name (string) to a list of the same length as decoder_inputs_dict[name]; each element in the list is a 2D Tensors with shape [batch_size x num_decoder_symbol_list[name]] containing the generated outputs. state_dict: A mapping from decoder name (string) to the final state of the corresponding decoder RNN; it is a 2D Tensor of shape [batch_size x cell.state_size].


  • TypeError: if enc_cell or any of the dec_cells are not instances of RNNCell.
  • ValueError: if len(dec_cells) != len(decoder_inputs_dict).