Я пытаюсь использовать чередование в наборе данных, состоящем из множества осколков. Я получаю ошибку ошибки сегментации 11 во время обучения (когда выполняется sess.run). (Ошибка также появляется при использовании одной tfrecord).
dataset_train = tf.data.TFRecordDataset(shards_train)
dataset_train = dataset_train.interleave(
lambda x: tf.data.TFRecordDataset(x).map(decoder_train.deserialize_image_record), cycle_length=1)
OR
dataset_train = dataset_train.interleave(tf.data.TFRecordDataset, cycle_length=1)
dataset_train.map(decoder_train.deserialize_image_record)
Все работает правильно, когда я использую только карту без чередования для десериализации записей (сериализованные записи состоят из изображения, метки и некоторых метаданных). Я пробовал разные чередования cycle_lenghts и map_funcs, а также flat_map.
В обоих случаях (с чередованием и без него) у меня в конце есть такие объекты набора данных:
DatasetV1Функции адаптера: ((128, 128, 3), (), (), ()), типы:
(tf.float32, tf.int32, tf.string, tf.int32)
Мне удалось воспроизвести метод чередования в colab с набором данных целых чисел без каких-либо ошибок.
dataset = tf.data.TFRecordDataset.list_files(shard_list)
dataset = dataset.interleave(tf.data.TFRecordDataset, cycle_length=1)
dataset = dataset.map(
deserialise_num)
Я действительно не знаю, как отладить эту проблему или в чем может быть причина.