message: Fixes for rnn_keras_estimator.ipynb
  * wrapping `range(batch_size)` into a `list` call so that it's convertible to `Tensor` in Python 3, where `range` alone returns just a generator
  * specifying a `dtype` argument to `LSTMBlockCell`'s constructor
  These should fix the breakages in
diff: "\n",
  " def __init__(self):\n",
  " super(RnnColorbot, self).__init__()\n",
  - " self.lower_cell = tf.contrib.rnn.LSTMBlockCell(256)\n",
  - " self.upper_cell = tf.contrib.rnn.LSTMBlockCell(128)\n",
  + " self.lower_cell = tf.contrib.rnn.LSTMBlockCell(256, dtype=tf.float32)\n",
  + " self.upper_cell = tf.contrib.rnn.LSTMBlockCell(128, dtype=tf.float32)\n",
  " self.relu_layer = tf.layers.Dense(3, activation=tf.nn.relu)\n",
  "\n",
  " def _rnn_layer(self, chars, cell, batch_size, training):\n",
  " seq = self._rnn_layer(seq, self.upper_cell, batch_size, training)\n",
  "\n",
  " # Grab just the end-of-sequence from each output.\n",
  - " indices = (length - 1, range(batch_size))\n",
  + " indices = (length - 1, list(range(batch_size)))\n",
  " indices = tf.stack(indices, 1)\n",
  " sequence_ends = tf.gather_nd(seq, indices)\n",
  " return self.relu_layer(sequence_ends)\n",
  