我喜欢为tensorflow编写一个新的数据读取器,它直接产生多个特征/标签张量,无需解码字符串中的数据。我查看了new_data_formats教程,但我不希望自己的读者类通过界面进行交互
Status ReadLocked(string* key, string* value, bool* produced, bool* at_end)
因为我直接制作张量。读者应该从filename queue获取文件名并生成多个张量(取决于文件大小),然后将其排入random batch queue。我的问题是:我的读者应该继承哪一堂课来制作张量?我认为仅仅因为线程安全而将其简单地实现为new op是不够的。我注意到resource_op_kernel class可能是一个合适的起点。
由于这里的张量流非常深,任何指针或其他提示从哪里开始以及可能存在的陷阱都是有用的(特别是关于资源管理,自定义操作和张量流内部线程安全的一些解释)。
答案 0 :(得分:0)
听起来tf.data.FixedLengthRecordDataset的实施将是一个很好的起点(C++ op implementation here)。那已经是一个文件名并直接返回Tensors,所以听起来你只想输出几个Tensors而不是一个。
假设这是使用tf.data而不是队列。无论如何都可能是一个好主意。