parameters: (decoder_inputs, initial_state, cell, num_symbols,
                            embedding_size, output_projection=None,
                            feed_previous=False,
                            update_embedding_for_previous=True, scope=None)
docstring: RNN decoder with embedding and a pure-decoding option.
  
    Args:
      decoder_inputs: A list of 1D batch-sized int32 Tensors (decoder inputs).
      initial_state: 2D Tensor [batch_size x cell.state_size].
      cell: rnn_cell.RNNCell defining the cell function.
      num_symbols: Integer, how many symbols come into the embedding.
      embedding_size: Integer, the length of the embedding vector for each symbol.
      output_projection: None or a pair (W, B) of output projection weights and
        biases; W has shape [output_size x num_symbols] and B has
        shape [num_symbols]; if provided and feed_previous=True, each fed
        previous output will first be multiplied by W and added B.
      feed_previous: Boolean; if True, only the first of decoder_inputs will be
        used (the "GO" symbol), and all other decoder inputs will be generated by:
          next = embedding_lookup(embedding, argmax(previous_output)),
        In effect, this implements a greedy decoder. It can also be used
        during training to emulate http://arxiv.org/abs/1506.03099.
        If False, decoder_inputs are used as given (the standard decoder case).
      update_embedding_for_previous: Boolean; if False and feed_previous=True,
        only the embedding for the first symbol of decoder_inputs (the "GO"
        symbol) will be updated by back propagation. Embeddings for the symbols
        generated from the decoder itself remain unchanged. This parameter has
        no effect if feed_previous=False.
      scope: VariableScope for the created subgraph; defaults to
        "embedding_rnn_decoder".
  
    Returns:
      A tuple of the form (outputs, state), where:
        outputs: A list of the same length as decoder_inputs of 2D Tensors with
          shape [batch_size x output_size] containing the generated outputs.
        state: The state of each decoder cell in each time-step. This is a list
          with length len(decoder_inputs) -- one item for each time-step.
          It is a 2D Tensor of shape [batch_size x cell.state_size].
  
    Raises:
      ValueError: When output_projection has the wrong shape.
docstring_summary: RNN decoder with embedding and a pure-decoding option.
docstring_tokens: RNN decoder with embedding and a pure - decoding option .
function: def embedding_rnn_decoder(decoder_inputs, initial_state, cell, num_symbols,
                            embedding_size, output_projection=None,
                            feed_previous=False,
                            update_embedding_for_previous=True, scope=None):
    """RNN decoder with embedding and a pure-decoding option.
  
    Args:
      decoder_inputs: A list of 1D batch-sized int32 Tensors (decoder inputs).
      initial_state: 2D Tensor [batch_size x cell.state_size].
      cell: rnn_cell.RNNCell defining the cell function.
      num_symbols: Integer, how many symbols come into the embedding.
      embedding_size: Integer, the length of the embedding vector for each symbol.
      output_projection: None or a pair (W, B) of output projection weights and
        biases; W has shape [output_size x num_symbols] and B has
        shape [num_symbols]; if provided and feed_previous=True, each fed
        previous output will first be multiplied by W and added B.
      feed_previous: Boolean; if True, only the first of decoder_inputs will be
        used (the "GO" symbol), and all other decoder inputs will be generated by:
          next = embedding_lookup(embedding, argmax(previous_output)),
        In effect, this implements a greedy decoder. It can also be used
        during training to emulate http://arxiv.org/abs/1506.03099.
        If False, decoder_inputs are used as given (the standard decoder case).
      update_embedding_for_previous: Boolean; if False and feed_previous=True,
        only the embedding for the first symbol of decoder_inputs (the "GO"
        symbol) will be updated by back propagation. Embeddings for the symbols
        generated from the decoder itself remain unchanged. This parameter has
        no effect if feed_previous=False.
      scope: VariableScope for the created subgraph; defaults to
        "embedding_rnn_decoder".
  
    Returns:
      A tuple of the form (outputs, state), where:
        outputs: A list of the same length as decoder_inputs of 2D Tensors with
          shape [batch_size x output_size] containing the generated outputs.
        state: The state of each decoder cell in each time-step. This is a list
          with length len(decoder_inputs) -- one item for each time-step.
          It is a 2D Tensor of shape [batch_size x cell.state_size].
  
    Raises:
      ValueError: When output_projection has the wrong shape.
    """
    if output_projection is not None:
      proj_weights = ops.convert_to_tensor(output_projection[0],
                                           dtype=dtypes.float32)
      proj_weights.get_shape().assert_is_compatible_with([None, num_symbols])
      proj_biases = ops.convert_to_tensor(
          output_projection[1], dtype=dtypes.float32)
      proj_biases.get_shape().assert_is_compatible_with([num_symbols])
  
    with variable_scope.variable_scope(scope or "embedding_rnn_decoder"):
      embedding = variable_scope.get_variable("embedding",
              [num_symbols, embedding_size])
      loop_function = _extract_argmax_and_embed(
          embedding, output_projection,
          update_embedding_for_previous) if feed_previous else None
      emb_inp = (
          embedding_ops.embedding_lookup(embedding, i) for i in decoder_inputs)
      return rnn_decoder(emb_inp, initial_state, cell,
                         loop_function=loop_function)
function_tokens: def embedding_rnn_decoder ( decoder_inputs , initial_state , cell , num_symbols , embedding_size , output_projection = None , feed_previous = False , update_embedding_for_previous = True , scope = None ) : if output_projection is not None : proj_weights = ops . convert_to_tensor ( output_projection [ 0 ] , dtype = dtypes . float32 ) proj_weights . get_shape ( ) . assert_is_compatible_with ( [ None , num_symbols ] ) proj_biases = ops . convert_to_tensor ( output_projection [ 1 ] , dtype = dtypes . float32 ) proj_biases . get_shape ( ) . assert_is_compatible_with ( [ num_symbols ] ) with variable_scope . variable_scope ( scope or "embedding_rnn_decoder" ) : embedding = variable_scope . get_variable ( "embedding" , [ num_symbols , embedding_size ] ) loop_function = _extract_argmax_and_embed ( embedding , output_projection , update_embedding_for_previous ) if feed_previous else None emb_inp = ( embedding_ops . embedding_lookup ( embedding , i ) for i in decoder_inputs ) return rnn_decoder ( emb_inp , initial_state , cell , loop_function = loop_function )