title: Tensorflow: Can't understand ctc_beam_search_decoder() output sequence
body: <p>I am using Tensorflow's <code>tf.nn.ctc_beam_search_decoder()</code> to decode the output of a RNN doing some many-to-many mapping (i.e., multiple softmax outputs for each network cell).</p>
  
  <p>A simplified version of the network's output and the Beam search decoder is:</p>
  
  <pre><code>import numpy as np
  import tensorflow as tf
  
  batch_size = 4
  sequence_max_len = 5
  num_classes = 3
  
  y_pred = tf.placeholder(tf.float32, shape=(batch_size, sequence_max_len, num_classes))
  y_pred_transposed = tf.transpose(y_pred,
                                   perm=[1, 0, 2])  # TF expects dimensions [max_time, batch_size, num_classes]
  logits = tf.log(y_pred_transposed)
  sequence_lengths = tf.to_int32(tf.fill([batch_size], sequence_max_len))
  decoded, log_probabilities = tf.nn.ctc_beam_search_decoder(logits,
                                                             sequence_length=sequence_lengths,
                                                             beam_width=3,
                                                             merge_repeated=False, top_paths=1)
  
  decoded = decoded[0]
  decoded_paths = tf.sparse_tensor_to_dense(decoded)  # Shape: [batch_size, max_sequence_len]
  
  with tf.Session() as session:
      tf.global_variables_initializer().run()
  
      softmax_outputs = np.array([[[0.1, 0.1, 0.8], [0.8, 0.1, 0.1], [0.8, 0.1, 0.1], [0.8, 0.1, 0.1], [0.8, 0.1, 0.1]],
                                  [[0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7]],
                                  [[0.1, 0.7, 0.2], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7]],
                                  [[0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7], [0.1, 0.2, 0.7]]])
  
      decoded_paths = session.run(decoded_paths, feed_dict = {y_pred: softmax_outputs})
      print(decoded_paths)
  </code></pre>
  
  <p>The output in this case is:</p>
  
  <pre><code>[[0]
   [1]
   [1]
   [1]]
  </code></pre>
  
  <p>My understanding is that the output tensor should be of dimensions <code>[batch_size, max_sequence_len]</code>, with each row containing the indices of the relevant classes in the found path.</p>
  
  <p>In this case I would expect the output to be similar to:</p>
  
  <pre><code>[[2, 0, 0, 0, 0],
   [2, 2, 2, 2, 2],
   [1, 2, 2, 2, 2],
   [2, 2, 2, 2, 2]]
  </code></pre>
  
  <p>What am I not understanding about how <code>ctc_beam_search_decoder</code> works?</p>