Вы можете использовать tf.python_io.tf_record_iterator
для проверки файла tfrecords.Это создает поколение.Чтобы получить доступ к одному примеру, вам нужно выполнить итерацию по нему:
for str_rec in tf.python_io.tf_record_iterator('file.tfrecords'):
example = tf.train.Example()
example.ParseFromString(str_rec)
print(dict(example.features.feature).keys())
Это выведет имена и типы объектов (в данном случае bytes_list)
dict_keys(['label', 'width', 'image_raw', 'height'])
Для вывода типов данных такженужно
print(dict(example.features.feature).values())
Но это также напечатает необработанную строку, и вы можете достичь предела длины экрана.
Когда вы знаете, как оно было закодировано, вы можете получить доступ к значениям с помощью
string = example.features.feature['image_raw'].bytes_list.value[0]
output = np.fromstring(string, dtype)
Подробнее об этом можно прочитать здесь https://www.tensorflow.org/tutorials/load_data/tf_records
РЕДАКТИРОВАТЬ: ЕСЛИ режим ожидания включенВы можете напрямую перебирать объект набора данных, используя либо numpy для декодирования
for str_rec in tf.data.TFRecordDataset('file.tfrecords'):
output = np.fromstring(str_rec.numpy(), dtype))
, либо собственный TF.tf.io.decode_raw(str_rec, tf.uint8))
Однако это даст вам сплющенный массив, который не будет содержать никакой информации о размерах размеров изображения, например