展开 TFRecords 变得越来越慢
Unfurling TFRecords growing slower and slower
我正在尝试将 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)
它工作正常并且符合我的预期 - 提取图像和标签并将它们保存在适当的位置。它开始得很快,随着它的进行,它变得越来越慢。我对 tensorflow 没有经验,所以我假设我导致一些计算图变得越来越大,但我真的不知道。
有什么想法吗?
使用 tf.enable_eager_execution()
,然后使用 tf.executing_eagerly()
,并将所有 .eval()
替换为 .numpy()
解决了问题。
我正在尝试将 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)
它工作正常并且符合我的预期 - 提取图像和标签并将它们保存在适当的位置。它开始得很快,随着它的进行,它变得越来越慢。我对 tensorflow 没有经验,所以我假设我导致一些计算图变得越来越大,但我真的不知道。
有什么想法吗?
使用 tf.enable_eager_execution()
,然后使用 tf.executing_eagerly()
,并将所有 .eval()
替换为 .numpy()
解决了问题。