Как вы пишете несколько int64_feature в один ключ в файле tfrecord? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь конвертировать изображения в файлы tfrecord.

Следующие функции могут использоваться для преобразования значения в тип, совместимый с tf.Example.

def _bytes_feature(value):
  """Returns a bytes_list from a string / byte."""
  if isinstance(value, type(tf.constant(0))):
    value = value.numpy() # BytesList won't unpack a string from an EagerTensor.
  return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

def _float_feature(value):
  """Returns a float_list from a float / double."""
  return tf.train.Feature(float_list=tf.train.FloatList(value=[value]))

def _int64_feature(value):
  """Returns an int64_list from a bool / enum / int / uint."""
  return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))

Поэтому я создаю словарь с функциями, которые могут иметь отношение.

def image_example(image_string, label):
  image_shape = tf.image.decode_jpeg(image_string).shape

  feature = {
      'height': _int64_feature(image_shape[0]),
      'weight': _int64_feature(image_shape[1]),
      'depth' : _int64_feature(image_shape[2]),
      'label': _int64_feature(label),
      'image_raw': _bytes_feature(image_string)
  }

  return tf.train.Example(features=tf.train.Features(feature=feature))

Когда я хочу прочитать мои данные, это возможно. У меня есть эта структура данных здесь .

Но на самом деле, я хочу иметь ключевую «форму», в которой я могу найти размер моего изображения. Я хочу такого рода структуры. Я имею в виду, что мне удалось иметь значение в каждой клавише, но теперь я хочу, чтобы три значения в форме ключа имели высоту, ширину и глубину изображения.

Я не знаю, как это сделать .. Надеюсь, вы могли бы помочь мне, спасибо!

...