我使用的是从Google员工分发的从Inception v3派生的一些代码,但是现在它抱怨用于读取数据的队列运行程序已弃用(image_processing.py中的tf.train.string_input_producer,和类似)。显然,我应该将这种东西切换到tf.data。
不幸的是,tf.data的文档并不能减轻我担心内存太多以至于无法容纳内存的担忧,特别是考虑到我想以可重用的方式对其进行批处理等。我有信心tf.data东西可以做到;我只是不知道怎么做。谁能指出一个完整的代码示例,该示例使用tf.data处理无法全部容纳在内存中的数据批处理?理想情况下,它只是inception-v3代码的更新版本,但是我很乐意尝试使用任何东西。谢谢!
答案 0 :(得分:0)
嗯,我最终成功了。在我的问题的评论中引用的各种文档满足了我的需求,然后我逐渐弄清了传递给queuerunner的哪些参数与tf.data中的哪些参数相对应。
有一个陷阱需要我花一些时间来整理。在初始实现中,用于验证的示例数将四舍五入为批处理大小的倍数;大概验证集会被改组,并且一些示例不止一次使用。 (这对我来说不是一个好习惯,但是验证实例的数量通常比批处理的数量大得多,因此只有相对少数几个被重复计算。)
在tf.data中,启用改组和重用是另一回事,我没有在验证数据上进行。然后事情就破裂了,因为没有足够的唯一验证实例,我不得不对此进行追踪。
我希望这对下一个问题有帮助。不幸的是,我的代码与Inception v3相距甚远,我怀疑发布修改对我是否有帮助。谢谢!