Tensorflow 2.1.0 - Генерация TFRecord из CSV - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь сгенерировать TFRecords, используя приведенный здесь код Здесь

Проблема в том, что он очень устарел и большая часть кода была создана для Tensorflow 1.xx

Так есть ли в настоящее время способ генерировать TFRecords из CSV при использовании последней версии Tensorflow?

Я действительно в растерянности с точки зрения поиска помощи: (

Спасибо!

1 Ответ

0 голосов
/ 10 марта 2020

Сначала вам нужно получить доступ к данным внутри вашего CSV-файла, используя pandas или другую библиотеку.

Затем:

  • Создайте средство записи с помощью этой функции.

    tf.io.TFRecordWriter(tf_record_filename)
    
  • В зависимости от ваших данных добавьте необходимые функции в ваш код. Если вы используете данные изображения, используйте _bytes_feature и убедитесь, что ваше изображение преобразовано в байты с помощью np.ndarray.tostring ()

    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]))
    
  • Выполните итерацию по вашему набору данных и создайте Пример каждой итерации, предоставив ей словарь, содержащий ваши данные. Вот пример, в котором аргументы функций - это данные, которые вы читаете из фактической строки вашего CSV-файла.

    example = tf.train.Example(features=tf.train.Features(feature={
        'image_data': _bytes_feature(some_bytes_image),
        'float_data': _float_feature(some_float),
        'int64_data': _int_feature(some_integer)
    }))
    
  • Не забудьте записать их в свою запись с помощью эта строка кода внутри вашего l oop.

    writer.write((example.SerializeToString()))
    
  • Закройте писатель, когда он закончится

    writer.close()
    

Если вам нужно любую другую информацию об этом вы должны обратиться к официальной документации

...