title: Decoding tfrecord with tfslim
body: <p>I use Python 2.7.13 and Tensorflow 1.3.0 on CPU.</p>
  
  <p>I want to use DensNet( https://github.com/pudae/tensorflow-densenet ) for regression problem. My data contains 60000 jpeg images with 37 float labels for each image. 
  I saved my data into tfrecords files by: </p>
  
  <pre><code>def Read_Labels(label_path):
  labels_csv = pd.read_csv(label_path)
  labels = np.array(labels_csv)
  return labels[:,1:]
  </code></pre>
  
  <p>`</p>
  
  <pre><code>def load_image(addr):
  # read an image and resize to (224, 224)
  img = cv2.imread(addr)
  img = cv2.resize(img, (224, 224), interpolation=cv2.INTER_CUBIC)
  img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
  img = img.astype(np.float32)
  return img
  
  def Shuffle_images_with_labels(shuffle_data, photo_filenames, labels):
  if shuffle_data:
      c = list(zip(photo_filenames, labels))
      shuffle(c)
      addrs, labels = zip(*c)
      return addrs, labels
  
  def image_to_tfexample_mine(image_data, image_format, height, width, label):
  return tf.train.Example(features=tf.train.Features(feature={
    'image/encoded': bytes_feature(image_data),    
    'image/format': bytes_feature(image_format),
    'image/class/label': _float_feature(label),
    'image/height': int64_feature(height),
    'image/width': int64_feature(width),
  }))
  
  def _convert_dataset(split_name, filenames, labels, dataset_dir):
  assert split_name in ['train', 'validation']
  
  num_per_shard = int(math.ceil(len(filenames) / float(_NUM_SHARDS)))
  
  with tf.Graph().as_default():
  
      for shard_id in range(_NUM_SHARDS):
        output_filename = _get_dataset_filename(dataset_path, split_name, shard_id)
  
        with tf.python_io.TFRecordWriter(output_filename) as tfrecord_writer:
            start_ndx = shard_id * num_per_shard
            end_ndx = min((shard_id+1) * num_per_shard, len(filenames))
            for i in range(start_ndx, end_ndx):
                sys.stdout.write('\r&gt;&gt; Converting image %d/%d shard %d' % (
                        i+1, len(filenames), shard_id))
                sys.stdout.flush()
  
                img = load_image(filenames[i])
                image_data = tf.compat.as_bytes(img.tostring())
  
                label = labels[i]
  
                example = image_to_tfexample_mine(image_data, image_format, height, width, label)
  
                # Serialize to string and write on the file
                tfrecord_writer.write(example.SerializeToString())
  
  sys.stdout.write('\n')
  sys.stdout.flush()
  
  def run(dataset_dir):
  
  labels = Read_Labels(dataset_dir + '/training_labels.csv')
  
  photo_filenames = _get_filenames_and_classes(dataset_dir + '/images_training')
  
  shuffle_data = True 
  
  photo_filenames, labels = Shuffle_images_with_labels(
          shuffle_data,photo_filenames, labels)
  
  training_filenames = photo_filenames[_NUM_VALIDATION:]
  training_labels = labels[_NUM_VALIDATION:]
  
  validation_filenames = photo_filenames[:_NUM_VALIDATION]
  validation_labels = labels[:_NUM_VALIDATION]
  
  _convert_dataset('train',
                   training_filenames, training_labels, dataset_path)
  _convert_dataset('validation',
                   validation_filenames, validation_labels, dataset_path)
  
  print('\nFinished converting the Flowers dataset!')
  </code></pre>
  
  <hr>
  
  <p>And I decode it by:</p>
  
  <pre><code>with tf.Session() as sess:
  
  feature = {
    'image/encoded': tf.FixedLenFeature((), tf.string, default_value=''),
    'image/format': tf.FixedLenFeature((), tf.string, default_value='jpeg'),
    'image/class/label': tf.FixedLenFeature(
        [37,], tf.float32, default_value=tf.zeros([37,], dtype=tf.float32)),
     }
  
  filename_queue = tf.train.string_input_producer([data_path], num_epochs=1)
  
  reader = tf.TFRecordReader()
  _, serialized_example = reader.read(filename_queue)
  
  features = tf.parse_single_example(serialized_example, features=feature)
  
  image = tf.decode_raw(features['image/encoded'], tf.float32)
  print(image.get_shape())
  
  label = tf.cast(features['image/class/label'], tf.float32)
  
  image = tf.reshape(image, [224, 224, 3])
  
  images, labels = tf.train.shuffle_batch([image, label], batch_size=10, capacity=30, num_threads=1, min_after_dequeue=10)
  
  init_op = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
  sess.run(init_op)
  
  coord = tf.train.Coordinator()
  threads = tf.train.start_queue_runners(coord=coord)
  
  for batch_index in range(6):
      img, lbl = sess.run([images, labels])
      img = img.astype(np.uint8)
      print(img.shape)
      for j in range(6):
          plt.subplot(2, 3, j+1)
          plt.imshow(img[j, ...])
      plt.show()
  
  coord.request_stop()
  
  coord.join(threads)
  </code></pre>
  
  <hr>
  
  <p>It's all fine up to this point. But when I use the bellow commands for decoding TFRecord files:</p>
  
  <pre><code> reader = tf.TFRecordReader
  
  keys_to_features = {
        'image/encoded': tf.FixedLenFeature((), tf.string, default_value=''),
        'image/format': tf.FixedLenFeature((), tf.string, default_value='raw'),
        'image/class/label': tf.FixedLenFeature(
        [37,], tf.float32, default_value=tf.zeros([37,], dtype=tf.float32)),
        }
  
  items_to_handlers = {
        'image': slim.tfexample_decoder.Image('image/encoded'),
        'label': slim.tfexample_decoder.Tensor('image/class/label'),
     }
  
  decoder = slim.tfexample_decoder.TFExampleDecoder(
        keys_to_features, items_to_handlers)
  </code></pre>
  
  <hr>
  
  <p>I get the following error.</p>
  
  <blockquote>
    <p>INFO:tensorflow:Error reported to Coordinator: , assertion failed: [Unable to decode bytes as JPEG, PNG, GIF, or BMP]
             [[Node: case/If_0/decode_image/cond_jpeg/cond_png/cond_gif/Assert_1/Assert = Assert[T=[DT_STRING], summarize=3, _device="/job:localhost/replica:0/task:0/cpu:0"](case/If_0/decode_image/cond_jpeg/cond_png/cond_gif/is_bmp, case/If_0/decode_image/cond_jpeg/cond_png/cond_gif/Assert_1/Assert/data_0)]]
    INFO:tensorflow:Caught OutOfRangeError. Stopping Training.
    INFO:sensorflow:Finished training! Saving model to disk.</p>
    
    <hr>
  </blockquote>
  
  <p>To use Densenet for my problem, I should fix this error first. 
  Could anybody please help me out of this problem. This code works perfectly for the datasets like flowers, MNIST and CIFAR10 available at https://github.com/pudae/tensorflow-densenet/tree/master/datasets but does not work for my data.</p>