当前位置:  开发笔记 > 编程语言 > 正文

Tensorflow 1.10 TFRecordDataset - 恢复TFRecords

如何解决《Tensorflow1.10TFRecordDataset-恢复TFRecords》经验,为你挑选了1个好方法。

笔记:

    这个问题延伸到我之前的一个问题.在那个问题中,我询问存储一些虚拟数据的最佳方法,ExampleSequenceExample试图了解哪种数据更类似于提供的虚拟数据.我提供了明确的构造ExampleSequenceExample构造,以及在答案中,这是一种编程方式.

    因为这仍然是很多代码,我提供了一个Colab(由谷歌托管的交互式jupyter笔记本)文件,您可以自己尝试代码来协助.所有必要的代码都在那里,并慷慨地评论.

我正在尝试学习如何将我的数据转换为TF记录,因为声称的好处对于我的数据是值得的.然而,文档还有很多不足之处,而且我试图深入的教程/博客(我已经看过),实际上只是触及表面或重新存在的稀疏文档.

对于我在上一个问题中考虑的演示数据- 以及此处 - 我写了一个体面的课程:

具有n个通道的序列(在此示例中,它是基于整数的,具有固定长度并具有n个通道)

软标记的类概率(在这个例子中有n个类和基于浮点数)

一些元数据(在这个例子中是一个字符串和两个浮点数)

并且可以用以下6种形式之一编码数据:

    例如,序列通道/类以数字类型(int64在本例中)分开,并附加元数据

    例如,将序列通道/类分隔为字节串(via numpy.ndarray.tostring()),并附加元数据

    示例,将序列/类转储为字节字符串,并附加元数据

    SequenceExample,序列通道/类以数字类型分隔,元数据作为上下文分隔

    SequenceExample,序列通道作为字节串分开,元数据作为上下文

    SequenceExample,将序列和类转储为字节字符串,将元数据转储为上下文

这很好用.

在Colab中,我展示了如何在同一个文件中以及在单独的文件中写入虚拟数据.

我的问题是如何恢复这些数据?

我试图在链接文件中尝试4次尝试.

为什么TFReader与TFWriter在不同的子包下?



1> SumNeuron..:

通过更新功能,包括形状信息和记忆解决SequenceExample无名的 FeatureLists

context_features = {
    'Name' : tf.FixedLenFeature([], dtype=tf.string),
    'Val_1': tf.FixedLenFeature([], dtype=tf.float32),
    'Val_2': tf.FixedLenFeature([], dtype=tf.float32)
}

sequence_features = {
    'sequence': tf.FixedLenSequenceFeature((3,), dtype=tf.int64),
    'pclasses'  : tf.FixedLenSequenceFeature((3,), dtype=tf.float32),
}

def parse(record):
  parsed = tf.parse_single_sequence_example(
        record,
        context_features=context_features,
        sequence_features=sequence_features
  )
  return parsed


filenames = [os.path.join(os.getcwd(),f"dummy_sequences_{i}.tfrecords") for i in range(3)]
dataset = tf.data.TFRecordDataset(filenames).map(lambda r: parse(r))

iterator = tf.data.Iterator.from_structure(dataset.output_types,
                                           dataset.output_shapes)
next_element = iterator.get_next()

training_init_op = iterator.make_initializer(dataset)

for _ in range(2):
  # Initialize an iterator over the training dataset.
  sess.run(training_init_op)
  for _ in range(3):
    ne = sess.run(next_element)
    print(ne)

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有