Развертывание TFRecords растет все медленнее и медленнее - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь преобразовать набор данных TFRecord обратно в изображения, и для этого я использую следующий код:

def get_im_and_label_helper(parsed_features, im_format, label_format):
    im = tf.image.decode_png(parsed_features['image/encoded'])
    label = tf.image.decode_png(parsed_features['image/segmentation/class/encoded'])
    im, label = im.eval(), label.eval()
    return im, label

for tfr_file_path_name in tfr_files_list:
    tfr_file_path = os.path.join(sub_dataset_dir, tfr_file_path_name)
    record_iterator = tf.python_io.tf_record_iterator(tfr_file_path)

    for string_record in record_iterator:
        parsed_features = tf.parse_single_example(string_record, READ_FEATURES)

        filename = parsed_features['image/filename'].eval().decode("utf-8")
        im, label = get_im_and_label_helper(parsed_features, im_format, label_format)
        imageio.imwrite(os.path.join(target_dir, "images", filename + ".png"), im)
        imageio.imwrite(os.path.join(target_dir, "labels", filename + ".png"), label)

Он работает нормально и выполняет то, что я ожидаю - извлекает изображения и меткии сохраняет их в нужном месте.Это начинается быстро, и это становится медленнее и медленнее, поскольку это продолжается.Я неопытен с тензорным потоком, поэтому я предполагаю, что я заставляю некоторый граф вычислений увеличиваться и увеличиваться, но я действительно не знаю.

Есть идеи?

1 Ответ

0 голосов
/ 24 сентября 2019

Использование tf.enable_eager_execution() с последующим tf.executing_eagerly() и замена всех .eval() на .numpy() решило проблему.

...