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

在tensorflow中与许多输入数据文件进行良好的混合

如何解决《在tensorflow中与许多输入数据文件进行良好的混合》经验,为你挑选了1个好方法。

我正在使用tensorflow,希望能够训练一个深度CNN为游戏Go进行移动预测.我创建的数据集包含100,000个二进制数据文件,其中每个数据文件对应于记录的游戏,并包含大约200个训练样本(游戏中每个移动一个).我相信在使用SGD时获得良好的混合非常重要.我希望我的批次包含来自不同游戏的样本以及来自游戏不同阶段的样本.因此,例如,简单地从100个文件的开头读取一个样本并且洗牌不好b/c这100个样本将是每个游戏的第一步.

我已经阅读了从文件中提供数据的教程,但我不确定他们提供的库是否能满足我的需要.如果我自己硬编码,我基本上会初始化一堆文件指针到每个文件中的随机位置,然后从随机文件中提取样本,相应地递增文件指针.

所以,我的问题是tensorflow是否提供了这种功能,还是更容易编写我自己的代码来创建批处理?



1> dga..:

是的 - 你想要的是使用两件事的组合.

首先,随机在你输入你的数据文件,通过使用从他们阅读洗牌的顺序tf.train.string_input_producershuffle=True馈送到无论您使用的输入法(如果你可以把你的例子为tf.Example原格式,这是容易使用parse_example).要非常清楚,您将文件名列表放入其中string_input_producer,然后使用其他方法(如read_file等)读取它们.

其次,您需要以更精细的粒度进行混合.您可以通过将输入示例tf.train.shuffle_batch提供给具有大容量和大值的节点来实现此目的min_after_dequeue.一种特别好的方法是使用一个shuffle_batch_join接收来自多个文件的输入,这样你就可以进行大量的混音.将批量的容量设置得足够大,以便在不耗尽RAM的情况下充分混合.成千上万的例子通常效果很好.

请记住,批处理函数QueueRunner会向QUEUE_RUNNERS集合添加一个,因此您需要运行tf.train.start_queue_runners()

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