我正在使用Tensorflow v1.3中的Dataset API.这很棒.可以使用此处描述的函数映射数据集.我很想知道如何传递一个具有附加参数的函数,例如arg1:
def _parse_function(example_proto, arg1):
features = {"image": tf.FixedLenFeature((), tf.string, default_value=""),
"label": tf.FixedLenFeature((), tf.int32, default_value=0)}
parsed_features = tf.parse_single_example(example_proto, features)
return parsed_features["image"], parsed_features["label"]
Run Code Online (Sandbox Code Playgroud)
当然,
dataset = dataset.map(_parse_function)
Run Code Online (Sandbox Code Playgroud)
因为没有办法传递,所以行不通arg1.
python functional-programming tensorflow tensorflow-datasets
我将使用以下代码写入TFRecord文件:
writer = tf.python_io.TFRecordWriter(output_filename)
print("Creating TFRecords file at {}...".format(output_filename))
for i, row in enumerate(create_csv_iter(input_filename)):
x = example_fn(row)
writer.write(x.SerializeToString())
writer.close()
Run Code Online (Sandbox Code Playgroud)
问题在于该过程非常缓慢,因此即使在几天内也无法编写大型数据集!它只是序列化到磁盘的写入器。为什么这么慢?另一个问题是输出文件的大小比原始文件大10倍!
您知道什么方法可以加快TFRecordWriter的过程并压缩结果吗?