【发布时间】:2020-12-23 01:42:24
【问题描述】:
我正在使用tf.data.Dataset 准备用于训练 tf.kears 模型的流数据集。使用kedro,有没有办法创建一个节点并返回创建的tf.data.Dataset,以便在下一个训练节点中使用它?
MemoryDataset 可能不起作用,因为tf.data.Dataset 不能被腌制(deepcopy 是不可能的),另请参阅this SO question。根据issue #91,MemoryDataset 中的深层复制是为了避免其他节点修改数据。有人可以详细说明为什么/如何发生这种并发修改吗?
从docs,似乎有一个copy_mode = "assign"。如果数据不可提取,是否可以使用此选项?
另一个解决方案(在 issue 91 中也提到过)是只使用一个函数在训练节点内生成流tf.data.Dataset,而不需要前面的数据集生成节点。但是,我不确定这种方法的缺点是什么(如果有的话)。如果有人能举一些例子就更好了。
另外,我想避免存储流数据集的完整输出,例如使用 tfrecords 或 tf.data.experimental.save,因为这些选项会占用大量磁盘存储空间。
有没有办法只传递创建的tf.data.Dataset 对象以将其用于训练节点?
【问题讨论】:
标签: tensorflow pickle tensorflow-datasets kedro tf.data.dataset