Tensorflow TFRecord: невозможно проанализировать сериализованный пример - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь следовать этому руководству , чтобы сериализовать мои входные данные в формат TFRecord, но я продолжаю нажимать эту ошибку при попытке прочитать:

InvalidArgumentError:Ключ: мой_ключНе могу разобрать сериализованный пример.

Я не уверен, где я иду не так.Вот минимальное воспроизведение проблемы, которую я не могу решить.

Сериализация некоторых образцов данных:

with tf.python_io.TFRecordWriter('train.tfrecords') as writer:
  for idx in range(10):
        example = tf.train.Example(
            features=tf.train.Features(
                feature={
                    'label': tf.train.Feature(int64_list=tf.train.Int64List(value=[1,2,3])),
                    'test': tf.train.Feature(float_list=tf.train.FloatList(value=[0.1,0.2,0.3])) 
                }
            )
        )

        writer.write(example.SerializeToString())
  writer.close()

Функция синтаксического анализа и десериализация:

def parse(tfrecord):
  features = {
      'label': tf.FixedLenFeature([], tf.int64, default_value=0),
      'test': tf.FixedLenFeature([], tf.float32, default_value=0.0),
  }
  return tf.parse_single_example(tfrecord, features)

dataset = tf.data.TFRecordDataset('train.tfrecords').map(parse)
getnext = dataset.make_one_shot_iterator().get_next()

При попытке запустить это:

with tf.Session() as sess:
  v = sess.run(getnext)
  print (v)

Я вызываю вышеуказанное сообщение об ошибке.

Можно ли обойти эту ошибку и десериализовать мои данные?

1 Ответ

0 голосов
/ 27 ноября 2018

tf.FixedLenFeature () используется для чтения массивов данных фиксированного размера.И форма данных должна быть определена заранее.Обновление функции синтаксического анализа до

def parse(tfrecord):
   return tf.parse_single_example(tfrecord, features={
       'label': tf.FixedLenFeature([3], tf.int64, default_value=[0,0,0]),
       'test': tf.FixedLenFeature([3], tf.float32, default_value=[0.0, 0.0, 0.0]),
   })

Должно сделать работу.

...